文章原创,转载请注明链接
这两天测试一个程序时,在.cu文件中加上了一些注释结果编译后运行却提示这样的错误:

经过费劲的把加了注释的程序与源程序分步替换的方式,终于找到问题所在:
cutilSafeCall(cudaMalloc( (void**) &d_gaussian,//分配内存
(2 * radius + 1)* sizeof(float)));
就上面那段中的绿色的注释导致的,将其去掉之后程序就能正常运行了。这个也太奇怪了,为了验证这个问题,同样将另外一个函数的括号内分行然后加上注释:、
cutilSafeCall( cudaBindTextureToArray( gaussianTex, //纹理参考系
d_gaussianArray, channelDesc));
结果程序能够运行但是是错误的运行。 后来又测试了一下即使将上面的注释换成英文注释,也还是一样的问题。由此可见nvcc编译器将这部分注释也当做代码(输入形参)编译了,对于注释的处理并不能像其他如VC的编译器那样准确的识别注释。因而在编写程序的时候尽量不要将CUDA中的函数参数列表中间分行插入注释,以免造成不可预知的结果和错误。
2217

被折叠的 条评论
为什么被折叠?



