我们可以在内核运行期间获得准时打印输出吗?

时间:2012-09-25 18:57:40

标签: cuda

我意识到“cuPrintf”可以在内核中使用,但“cudaPrintfDisplay”只能在CPU代码中使用。在我看来,“cuPrintf”只能在从内核返回后刷新到stdout。我的问题是:我们可以在内核运行期间获得准时打印输出吗?

1 个答案:

答案 0 :(得分:8)

正如您已经注意到的那样,cuPrintf()(以及计算能力中的printf()> = 2.0),只需在内核运行时将字符串添加到缓冲区,并在内核之后打印出缓冲区结束。

我认为没有办法从内核获取实时printf。但是,为了减少延迟,您可以每次使用更少的线程运行内核。由于__device__ printf()只是一种诊断或调试工具,因此性能的任何损失都无关紧要。

也许最好的办法就是在CUDA调试器中运行你的代码并以这种方式获得即时反馈。