C++ 在Windows 8中禁用CUDA的TDR

C++ 在Windows 8中禁用CUDA的TDR,c++,cuda,C++,Cuda,我最近在C++AMP中发现了这个功能,您可以在Windows8中暂时禁用TDR。有没有办法将此解决方案应用于CUDA 可以禁用Windows WDDM驱动程序超时检测和恢复机制,或者可以将超时延长到大于默认2秒。上记录了超时检测和恢复 (已编辑:上述链接已失效。它提供的信息可能现在可在上获得) Nsight Visual Studio Edition Nsight.Monitor具有禁用或增加超时的设置。否则,您可以使用MSDN文章中的注册表项。请确保在进行更改后重新启动计算机 我建议在完全禁用

我最近在C++AMP中发现了这个功能,您可以在Windows8中暂时禁用TDR。有没有办法将此解决方案应用于CUDA

可以禁用Windows WDDM驱动程序超时检测和恢复机制,或者可以将超时延长到大于默认2秒。上记录了超时检测和恢复

(已编辑:上述链接已失效。它提供的信息可能现在可在上获得)

Nsight Visual Studio Edition Nsight.Monitor具有禁用或增加超时的设置。否则,您可以使用MSDN文章中的注册表项。请确保在进行更改后重新启动计算机

我建议在完全禁用TDR之前增加TDR


特斯拉GPU可以使用没有超时看门狗的特斯拉计算群集驱动程序。

可以禁用Windows WDDM驱动程序超时检测和恢复机制,或者可以将超时延长到大于默认2秒。上记录了超时检测和恢复

(已编辑:上述链接已失效。它提供的信息可能现在可在上获得)

Nsight Visual Studio Edition Nsight.Monitor具有禁用或增加超时的设置。否则,您可以使用MSDN文章中的注册表项。请确保在进行更改后重新启动计算机

我建议在完全禁用TDR之前增加TDR


只有该示例中代码段的最后一行是C++特定的。您应该能够使用所有代码作为cuda程序中的前置程序来禁用图形设备上的TDR。但是在那篇文章中有一个非常重要的限定词:“在没有GPU争用的情况下,允许该设备上的命令运行超过通常的超时时间,而不会导致TDR。”因此,如果您有多个GPU,其中一个GPU不驱动任何显示,这将允许一种变通方法。但我不确定它对显示GPU有多大帮助。对于不处理显示的GPU,NVIDIA smi中的NVIDIA驱动程序选项允许设备处于TCC模式,这也将禁用该设备的TDR效应。理论上,我有一个Optimus,因此应该有可能处理它(在Intel上显示,在geforce上CUDA),但是我不能触发TCC“不能为GPU O900:01:00设置驱动器模型。改变驱动程序模型不支持这个设备。警告和移动。都做了。”有可能使用英伟达GPU单独用于CUDA。然而,在Windows下,OpthopOS驱动程序希望能够在任何时候启用NVIDIA GPU用于Windows渲染任务,因此英伟达GPU在这种情况下被认为是主要的GPU,并且假定它是可显示的,即使它目前不处理Windows显示任务。所以你不能将它切换到TCC模式,因为optimus会崩溃。所以我稍后会尝试它在linux下的工作方式。有趣的是,nvidia甚至不支持linux上的optimus。谢谢你的回答。只有那个例子中的代码片段的最后一行是C++特定的。您应该能够使用所有代码作为cuda程序中的前置程序来禁用图形设备上的TDR。但是在那篇文章中有一个非常重要的限定词:“在没有GPU争用的情况下,允许该设备上的命令运行超过通常的超时时间,而不会导致TDR。”因此,如果您有多个GPU,其中一个GPU不驱动任何显示,这将允许一种变通方法。但我不确定它对显示GPU有多大帮助。对于不处理显示的GPU,NVIDIA smi中的NVIDIA驱动程序选项允许设备处于TCC模式,这也将禁用该设备的TDR效应。理论上,我有一个Optimus,因此应该有可能处理它(在Intel上显示,在geforce上CUDA),但是我不能触发TCC“不能为GPU O900:01:00设置驱动器模型。改变驱动程序模型不支持这个设备。警告和移动。都做了。”有可能使用英伟达GPU单独用于CUDA。然而,在Windows下,OpthopOS驱动程序希望能够在任何时候启用NVIDIA GPU用于Windows渲染任务,因此英伟达GPU在这种情况下被认为是主要的GPU,并且假定它是可显示的,即使它目前不处理Windows显示任务。所以你不能将它切换到TCC模式,因为optimus会崩溃。所以我稍后会尝试它在linux下的工作方式。有趣的是,nvidia甚至不支持linux上的optimus。谢谢你的回答。