【问题标题】:Disabling TDR for CUDA in Windows 8在 Windows 8 中禁用 CUDA 的 TDR
【发布时间】: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。谢谢你的回答。

标签: c++ cuda


【解决方案1】:

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

已编辑:以上链接已失效。它提供的信息现在可能在https://docs.microsoft.com/en-us/windows-hardware/drivers/display/tdr-registry-keys 上可用)

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

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

Tesla GPU 可以使用没有超时看门狗的 Tesla Compute Cluster 驱动程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    相关资源
    最近更新 更多