Q100688:通过增加 TDR 注册表项来防止 Mari 在 Windows 上冻结和崩溃

症状

在 Windows 系统上使用Mari时, Mari在执行复杂的 GPU 计算(例如 Bakery 执行的计算)时可能会冻结并最终崩溃。

原因

这种罕见现象通常是由 Windows 系统中设置的超时检测和恢复 (TDR)注册表项引起的。

为了防止 GPU 计算导致系统卡死,Windows 会取消任何达到指定“处理时间限制”的操作,然后重启 GPU 驱动程序。这会导致触发长时间操作的应用程序冻结或崩溃。

此处理时间限制由两个注册表项设置,它们告诉 Windows 在取消操作并重新启动 GPU 驱动程序之前应该等待多长时间:

  • TDRDelay以秒为单位指示 Windows 在认为 GPU 在计算过程中无响应之前等待的时间。
  • TdrDdiDelay以秒为单位指示 Windows 在认为软件操作离开 GPU 驱动程序的时间过长之前等待的时间。

由于Mari大量使用 GPU,一些计算可能会持续超过 2 秒,而 2 秒是默认的 TdrDelay 限制。

解决

如果Mari在 Windows 计算机上执行繁重的 GPU 计算时经常冻结或崩溃,您可能需要将注册表中的 TdrDelay 和 TdrDdiDelay 键编辑为更高的值,例如 60 秒。

  • 警告:错误地编辑注册表可能会导致严重的意外后果,例如系统无法启动,甚至可能需要您重新安装操作系统。本页提到的注册表项通常不会造成此类问题,但我们不建议Foundry在完全了解相关流程的情况下编辑注册表。Foundry 对因修改系统注册表而造成的任何系统损坏概不负责。

    有关 TDR 注册表项的更多信息,请参阅以下 Microsoft 文章: 超时检测和恢复 (TDR)

  • 如果以下步骤解决了您在使用Mari时遇到的任何问题,也请将这些问题报告给Foundry的支持团队,因为我们力求所有软件都能在默认 TDR 值下良好运行。有关如何提交支持工单的信息,请点击此处:
    Q100064:如何提交支持工单

要编辑TdrDelayTdrDdiDelay注册表项:

  1. 在 Windows 开始菜单中搜索“注册表编辑器” ,然后选择它启动。



  2. 通过在搜索路径中添加以下路径并按Enter 键来选择 GraphicsDrivers 项:
    Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers

  3. 您现在应该看到以下内容:



  4. 如果像上图所示, TdrDelay键尚不存在,请在右侧窗格中单击鼠标右键,然后选择“新建”>“DWORD(32 位)值” 。将其命名为TdrDelay ,并确保大小写正确且末尾没有空格。



  5. 双击新建的 TdrDelay 键以打开编辑窗口。

  6. “基数”设置更改为“十进制” 。然后,将“数值数据”设置为大于默认值2 的值,例如60。此值以秒为单位表示操作系统在认为 GPU 在计算过程中无响应之前将等待多长时间。



  7. 选择“确定”

  8. 再次执行步骤 4-7 以创建TdrDdiDelay键。默认值为 5 秒,我们建议将其更改为与您为TdrDelay键设置的十进制值相同的值。



  9. 关闭注册表编辑器并重新启动计算机,以使更改生效。

注意: Windows 更新或 GPU 驱动程序更新可能会将这些键重置为默认值。

延伸阅读

用户还可以采取许多其他措施来提高性能并避免崩溃。要了解更多信息,请参阅以下文章:
Q100188:提升Mari及特定项目的性能

要了解有关Mari如何使用 GPU 和其他硬件组件的更多信息,请参阅以下文章:
Q100078: Mari对硬件组件的使用情况

更多帮助

如果您仍然遇到问题,请创建支持工单并向我们提供本文中要求的信息:
Q100090:报告Mari问题时需要发送给支持团队的信息

如需了解如何提交支持工单,请参阅本文:
Q100064:如何提交支持工单

    我们很遗憾听到

    请告诉我们