2013-09-29 49 views
1

让我们说我有许多CUDA内核,我可以要求GPU执行。我不想修改内核代码(包括eg陷阱)。是否有可能杀死正在运行的CUDA内核?

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

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

+0

您是否需要检查内核的输出以确定它们是否应该被杀死?然后,使用常规模型更有意义,在该模型中创建短时间运行的内核并检查其输出以确定是否应重新启动它们。 –

+0

在我的用例中,输出不能被解释为采取行动。我需要一种机制来抢占正在运行的内核。 –

+3

我认为你几乎肯定是在你设计的错误轨道上。如果你设法想出杀死正在运行的内核的方法,那将是一种破解 - 而不是CUDA设计的目标。您应该考虑如何修改设计,使其能够在常规CUDA范例内工作。 –

回答

4

cudaDeviceReset()将会终止任何正在运行的内核。

它也将消除设备上的所有分配,因此如果您打算再次使用它们,您将需要重新分配任何数据区域。

相关问题