【发布时间】:2019-08-08 19:17:19
【问题描述】:
我最近为 C++AMP 找到了这个 article,您可以在其中临时禁用 Windows 8 中的 TDR。有没有办法将此解决方案应用于 CUDA?
【问题讨论】:
-
只有该示例中代码 sn-p 的最后一行是 C++ AMP 特定的。您应该能够使用到目前为止的所有代码作为 cuda 程序中的前导,以禁用图形设备上的 TDR。但是在那篇文章中有一个非常重要的限定词:“允许该设备上的命令运行比通常的超时期限更长的时间,而不会导致 TDR,在没有争用该 GPU 的情况下。”因此,如果您有多个 GPU,其中一个不驱动任何显示器,这将允许一种解决方法。但我不确定它对显示 GPU 有多大帮助。
-
对于不处理显示的 GPU,nvidia-smi 中的 NVIDIA 驱动程序选项允许将设备置于 TCC 模式,这也会禁用该设备的 TDR 效果。
-
理论上我有一个 Optimus,所以应该有可能处理它(在 Intel 上显示,在 geforce 上显示 CUDA),但遗憾的是我无法触发 TCC“无法为 GPU 0000 设置驱动程序模型: 01:00.0.此设备不支持更改驱动程序型号。视为警告并继续。全部完成。”
-
可以单独为 CUDA under linux 使用 NVIDIA GPU。但是在 windows 下,optimus 驱动程序希望能够随时启用 NVIDIA GPU 来执行 windows 渲染任务,因此实际上 NVIDIA GPU 在这种情况下被视为主 GPU,并且被假定为具有显示能力,甚至如果它目前不处理 Windows 显示任务。所以你不能把它切换到 TCC 模式,因为擎天柱会坏。
-
所以我稍后会尝试它在 linux 下是如何工作的。这很有趣,因为 nvidia 甚至不支持 linux 上的 optimus。谢谢你的回答。