如何以编程方式杀死CUDA内核

时间:2013-01-08 04:45:14

标签: windows cuda gpu gpgpu

我有一个CUDA内核,在我的旧特斯拉卡中使用超过20秒。 如果内核运行超过20秒,我想以编程方式杀死CUDA内核。我的意图是如果内核运行超过20秒,那么应该杀死该内核并运行另一个内核,其精度较低。

我的操作系统是Windows 7 64位。 CUDA版本是5.0。 GPU是特斯拉C1060

请在不退出应用程序的情况下帮助我杀死CUDA内核。

1 个答案:

答案 0 :(得分:2)

您可以通过在CC 2.0或更高版本的设备上使用assert(失败)来停止在内核中运行现有内核。我认为这不符合规定的目的,但至少不方便。

您还可以使用cudaDeviceReset()暂停从主机端操作设备。我没有完全考虑过这一点,但是应该可以在主机端监视某种类型的定时器,并且在超时周期结束时重置设备,如果没有结果的某些指示。这种类型的重置有点撬棍,因此您需要完全重新启动该设备上的操作(包括cudaMallocs等),以便重新启动您所需的操作。

请注意,cudaDeviceReset()本身不足以将GPU恢复到正常的功能行为。为了实现这一点,“拥有”过程也必须终止。见here