cuda原子性操作代码编译问题 error: identifier "atomicAdd" is undefined
2014-03-11 17:03
429 查看
这次遇到的问题是,编译原子性代码出错。
代码是《GPU高性能编程cuda实践》第9章的hist_gpu_gmem_atomics.cu和hist_gpu_shmem_atomics.cu。
这次还是用原有sdk带有makefile修改来编译。
出现
"/usr/local/cuda-5.5"/bin/nvcc-ccbin g++ -I../../../common/inc -m32
-gencodearch=compute_10,code=sm_10 -gencode arch=compute_20,code=sm_20-gencode arch=compute_30,code=sm_30 -gencodearch=compute_35,code=\"sm_35,compute_35\" -o exe.o -chist_gpu_shmem_atomics.cu
error:identifier "atomicAdd" is undefined
分析:书中提到,原子性操作在低端的计算能力GPU是不支持的,
1.1以上的计算能力才支持全局内存的原子操作,
1.2以上的计算能力才支持共享内存的原子操作。
我观察到了makefile的nvvc的编译命令有-gencodearch=compute_10,code=sm_10,
感觉不靠谱,于是改了一下。
把
GENCODE_FLAGS := $(GENCODE_SM10) $(GENCODE_SM20) $(GENCODE_SM30)
改为
GENCODE_FLAGS := $(GENCODE_SM20) $(GENCODE_SM30)
#$(GENCODE_SM10)
就是把(GENCODE_SM10)选项去掉
再次编译,貌似没事。
运行,出问题了。输出不正常阿。
搞了很久,猜测一下,把GENCODE_SM10改为GENCODE_SM12就可以了。
makefile的主要修改如下
#CUDA code generation flags
ifneq($(OS_ARCH),armv7l)
GENCODE_SM12 := -gencode arch=compute_12,code=sm_12
endif
GENCODE_SM20 := -gencode arch=compute_20,code=sm_20
GENCODE_SM30 := -gencode arch=compute_30,code=sm_30 -gencodearch=compute_35,code=\"sm_35,compute_35\"
GENCODE_FLAGS := $(GENCODE_SM12) $(GENCODE_SM20) $(GENCODE_SM30)
我知道我机器GPU的Computecapability:
1.2,
所以这样改。但具体原因不知道。
目前只能这样理解:编译参数如果跟机器属性不符,有可能会出错。
不过还好,再次对cuda的编译有了更深入的理解。
代码是《GPU高性能编程cuda实践》第9章的hist_gpu_gmem_atomics.cu和hist_gpu_shmem_atomics.cu。
这次还是用原有sdk带有makefile修改来编译。
出现
"/usr/local/cuda-5.5"/bin/nvcc-ccbin g++ -I../../../common/inc -m32
-gencodearch=compute_10,code=sm_10 -gencode arch=compute_20,code=sm_20-gencode arch=compute_30,code=sm_30 -gencodearch=compute_35,code=\"sm_35,compute_35\" -o exe.o -chist_gpu_shmem_atomics.cu
error:identifier "atomicAdd" is undefined
分析:书中提到,原子性操作在低端的计算能力GPU是不支持的,
1.1以上的计算能力才支持全局内存的原子操作,
1.2以上的计算能力才支持共享内存的原子操作。
我观察到了makefile的nvvc的编译命令有-gencodearch=compute_10,code=sm_10,
感觉不靠谱,于是改了一下。
把
GENCODE_FLAGS := $(GENCODE_SM10) $(GENCODE_SM20) $(GENCODE_SM30)
改为
GENCODE_FLAGS := $(GENCODE_SM20) $(GENCODE_SM30)
#$(GENCODE_SM10)
就是把(GENCODE_SM10)选项去掉
再次编译,貌似没事。
运行,出问题了。输出不正常阿。
搞了很久,猜测一下,把GENCODE_SM10改为GENCODE_SM12就可以了。
makefile的主要修改如下
#CUDA code generation flags
ifneq($(OS_ARCH),armv7l)
GENCODE_SM12 := -gencode arch=compute_12,code=sm_12
endif
GENCODE_SM20 := -gencode arch=compute_20,code=sm_20
GENCODE_SM30 := -gencode arch=compute_30,code=sm_30 -gencodearch=compute_35,code=\"sm_35,compute_35\"
GENCODE_FLAGS := $(GENCODE_SM12) $(GENCODE_SM20) $(GENCODE_SM30)
我知道我机器GPU的Computecapability:
1.2,
所以这样改。但具体原因不知道。
目前只能这样理解:编译参数如果跟机器属性不符,有可能会出错。
不过还好,再次对cuda的编译有了更深入的理解。
相关文章推荐
- error: #20: identifier "EXTI0_IRQChannel" is undefined
- 关于Quartus编译的问题:Error:Can't generate netlist outout files because the file"C:/altera/ XXXXXXXX" is an OpenCore Plus time-limited file.
- 关于STM32工程的错误,狗血错误。。。..\CMSIS\core_cm3.h(1087): error: #20: identifier "IRQn_Type" is undefined
- error: #20: identifier "stm32f10x_xxxx.h" is undefined
- linux下生产者与消费者问题代码,以及编译c代码时error:undefined reference to sem_wait 解决方法之一
- 编译过程中弹出new(35) : error C2061: syntax error : identifier 'THIS_FILE'问题的原因及解决方法
- How to find the exact line position which causes “undefined is not a function" error
- 使用软引用解决Handler内存泄露和显示Popupwindow、Dialog时提示"Unable to add Window-token is null"的问题
- xcode7无证书真机调试 Error: An App ID with identifier "*" is not avaliable. Please enter a different string.
- 安装caffe编译opencv3.0出现error: a storage class is not allowed in an explicit specialization问题
- cocos2d-x-2.2.5 Eclipse编译报错 error: 'transform' is not a member of 'std' (IOS没有问题)
- 用gcc编译.cpp文件可能出现"undefined reference to `__gxx_personality_v0'"问题
- Android源码编译时,遇到的问题:error: "_FORTIFY_SOURCE" redefined [-Werror]
- MAC OS用ffmpeg编译代码出现的Undefined symbols for architecture x86_64: "_CGLGetCurrentContext", referenced
- cocos2d-x3.x连接CSV文件Get data from file("Tower.csv")failed,error code is 32 问题及解决方案
- 编译代码时出现/usr/include/boost/type_traits/detail/has_binary_operator.hp:50: Parse error at "BOOST_JOIN"错
- i18n国际化语言问题 编译报错config_labels"is not translated in "zh_CN(Chinese:China)",..."
- apue 线程代码编译时的 undefined reference to 'pthread_create' 问题处理
- 解决gcc 编译时报错"undefined reference to 'main'" 问题
- IAR编译zigbee出现问题Undefined external "?V1" referred in AF