关于cuda kernel能否调用printf()函数

在尝试使用cuda-gdb调试CUDA程序时,作者发现无法直接进入kernel代码。为了解决这个问题,作者试图通过在kernel中使用printf输出中间变量,但遇到了错误提示,即在__device__/__global__函数中调用host函数printf是不允许的。进一步查找资料,有人建议使用cuPrintf替代printf,但仍然出现编译错误。最后,作者在Stack Overflow找到了更多关于在CUDA kernel中打印的讨论。
摘要由CSDN通过智能技术生成

笔者最近想编译cuda kernel的代码,不知道何种原因,cuda-gdb总是进入不了cuda 的kernel代码。问了身边的大神们,他们表示自己也没有用过cuda-gdb调试程序。他们告诉我最简单的方式就是设置printf输出中间变量。可是笔者有疑惑了,cuda __device__ 打头的函数不是不支持调用host端的函数吗,为何printf能调?

我试着在kernel代码中加上printf(),编译

map.cu(28): error: calling a host function("printf") from a __device__/__global__ function("map_count") is not allowed

怎么会报错?然后又去网上找相关资料,也有人告诉我用cuPrintf()函数,于是我把所有的printf全部改为cuPrinf.编译还是会报错,怎么办

最后我在stackoverflow上看到了以下内容


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值