有可能杀死正在运行的CUDA内核吗?

有可能杀死正在运行的CUDA内核吗?,cuda,gpgpu,nvidia,Cuda,Gpgpu,Nvidia,假设我有很多CUDA内核,我可以要求GPU执行。无论如何,我都不想修改内核代码(包括eg的陷阱) 有没有办法杀死这样一个正在运行的内核 我打算自动生成内核(遗传编程)。这些内核可能有需要很长时间才能完成的行为。如果我可以在内核运行时杀死它,我可以维护一个计时器并在需要时杀死它。将杀死任何正在运行的内核 它还将清除在设备上进行的任何分配,因此,如果您打算再次使用任何数据区域,则需要重新分配它们 请注意,cudadeviceset()本身不足以将GPU恢复到正常的功能行为。为了实现这一点,“拥有”过

假设我有很多CUDA内核,我可以要求GPU执行。无论如何,我都不想修改内核代码(包括eg的陷阱)

有没有办法杀死这样一个正在运行的内核

我打算自动生成内核(遗传编程)。这些内核可能有需要很长时间才能完成的行为。如果我可以在内核运行时杀死它,我可以维护一个计时器并在需要时杀死它。

将杀死任何正在运行的内核

它还将清除在设备上进行的任何分配,因此,如果您打算再次使用任何数据区域,则需要重新分配它们


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

您需要检查内核的输出以确定它们是否应该被杀死吗?然后,使用常规模型更有意义,在该模型中,您可以创建运行时间较短的内核,并检查它们的输出,以确定是否应该重新启动它们。在我的用例中,输出不能解释为执行操作。我需要一种机制来抢占运行的内核。我想你几乎肯定是在错误的轨道上设计的。如果你想办法杀死一个正在运行的内核,那将是一个黑客行为——而不是CUDA的初衷。您应该考虑如何在常规CUDA范例中修改您的设计。