请教一下,tx2 kernel用printf打印,编译通过了但运行没有打印怎么回事呢

  • 0 replies
  • 33 views
*

sisiy

  • *****
  • 147
    • 查看个人资料
答:那只可能这句没有执行到。
或者执行到了,但是没有来得及输出(或者fflush), 就立刻被干掉了(例如进程被一个KILL信号)。
应当没有其他可能了。
一般常见的是第一种。
很多作者以为能XXX行被执行到,然而实际上不能。
考虑到是在Kernel中使用printf(假设这个是CUDA kernel),我建议楼主确定这里能执行到(即:kernel没有在这行之前挂掉)。

注意CUDA往往是多线程的kernel,任何一个线程挂掉(例如因为无效的地址或者下表访存),那么整个kernel的一次启动都会整体被挂掉(一个grid)。

这点需要注意一下。别是别的线程挂了,然后你需要输出的线程被连累了。