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