GPU卡在2秒后重置

Met*_*est 1 c cuda gpu gpgpu

我正在使用NVIDIA geforce卡,如果我尝试在其上运行一些CUDA程序,则会在2秒后发出错误.我在这里读到你可以使用TDRlevel密钥HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers.但是,我在注册表中看不到任何此类密钥.是否需要自己添加?有其他人遇到过这个问题.如果是这样,你是如何解决的?谢谢.

Tom*_*Tom 6

我假设您使用的是Windows Vista或更高版本.

您链接到文章包含控制Microsoft WDDM超时检测和恢复机制的注册表项列表.正如talonmies评论的那样,它不是卡给出错误,它是Microsoft Windows WDDM TDR机制,它检测长时间运行的内核并将其杀死以恢复GPU用于显示目的.

如果你有一个运行任何时间长度的内核,那么GPU就会被计算工作占用而无法更新你的显示器,你自然可以想象大多数人会认为这很糟糕.一些开发人员选择增加延迟以允许开发更长时间运行的内核,并了解他们的系统可能会在几秒钟内无响应.如果您使用带有WDDM GPU的调试器(NVIDIA Tesla GPU支持TCC以避免所有WDDM问题),您可能还必须禁用TDR .

如果密钥不存在,您应该创建它们.我会建议:

  • TdrLevel 3(即启用)
  • TdrDelay 5(即5秒)
  • TdrLimitTime 10
  • TdrLimitCount 10(即10秒内最多10次超时)

替代方案是使用第二个GPU执行或调整您的问题集以确保内核时间少于2秒 - 真正的大问题应该在专用GPU上运行.当然,这假设它不是你内核中的错误!