原来程序中一句如下
cudaMemcpyToSymbol(n_order, &n, sizeof(int)) ;
/// 其中__constant__ int n_order;
///其中 n 为 int型
n_order 可以绑定到常数内存,计算的结果是对的
按照书写规范应该是 cudaMemcpyToSymbol(“n_order”, &n, sizeof(int)) ; 即要带" "
诡异地方在于:
(1) 原来的写法 在2台电脑上均未报错 (cuda4.0), 难道强制转换类型了吗???
(2) 我更改成为 cudaMemcpyToSymbol(“n_order”, &n, sizeof(int)) ; 这种写法 却让原有程序 计算结果不对!
熬夜找bug~ 请版大指教! 谢谢~~
-------------------写于飘雪之夜
请立刻升级到最新版本,并立刻停止使用带有""的版本。
理由不能解释(因为手册也不解释)。
然后当您使用最新toolkit编译后,请报告问题是否消失。
LZ您好,您吧引号去掉应该就好了,正如横扫斑竹建议的那样。
具体官方建议信息,请查阅 CUDA Toolkit reference maunal 5.0里面的说明,引号方式容易引发问题,已经不推荐使用。
资料区有NV在线版文档的地址,您可以简单查看一下。
祝您火速搞定代码,在雪夜尽早进入温暖的梦乡。
谢谢 寒雪夜 晚上给予 温暖的回复!
我将按照您的建议去掉所有 引号, 即按照 cudaMemcpyToSymbol(n_order, &n, sizeof(int)) ; 这个形式。
有个身不由己的事情就是 没法升级5.0 主要原因项目原因实在折腾不起版本的,不然之前早就换5.0的了!
再次感谢版上雪中送炭!!!
那我以后4.0 版本还是去掉引号吧!