我意识到“cuPrintf”可以在内核中使用,但“cudaPrintfDisplay”只能在CPU代码中使用。在我看来,“cuPrintf”只能在从内核返回后刷新到stdout。我的问题是:我们可以在内核运行期间获得准时打印输出吗?
答案 0 :(得分:8)
正如您已经注意到的那样,cuPrintf()
(以及计算能力中的printf()
> = 2.0),只需在内核运行时将字符串添加到缓冲区,并在内核之后打印出缓冲区结束。
我认为没有办法从内核获取实时printf。但是,为了减少延迟,您可以每次使用更少的线程运行内核。由于__device__ printf()
只是一种诊断或调试工具,因此性能的任何损失都无关紧要。
也许最好的办法就是在CUDA调试器中运行你的代码并以这种方式获得即时反馈。