cuda 1.x 编译器产生的奇怪问题及解决方法
2014-04-17 09:52
232 查看
cuda项目中编译问题:
错误提示:
![](http://img.blog.csdn.net/20140417094343687?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcmVkbGluZTIwMDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
内存访问越界导致启动核函数失败的问题。
nsight调试:nsight -> Enable CUDA memory checker,然后 nsight -> Start CUDA Debugging,开始调试,不设置断点,vs直接指向访存越界的语句;
即,
unsigned char *p= shared_data + i; //shared_data 为共享内存中的数组大小为:3*width
uchar2 gt=*(uchar2*)(p+4);
uchar2 gt2=*(uchar2*)(p+width+4); // 出错语句,改为下面的访存方式,则不会报错
//uchar2 gt2=*(uchar2*)(&shared_data[width+i+4]);
uchar2 gt3=*(uchar2*)(p+2*width+4); //奇怪的是,如果上一句出错,则这句出错才对。但是这句确实没有错误,让我感到十分费解!
经多方查看请教测试,问题原因如下:
1.X的编译器在多重指针推断下,容易自我迷失,无法准确定位数据,这是1.x编译器的问题。因此,如果是卡只支持1.x编译器,那么应该是用shared_data[i]的方式寻址。编译器从2.0开始支持通用寻址。因此,如果卡支持高版本的编译器,果断更改编译器,更改地方如下:将其中的compute_10,sm_10更改为:compute_30,sm_10,因为我的是3.0的卡。
![](http://img.blog.csdn.net/20140417094013953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcmVkbGluZTIwMDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
重新编译、运行,问题解决。
错误提示:
内存访问越界导致启动核函数失败的问题。
nsight调试:nsight -> Enable CUDA memory checker,然后 nsight -> Start CUDA Debugging,开始调试,不设置断点,vs直接指向访存越界的语句;
即,
unsigned char *p= shared_data + i; //shared_data 为共享内存中的数组大小为:3*width
uchar2 gt=*(uchar2*)(p+4);
uchar2 gt2=*(uchar2*)(p+width+4); // 出错语句,改为下面的访存方式,则不会报错
//uchar2 gt2=*(uchar2*)(&shared_data[width+i+4]);
uchar2 gt3=*(uchar2*)(p+2*width+4); //奇怪的是,如果上一句出错,则这句出错才对。但是这句确实没有错误,让我感到十分费解!
经多方查看请教测试,问题原因如下:
1.X的编译器在多重指针推断下,容易自我迷失,无法准确定位数据,这是1.x编译器的问题。因此,如果是卡只支持1.x编译器,那么应该是用shared_data[i]的方式寻址。编译器从2.0开始支持通用寻址。因此,如果卡支持高版本的编译器,果断更改编译器,更改地方如下:将其中的compute_10,sm_10更改为:compute_30,sm_10,因为我的是3.0的卡。
重新编译、运行,问题解决。
相关文章推荐
- 关于CUDA C 项目中“ error C2059: 语法错误:“<” ”问题的解决方法
- unable to resolve superclass of 的奇怪问题和一种解决方法!
- 一个奇怪的问题的解决方法
- mysql c++ connector 1.0.5 getString方法 使用过程中遇到汉字产生的乱码问题的解决方法
- CUDA程序编译过程中产生警告的解决方法
- source insight编辑器和Keil 编译器的代码对齐问题的解决方法
- ofstream奇怪问题解决方法
- 背景透明后字体,贴图产生遮盖覆盖问题的解决方法。
- Android RSA与Java RSA加密不同标准产生问题的解决方法
- Connection is read-only问题的产生原因与解决方法
- 跨域问题的产生及解决方法
- 无法定位软件包:cuda问题解决方法
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
- 关于google maps显示不准确的问题(产生偏移量)解决方法
- 使用ld的“-Ttext”选项时可能产生的一个问题的解决方法
- Windows下利用Gvim写PHP产生中文乱码问题解决方法
- Ubuntu 16.04安装NVIDIA显卡驱动 、CUDA-8.0、cuDNN和TensorFlow问题及解决方法
- Connection is read-only问题的产生原因与解决方法
- 雪莹软件将word转图片产生空白区域的问题解决方法
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释