cublas未能同步停止事件?

时间:2013-05-01 11:42:29

标签: cuda gpu-programming cublas

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

我安装了cuda 5.0,EVGA FTW nVidia GeForce GTX 670内存为2GB。截至今天,驱动程序版本是最新的314.22。

1 个答案:

答案 0 :(得分:4)

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

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