错误提示:the launch timed out

下面是一个核函数的代码,思路是通过每个线程计算一些数据,然后归约求和。因为需要处理的数据个数大于每个block的线程数,因此,需要一个while循环进行累加,最后在block内进行归约。其中,每个block内的线程数为128。

[attach]3415[/attach]

                 图1

但程序出错,在输出窗口输出:

[attach]3413[/attach]

                 图2

并且在屏幕右下角弹出错误,见图1。

在论坛里面找到一个相近的帖子:

http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=1741

说是因为核函数的运行时间过长。另外,在网上找到:

windows有一个机制,如果在显卡上运行时间过长,windows会自动结束这个程序。

请问,是这个原因吗?

楼主您好,
您的timeout问题的确是因为WDDM的TDR导致的。

请如下修改:
(1)启动nsight monitor
(2)右下角nsight图标右键——options——general——Microsoft Display Driver
(3)将WDDM TDR Delay改长(单位为秒),或者直接将WDDM TDR enabled改为False。

后一种改法可以直接关闭TDR,但是在您的代码死循环的时候,将无法自动检测超时而重启显卡驱动。

感谢来访。

LZ您好:

这是WIN下WDDM驱动程序的一个机制。

您可以参考如下帖子修改TDR限制,并重启电脑即可。
如果是Tesla卡,还可以调整为TCC驱动模式来解决此问题。

http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=7000

祝您好运~

非常感谢两位版主的指导,我试一下先!:lol