首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用CUDA 5编译变推力后端系统

用CUDA 5编译变推力后端系统
EN

Stack Overflow用户
提问于 2012-11-22 17:02:47
回答 1查看 336关注 0票数 0

我最近安装了CUDA 5,发现现有的基于推力的代码无法编译。只有当我切换到OMP或TBB时,才会发生错误。

所以我用推力例子中的monte_carlo.cpp做了一个实验。

当我使用CUDA 5.0的include path时,我得到了以下错误:

-DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_OMP g++ -O2 -o monte_carlo monte_carlo.cpp -fopenmp -I /usr/local/cuda-5.0/include/ /tmp/ccFsJtAs.o:函数main': monte_carlo.cpp:(.text+0xa0): undefined reference tofloat thrust::detail::backend::cuda::reduce_n,float,thrust::use_default>,long,float,ccFsJtAs.o::plus (thrust::transform_iterator,浮动,thrust::use_default>,长,浮点,推力::plus)‘

但如果我更改为CUDA 4.1使用

-DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_OMP g++ -O2 -o monte_carlo monte_carlo.cpp -fopenmp -I /usr/local/cuda-4.1/include/

没有错误。

我的平台是Ubuntu10.04和g++ 4.4.3。

希望有人能帮我,谢谢!

正如@Robert所指出的,编辑 OMP问题是通过改变-fopenmp的顺序来解决的,但是我没有使用TBB进行编译。

-DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_TBB g++ -O2 -o monte_carlo monte_carlo.cpp -ltbb -I /usr/local/cuda/include / tmp/ccxSmcnJ.o:函数main': monte_carlo.cpp:(.text+0xa0): undefined reference tofloat thrust::detail::backend::cuda::reduce_n,float,thrust::use_default>,long,float,推力::plus >(thrust::transform_iterator,float,thrust::use_default>,long,float::plus)‘collect2: ld返回1退出状态

但是如果我用

-DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_TBB g++ -O2 -o monte_carlo monte_carlo.cpp -ltbb -I /usr/local/cuda-4.1/include/

EN

回答 1

Stack Overflow用户

发布于 2016-01-16 11:05:46

OpenMP编译似乎是由错误指定的编译参数引起的。编译使用

代码语言:javascript
复制
g++ -O2 -o monte_carlo monte_carlo.cpp -fopenmp -DTHRUST_DEVICE_BACKEND=THRUST_DEVICE_BACKEND_OMP -lgomp -I\usr\local\cuda\include

(即在任何预处理指令之前指定OpenMP代码生成)允许使用反向OpenMP正确编译。

报告的TBB后端编译错误似乎是由于试图使用推力1.5.3上的TBB后端造成的,后者没有TBB支持。

这个答案是从问题编辑和评论中收集的,目的是将问题从CUDA标签的未回答列表中删除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13517249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档