症状
在 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:如何提交支持工单
要编辑TdrDelay和TdrDdiDelay注册表项:
- 在 Windows 开始菜单中搜索“注册表编辑器” ,然后选择它启动。
- 通过在搜索路径中添加以下路径并按Enter 键来选择 GraphicsDrivers 项:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
- 您现在应该看到以下内容:
- 如果像上图所示, TdrDelay键尚不存在,请在右侧窗格中单击鼠标右键,然后选择“新建”>“DWORD(32 位)值” 。将其命名为TdrDelay ,并确保大小写正确且末尾没有空格。
- 双击新建的 TdrDelay 键以打开编辑窗口。
- 将“基数”设置更改为“十进制” 。然后,将“数值数据”设置为大于默认值2 的值,例如60。此值以秒为单位表示操作系统在认为 GPU 在计算过程中无响应之前将等待多长时间。
- 选择“确定” 。
- 再次执行步骤 4-7 以创建TdrDdiDelay键。默认值为 5 秒,我们建议将其更改为与您为TdrDelay键设置的十进制值相同的值。
- 关闭注册表编辑器并重新启动计算机,以使更改生效。
注意: Windows 更新或 GPU 驱动程序更新可能会将这些键重置为默认值。
延伸阅读
用户还可以采取许多其他措施来提高性能并避免崩溃。要了解更多信息,请参阅以下文章:
Q100188:提升Mari及特定项目的性能
要了解有关Mari如何使用 GPU 和其他硬件组件的更多信息,请参阅以下文章:
Q100078: Mari对硬件组件的使用情况
更多帮助
如果您仍然遇到问题,请创建支持工单并向我们提供本文中要求的信息:
Q100090:报告Mari问题时需要发送给支持团队的信息
如需了解如何提交支持工单,请参阅本文:
Q100064:如何提交支持工单
我们很遗憾听到
请告诉我们