admin管理员组

文章数量:1663034

更新:更简单粗暴的方法是根据自己的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" ..

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

本文标签: FATALnvccPCLunsupportedArchitecture