我试图启动具有特定超时的CUDA内核。我知道CUDA内核有一个设备超时,但是当我在共享服务器上工作时,我无法设置此超时,即使它是可能的。
我需要这个用于自动调整应用程序。我想设置一个超时来取消内核运行,这些内核运行不会比已经找到的最快的运行时更快。
有没有办法像这样启动带有超时的CUDA内核? 提前谢谢!
答案 0 :(得分:1)
感谢tera发布的链接,我自己实现了超时。如该线程所述,可以按如下方式完成:
const int timeout = 2000000;
int progressed = 0;
while (cudaEventQuery(stop) != cudaSuccess) {
usleep(20000);
progressed += 20000;
if (progressed >= timeout) {
cudaDeviceReset();
throw std::runtime_error("timeout");
}
}
// No timeout occured
在这种情况下,stop是内核执行后记录的事件。