笔者最近想编译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上看到了以下内容
4
|