【发布时间】:2013-09-29 02:28:09
【问题描述】:
假设我有许多可以让 GPU 执行的 CUDA 内核。无论如何我都不想修改内核代码(例如包含一个陷阱)。
有没有办法杀死这样一个正在运行的内核?
我打算自动生成内核(遗传编程)。这些内核可能具有可能需要很长时间才能完成的行为。如果我可以在内核运行时终止它,我可以维护一个计时器并在需要时终止。
【问题讨论】:
-
您是否必须检查内核的输出以确定它们是否应该被杀死?然后,使用常规模型更有意义,您可以在其中创建短期运行的内核并检查其输出以确定是否应该重新启动它们。
-
在我的用例中,输出不能被解释为采取行动。我需要一种机制来抢占运行内核。
-
我认为您的设计几乎肯定走错了轨道。如果您设法想出一种方法来杀死正在运行的内核,那将是一种黑客行为——这不是 CUDA 的设计初衷。您应该考虑如何修改您的设计,使其在常规 CUDA 范式中工作。