让我们说我有许多CUDA内核,我可以要求GPU执行。我不想以任何方式修改内核代码(例如包括陷阱)。
有没有办法杀死这样一个正在运行的内核?
我打算自动生成内核(遗传编程)。这些内核可能会有很长时间才能完成的行为。如果我可以在运行时杀死内核,我可以维护一个计时器并在需要时终止。
答案 0 :(得分:5)
cudaDeviceReset()会杀死任何正在运行的内核。
它还会消除在设备上完成的任何分配,因此如果您打算再次使用它们,则需要重新分配任何数据区域。
请注意,cudaDeviceReset()
本身不足以将GPU恢复到正常的功能行为。为了实现这一点,“拥有”过程也必须终止。见here。