1

我正在使用matrixMulCUBLAS示例代码,并尝试将默认矩阵大小更改为更有趣的行=5k x cols=2.5k,然后Failed to synchronize on the stop event (error code unknown error)!当所有计算完成时,示例失败并出现第 377 行的错误,它是显然清理cublas。这是什么意思?以及如何解决?

我已经安装了EVGA FTW nVidia GeForce GTX 670带有 2GB 内存的 cuda 5.0。驱动程序版本是今天最新的 314.22。

4

1 回答 1

4

一般来说,在windows上使用CUDA时,需要保证单个内核的执行时间不超过2秒左右。如果执行时间变长,您可能会遇到 Windows TDR 事件。这是一个 Windows 看门狗计时器,如果它在一定时间内没有响应,它将重置 GPU 驱动程序。这样的重置会暂停内核的执行并生成虚假结果,通常还会在系统托盘中显示短暂的“黑色”显示和简短消息。如果您的内核执行触发了 Windows 看门狗计时器,您有几个选择:

  1. 如果您有可能在您的系统中使用多个 GPU(即这里通​​常不谈论笔记本电脑)并且您的 GPU 之一是 Quadro 或 Tesla 设备,则 Quadro 或 Tesla 设备通常可以置于 TCC 模式。这将意味着 GPU 不能再驱动物理显示器(如果它正在驱动物理显示器)并且它已从 WDDM 子系统中移除,因此不再受看门狗定时器的约束。您可以使用nvidia-smi.exeNVIDIA GPU 驱动程序附带的工具将给定 GPU 的设置从 WDDM 修改为 TCC。使用您的 Windows 文件搜索功能查找nvidia-smi.exe,然后用于nvidia-smi --help获取有关如何从 WDDM 切换到 TCC 模式的命令行帮助。
  2. 如果您无法使用上述方法(没有 2 个 GPU,没有 Quadro 或 Tesla GPU...),那么您可能需要研究更改看门狗定时器设置。不幸的是,这需要修改系统注册表,并且进程和特定密钥因操作系统而异。网络上有许多资源,例如来自 Microsoft 的此处,以及有关 Stack Overflow 的其他问题,例如此处,可能对此有所帮助。
  3. 第三种选择只是限制内核的执行时间。连续的操作可能会分解为多个内核调用。内核调用之间的“间隙”将允许显示驱动程序响应操作系统,并防止看门狗超时。

关于 TCC 支持的声明是一般性的。并非所有 Quadro GPU 都受支持。在特定 GPU 上支持(或不支持)TCC 的最终决定因素是nvidia-smi工具。此处的任何内容都不应被解释为在您的特定 GPU 上支持 TCC 的保证。

于 2013-07-23T13:41:26.080 回答