如何使用辅助GPU覆盖Windows上的CUDA内核执行时间限制?

如何使用辅助GPU覆盖Windows上的CUDA内核执行时间限制?,windows,cuda,timeout,gpgpu,multi-gpu,Windows,Cuda,Timeout,Gpgpu,Multi Gpu,从Nvidia的网站上,它解释了超时问题: 问:最长内核执行时间是多少?在窗户上,个人 GPU程序启动的最大运行时间约为5秒。 超过此时间限制通常会导致报告发射失败 通过CUDA驱动程序或CUDA运行时,但在某些情况下可以 挂起整个机器,需要硬复位。这是由于 Windows“看门狗”计时器,使程序使用主 图形适配器在运行时间超过最大值时超时 允许的时间 因此,建议CUDA在 未连接到显示器且没有Windows桌面 延伸到它上面。在这种情况下,系统必须至少包含一个 作为主要图形适配器的NVIDIA

从Nvidia的网站上,它解释了超时问题:

问:最长内核执行时间是多少?在窗户上,个人 GPU程序启动的最大运行时间约为5秒。 超过此时间限制通常会导致报告发射失败 通过CUDA驱动程序或CUDA运行时,但在某些情况下可以 挂起整个机器,需要硬复位。这是由于 Windows“看门狗”计时器,使程序使用主 图形适配器在运行时间超过最大值时超时 允许的时间

因此,建议CUDA在 未连接到显示器且没有Windows桌面 延伸到它上面。在这种情况下,系统必须至少包含一个 作为主要图形适配器的NVIDIA GPU。

资料来源:

看来,nvidia相信,或者至少强烈暗示,拥有多(nvidia)GPU,并且配置得当,可以防止这种情况发生

但是怎么做呢?到目前为止,我尝试了很多方法,但GK110 GPU上仍然存在恼人的超时,即:(1)插入辅助PCIE 16X插槽;(2) 未连接到任何监视器(3)被设置为用作驾驶员控制面板中的专用physX卡(如其他人所建议),但阻塞仍然存在。

如果您的GK110是特斯拉K20c GPU,则应将设备从wddm模式切换到TCC模式。这可以通过随驱动程序一起安装的nvidia-smi.exe工具完成。使用windows搜索功能查找此文件(nvidia smi.exe),然后使用命令行帮助(`nvidia smi--help)查找将GPU从WDDM模式切换到TCC模式所需的命令

完成此操作后,windows watchdog机制将不再关注GK110设备

另一方面,如果是GeForce GPU,则无法将其切换到TCC模式。您唯一的选择是修改注册表设置,这有点困难。您的里程数可能会有所不同,因为注册键的确切结构因操作系统而异


如果GPU处于WDDM模式,则受看门狗定时器控制

我在使用三维螺纹块(在GK110上)时也遇到过类似的问题。我将其更改为二维线程块,并多次调用内核。它工作得很好。你能在这里发布你的内核吗?这里有完全相同的问题。修改了注册表超时,但我仍然得到它。你有没有把这件事整理好?