Cmake编译Caffe,如果改过Cuda_arch,make时依旧nvcc fatal : Unsupported gpu architecture ‘compute_20‘的解决办法

针对CUDA版本9.0以上,GTX1050显卡,CUDA10.2+cudnn7.6.5环境下Caffe编译错误的解决方法。涉及修改Caffe的Cuda.cmake文件,指定GPU架构,以及解决cudnn版本导致的编译问题。同时提及了适配opencv4的解决方案,包括修改相关文件以兼容opencv4的函数调用。
部署运行你感兴趣的模型镜像

前提是,你的cuda版本是9.0以上,如果你已经把Cuda改成了如下参数,即删掉了20,依旧报错,可以尝试我的解决方法。


CUDA_ARCH :=    -gencode arch=compute_30,code=sm_30 \
                -gencode arch=compute_35,code=sm_35 \
                -gencode arch=compute_50,code=sm_50 \
                -gencode arch=compute_52,code=sm_52 \
                -gencode arch=compute_60,code=sm_60 \
                -gencode arch=compute_61,code=sm_61 \
                -gencode arch=compute_61,code=compute_61

我的情况是GTX 1050,cuda 10.2 + cudnn7.6.5

(此处多嘴一句,之前我安装的时候用的cudnn8,但是nvidia在cudnn8里面改了一下存放版本号的位置,导致cmake caffe的时候软件包读取cudnn版本会出错,版本会变成ver???,选择cudnn7就可以了。也许改一下8的那个h文件也可以,我没尝试)

 

具体的解决方法是,粗暴一点,打开caffe/cmake/Cuda.cmake,找到第七行的

set(Caffe_known_gpu_archs "20 21(20) 30 35 50 60 61")

把它改成你显卡的架构,就别叫他自己识别了,只限制到你具体的显卡的架构。

架构可以在这里查询 https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/

比如我的显卡是GTX1050,是帕斯卡架构,就是

就把那行改成

set(Caffe_known_gpu_archs "60 61")

保存之后再去编译即可。改完记得make clean,然后make all -j8这样。会有warning,但是能make完。

 

如果在这里需要加新的架构,比如我主力机的2080ti,就需要在加了75之后,类似于这样的修改


elseif(${CUDA_ARCH_NAME} STREQUAL "Pascal")
    set(__cuda_arch_bin "75")

(我没把帕斯卡改成图灵只是因为我不确定其他地方有没有引用,本着少改的原则,凑合吧)

 

后续,如果你用的opencv4,还有个法子可以让caffe适配opencv4.

https://github.com/BVLC/caffe/pull/6625

这个没被merge进最终包,是因为老哥用了很粗暴的法子把所有opencv3和4冲突的地方全改成4里面的调用法了,所以用老版本的同志们就又不行了。但是他的法子给单独用opencv4的就很好。

具体我就不写了,参考一下这个pull的filechange,看看他改的几个文件,很清楚了。主要就是把CV_LOAD_IMAGE_COLOR改成cv::IMREAD_COLOR,还有把CV_LOAD_IMAGE_GRAYSCALE改成cv::IMREAD_GRAYSCALE

 

更新的cuda11我试都没想试,肯定不兼容……毕竟caffe太老了,我这也是女朋友毕设参考的项目需要用,我也没空重新去把那个项目整个迁移到pytorch,所以才花时间去复原一套比较老的环境来跑那个项目。如果你们以后想搞这方面,还是趁早学习pytorch比较好。毕竟现在的pytorch是基于caffe2和pytorch合并提升而来的。

 

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值