cublas 未能同步停止事件?

Sky*_*ker 1 cuda gpu cublas

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

我已经安装了 cuda 5.0,EVGA FTW nVidia GeForce GTX 670内存为 2GB。截至目前,驱动程序版本为最新版本 314.22。

Rob*_*lla 5

一般来说,在Windows上使用CUDA时,需要确保单个内核的执行时间不超过2秒左右。如果执行时间变长,您可能会遇到 Windows TDR 事件。这是一个 Windows 看门狗定时器,如果 GPU 驱动程序在一定时间内没有响应,它将重置 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 的保证。