超时启动CUDA-Kernel

时间:2016-09-15 14:34:18

标签: cuda timeout

我试图启动具有特定超时的CUDA内核。我知道CUDA内核有一个设备超时,但是当我在共享服务器上工作时,我无法设置此超时,即使它是可能的。

我需要这个用于自动调整应用程序。我想设置一个超时来取消内核运行,这些内核运行不会比已经找到的最快的运行时更快。

有没有办法像这样启动带有超时的CUDA内核? 提前谢谢!

1 个答案:

答案 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是内核执行后记录的事件。