发现NVCC编译器一个CUDA函数添加注释支持的问题

来源:互联网 发布:cydia无法连接网络 编辑:程序博客网 时间:2024/05/17 05:56
 

文章原创,转载请注明链接

  

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

 

经过费劲的把加了注释的程序与源程序分步替换的方式,终于找到问题所在:

    cutilSafeCall(cudaMalloc( (void**) &d_gaussian,//分配内存

        (2 * radius + 1)* sizeof(float)));

就上面那段中的绿色的注释导致的,将其去掉之后程序就能正常运行了。这个也太奇怪了,为了验证这个问题,同样将另外一个函数的括号内分行然后加上注释:、

    cutilSafeCall( cudaBindTextureToArray( gaussianTex, //纹理参考系

              d_gaussianArray, channelDesc));

结果程序能够运行但是是错误的运行。 后来又测试了一下即使将上面的注释换成英文注释,也还是一样的问题。由此可见nvcc编译器将这部分注释也当做代码(输入形参)编译了,对于注释的处理并不能像其他如VC的编译器那样准确的识别注释。因而在编写程序的时候尽量不要将CUDA中的函数参数列表中间分行插入注释,以免造成不可预知的结果和错误。

原创粉丝点击