CUDA 同步函数在 long 运行 内核期间失败

CUDA synchronize function fails during long running kernel

我正在使用 PyCuda 运行 一个预计至少需要两个小时才能完成的内核,但它在大约一个小时后失败并出现简单错误:

pycuda._driver.Error: cuCtxSynchronize failed: unknown error

我正在使用 Windows,我添加了注册表项 TdrDelay 并将其设置为 120000000 以确保 Windows 不会使我的内核超时。

我调整内核参数时没有出现这个错误,预计30分钟左右完成。为什么在内核 运行 很长时间后同步调用会失败?

我的显卡会不会过热并抢先终止内核?如果 运行s 的时间太长,是否可以使用 CUDA 设置终止内核? 运行NVidia Visual Profiler 中的内核是否有助于找出问题所在?

通过在 "TdrDelay" 旁边添加注册表项 "TdrLevel" 并将其值设置为 0,我能够让我的长 运行 内核无错误地完成。