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

Hai*_*ang 3 cuda

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

Rog*_*ahl 8

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

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

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

  • sm_20上的printf通常需要在输出就绪之前进行设备同步,因此目前绝对不能进行"准时"打印输出. (3认同)