【发布时间】:2013-04-25 09:54:43
【问题描述】:
我正在使用matrixMulCUBLAS 示例代码并尝试将默认矩阵大小更改为更有趣的行=5k x cols=2.5k,然后示例失败并在第 377 行出现错误Failed to synchronize on the stop event (error code unknown error)!所有的计算都完成了,它显然正在清理 cublas。这是什么意思?以及如何解决?
我安装了带有 2GB 内存的 EVGA FTW nVidia GeForce GTX 670 的 cuda 5.0。驱动程序版本是今天最新的 314.22。
【问题讨论】:
-
使用此示例,您可以使用命令行开关 (
-sizemult=xx) 更改矩阵的大小,但您的 sizemult 限制为 10 或更小,因此最大矩阵大小为 (640 ,1280)。由于您谈论的是更大的尺寸,我假设您对代码进行了一些更改。您可以发布这些确切的更改吗?矩阵大小是通过组合 3 个不同的数字创建的,所以我不确定您为实现这些大小所做的更改。 -
在 Windows 下,您可能还会遇到 TDR 事件,我不确定。对于这些大小的矩阵,cublas sgemm 操作的总体执行时间相当长——在我运行的一项测试中大约需要 6-7 秒。您可以通过将
nIter循环减少到 1 或较小的数字来解决此问题。您会知道您是否遇到了 Windows TDR 事件,因为屏幕会短暂变黑。我尝试将矩阵大小计算中的 2 和 4 乘数修改为 16 和 32,并没有遇到任何问题(虽然主机端计算需要很长时间。) -
确实,我遇到了一个 Windows TDR 事件,但不知道如何预防/修复它......有什么想法吗?
-
如果你用谷歌搜索“windows tdr”,前几个点击都来自微软,如果你想更改超时时间,它们是我知道的最佳参考。正如我所提到的,您还可以尝试减少
nIter循环,这将减少 sgemm 调用的数量。它可能会有所帮助。