超时启动 CUDA 内核

Launch CUDA-Kernel with a timeout

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

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

有没有什么方法可以像这样超时启动 CUDA 内核? 提前致谢!

感谢 发布的 link 我能够自己实现超时。如该线程中所述,可以按如下方式完成:

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