【发布时间】:2012-12-21 21:57:09
【问题描述】:
我有一个 CUDA 内核,在我的旧 Tesla 卡中使用了 20 多秒。 如果内核运行超过 20 秒,我想以编程方式终止 CUDA 内核。我的意图是,如果内核运行时间超过 20 秒,则应终止该内核并运行另一个精度较低的内核。
我的操作系统是 Windows 7 64 位。 CUDA 版本是 5.0。 GPU 是 Tesla C1060
请帮助我在不退出应用程序的情况下杀死 CUDA 内核。
【问题讨论】:
-
您的问题是关于哪一部分?时机还是杀戮?
-
我认为这不可能。另外,我认为没有必要。当然,您可以根据问题大小和输入参数估计内核的运行时间,并据此选择精度吗?或者,您可以对内核进行计时并在程序了解有关输入参数如何影响运行时间的更多信息时动态调整切换点。
-
@RogerDahl:听起来你假设 OP 可以解决停机问题。
-
@leftaroundabout:一点也不。这不是内核“是否”会完成的问题,而是“何时”完成的问题。
-
@RogerDahl 确定 WCET 通常是equivalent to halting problem,但无论如何。我所说的“不是图灵完备”的意思可能是你所说的“具有不同大小输入的相同内核”:没有任何循环以 nontrivial 方式依赖于输入,例如只从 0 迭代到一个常数。 – 但是,是的,我们需要这里的一般情况,因为我们对 OP 内核的功能一无所知。输入大小和内核运行时间之间的关系可能根本不是微不足道的。