我现在在用CUDA做一个程序,遇到一个问题,就是当核函数的执行时间或计算量超过一定阈值后程序就会崩溃,我上网查的是在单GPU机器上会对核函数的执行时间有一定限制,而我现在用的机器是双显卡的,quadro显卡负责显示,tesla显卡负责计算,但仍会出现这个问题,我已经把问题划分为非常小的粒度,尽量减少了单个核函数的计算时间,但现在还是会出现这个问题,核函数已经不能再细分了,请问还有其他的解决办法吗,求各位大神解疑
LZ您好:
如果您是WINDOWS平台,建议修改一下TDR的限值。
如果您安装了nsight,那么可以简单地启动nsight monitor——右下角nsight图标右键——options——general——Microsoft Display Driver——将WDDM TDR Delay改长(单位为秒),或者直接将WDDM TDR enabled改为False。
后一种改法可以直接关闭TDR,但是在您的代码死循环的时候,将无法自动检测超时而重启显卡驱动。
您可以酌情选择。
以及,由于您使用的是telsa和quadro等专业用途的卡,或许还有其他特别之处,请NV原厂支持/其他网友/版主加以补充。
祝您好运~
谢谢您的帮助,问题已经解决,按照您说的步骤,程序已经能够正确运行,再次表示感谢
您客气了,服务您是我的荣幸。
不客气的,恭喜您成功解决问题!
欢迎您常来论坛。
祝您好运~
那如果是Linux平台怎么改呢?
楼主您好,
(1)在Linux下您可以尝试不进入X-Window, 而在控制台以sudo启动您的CUDA项目(将自动载入driver)。
或者:
(2)在Linux将您的quadro保持不变,而将您的tesla显卡改成TCC驱动模式。
感谢您的周末来访。