【已解决】PCL配置中出现:nvcc fatal : Unsupported gpu architecture ‘compute_30‘

2 篇文章 0 订阅
文章讲述了在Linux环境下,使用CUDA11.4和PCL1.12.0时遇到的编译错误,由于CUDA不支持compute_30架构。解决方法包括修改PCL源代码、降级CUDA版本或在CMake阶段设置合适的CUDA架构。最终作者选择了在CMake阶段设置compute_75架构以适应GeForceGTX1660Ti显卡。
摘要由CSDN通过智能技术生成

更新:更简单粗暴的方法是根据自己的CUDA版本换pcl的版本。作为参考,我的CUDA版本为11.4,使用PCL 1.12.0是可以的。在 Release PCL 1.12.0 · PointCloudLibrary/pcl 下载Source code(tar.gz)

环境信息

linux系统:18.04
显卡:GeForce GTX 1660 Ti
CUDA版本:11.4
PCL版本:1.9.1


1. 报错情况

在编译过程中,make到75%时出现报错
Unsupported gpu architecture ‘compute_30’ CMake Error at pcl_gpu_utils_generated_repacks.cu.o.None.cmake:221 (message): Error generating /opt/pcl/release/gpu/utils/CMakeFiles/pcl_gpu_utils.dir/src/./pcl_gpu_utils_generated_repacks.cu.o gpu/utils/CMakeFiles/pcl_gpu_utils.dir/build.make:63: recipe for target ‘gpu/utils/CMakeFiles/pcl_gpu_utils.dir/src/pcl_gpu_utils_generated_repacks.cu.o’ failed make[2]: *** [gpu/utils/CMakeFiles/pcl_gpu_utils.dir/src/pcl_gpu_utils_generated_repacks.cu.o] Error 1 CMakeFiles/Makefile2:6550: recipe for target ‘gpu/utils/CMakeFiles/pcl_gpu_utils.dir/all’ failed make[1]: *** [gpu/utils/CMakeFiles/pcl_gpu_utils.dir/all] Error 2 Makefile:162: recipe for target ‘all’ failed make: *** [all] Error 2


2. 报错原因与几个解决问题方向

我的CUDA编译器nvcc不支持compute_30这个GPU架构,这个GPU架构较老,不符合应该有的算力设置,与CUDA版本不兼容。

解决方向
(1)修改PCL中关于CUDA的代码,找到“compute_30”的部分修改成你对应的架构或者注释掉。
(2)降级CUDA版本,如果你的项目必须使用这种较老的架构的话。
(3)在CMake阶段就增加设置好CUDA架构。(我的解决方法)


3. 他人的方法与细节补充

1.上述解决方向1的办法
nvcc fatal : Unsupported gpu architecture ‘compute_30‘
根据该帖中描述,将cmake文件中,如下图compute_30那行注释掉就行。

在这里插入图片描述
但在我实际操作中找不到相关的文件。
如果有想要用这种方法的,在此提供一种全文件夹搜索的办法。

以配置PCL为例,根目录为PCL,在PCL目录打开终端

grep -r -n "compute_30" ./

这一命令用于搜索目录下所有包含"compute_30"字段的内容,并标注位置,有需要的话可以用这种方法找是哪个文件。


2.修改pcl_find_cuda.cmake文件
【问题解决】安装PCL报错:nvcc fatal : Unsupported gpu architecture ‘compute_30‘

我使用此方法后没有解决问题,可能还是需要重新编译,我没有尝试了。(我的办法也需要重新编译就是了)


4. 最终解决办法

也就是解决方向3,在cmake阶段就设置好需要的架构。

步骤一:查询自己显卡信息与对应算力
首先知道自己显卡的型号,可以去官方网站对照查看。我是找了别人转载的一部分NVIDIA GPU 算力对照表对照得到对应的数据。
我的显卡是GeForce GTX 1660 Ti,对应7.5,那么我需要设置的架构就是compute_75。

步骤二:删除掉之前编译到一半的所有文件,准备重新编译

步骤三:cmake时加入设置代码
在原本的语句后加入:-DCUDA_ARCH_BIN=“XX”,其中XX即为步骤一中得到的数。
例如,我进行cmake的代码添加后如下:

cmake -DCMAKE_BUILD_TYPE=None \
      -DCMAKE_INSTALL_PREFIX=/usr/local \
      -DBUILD_GPU=ON \
      -DBUILD_apps=ON \
      -DBUILD_examples=ON \
      -DCUDA_ARCH_BIN="75" ..

经过设置后我的问题解决。

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值