admin管理员组文章数量:1663034
问题描述
显卡:NVIDIA GeForce RTX 3060
CUDA版本:CUDA 11.2
PCL版本:1.10.1
make过程中出现:nvcc fatal : Unsupported gpu architecture ‘compute_30‘ 报错。
问题分析
症结在于我的显卡不支持compute_30的GPU构架,与CUDA版本不兼容。
网上大多数的解决方法是找到makefile
文件中CUDA_ARCH
参数配置,将其中的 -gencode arch=compute_30,code=sm_30 \
注释/删除,如图所示(图片来自网络):
但问题是,我查看了PCL几乎所有的(并不是全部)的makefile
文件,压根没见到这个参数啊喂!!!!于是乎,转念一想,makefile
不是CMakeList
生成的吗?为什么要傻傻去找makefile
,便有了这篇文章的解决方法…
解决方法
找到pcl文件夹下cmake/pcl_find_cuda.cmake
,将__cuda_arch_bin
参数做如下修改:
__cuda_arch_bin
的含义是在cmake时,编译器会自动从引号里面的计算架构中选择,排在第一个的30会被优先选择。那既然我的显卡不支持compute_30,那我就删掉/注释掉它呗,于是变成了以35开头。当然,你也可以顺着第25行代码提供的官方网站摸进去,去查查自己显卡适配的计算架构,我的RTX 3060推荐的是8.6,如图所示:
你不用它推荐的也无所谓,反正咱不就以编译通过为目的么?不过在编译过程中会出现如下警告,不过无伤大雅
再make,通过!
补充问题
在编译过程中也许会出现c++: internal compiler error: 已杀死 (program cc1plus)
的问题:
网上说是交换空间不足,然后教大家如何增大交换空间。本人计较懒,不愿意搞这么复杂。此时,你只需要关闭一些没用的窗口界面,再次make
:
诶,奇迹发生了。刚刚是在86%的时候报错,现在到了93%才报错,既然如此,果断继续make
:
大功告成!!
猜测一下原因:第一,我装的是Windows+Ubuntu双系统,配置的交换空间(暂且理解为系统内存)确实不大我承认,但绝非到影响功能的地步。第二,我开着很多窗口、网页占据了一些空间,关掉就好。第三,代码编译过程中会产生大量中间数据,在编译停止后会自动释放,所以不断报错又不断make的过程也是在不断释放中间数据的过程,因此方法奏效。
本文标签: 报错FATALnvccPCLArchitecture
版权声明:本文标题:【问题解决】安装PCL报错:nvcc fatal : Unsupported gpu architecture ‘compute_30‘ 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729978372a1218301.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论