MatConvNet编译报错:Error using mex nvcc fatal : Unsupported gpu architecture ‘compute_20‘ 解决办法
Posted Z.Q.Feng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MatConvNet编译报错:Error using mex nvcc fatal : Unsupported gpu architecture ‘compute_20‘ 解决办法相关的知识,希望对你有一定的参考价值。
文章目录
项目场景
最近在使用 MatConvNet
编译 GPU 支持时,使用 vl_compilenn('enableGpu', true, 'cudaRoot', '/usr/local/cuda-11.1')
命令出现了如下报错:
Error using mex
nvcc fatal : Unsupported gpu architecture 'compute_20'
Error in vl_compilenn>mex_compile (line 530)
mex(mopts:) ;
Error in vl_compilenn (line 488)
mex_compile(opts, srcsi, objfile, flags.mexcu) ;
其中我编译的 MatConvNet 版本为 MatConvNet 1.0-beta24
, MATLAB 版本为 2019b
,系统为 Ubuntu21.10
。
解决办法
修改 vl_compilenn.m
文件,将文件中的 opts.cudaMethod
值设为 ['nvcc']
:
opts.cudaMethod = ['nvcc'] ;
接着在 MATLAB
命令行中使用 gpuDevice()
命令查看你的 GPU 算力:
>> gpuDevice()
ans =
CUDADevice with properties:
Name: 'NVIDIA GeForce MX250'
Index: 1
ComputeCapability: '6.1'
......
DeviceSelected: 1
>>
这里的 ComputeCapability
的值乘以 10 就是你的 GPU 算力,这里我的是 61,接着修改 vl_compilenn
函数中的 opts.defCudaArch
的值:
opts.defCudaArch = [...
'-gencode=arch=compute_61,code=\\"sm_61,compute_61\\" '...
];
修改为 compute_61
,大致修改如下:
接着我的系统还出现了如下报错:
error: Type Error
┌─ shell:1:33
│
1 │ "/usr/local/cuda-11.1/bin/nvcc" -c "/home/zq/Documents/Project/dcnf-fcsp/libs/matconvnet-1.0-beta24/matlab/src/bits/data.cu" -g -DENABLE_GPU -DENABLE_DOUBLE -gencode=arch=compute_61,code=\\"sm_61,compute_61\\" -I"/usr/local/Polyspace/R2019b/extern/include" -I"/usr/local/Polyspace/R2019b/toolbox/distcomp/gpu/extern/include" -Xcompiler -mssse3,-ftree-vect-loop-version,-ffast-math,-funroll-all-loops -gencode=arch=compute_61,code=\\"sm_61,compute_61\\" -O0 -Xcompiler -fPIC -D_FORCE_INLINES -o "/home/zq/Documents/Project/dcnf-fcsp/libs/matconvnet-1.0-beta24/matlab/mex/.build/bits/data.o"
│ ^^ Expected operator, found -c
解决办法如下,这里是由于 bash
语法中的双引号导致的,找到你的 nvcc_compile(opts, src, tgt, nvcc_opts)
函数,修改其中的 nvcc_cmd
值如下:
nvcc_cmd = sprintf('%s -c %s %s -o %s', ...
nvcc_path, src, ...
strjoin(nvcc_opts), tgt);
就是把 %s
前后的双引号去掉了。
若接着出现如下报错,参考此博客:
以上是关于MatConvNet编译报错:Error using mex nvcc fatal : Unsupported gpu architecture ‘compute_20‘ 解决办法的主要内容,如果未能解决你的问题,请参考以下文章
MatConvNet编译报错:Error using mex nvcc fatal : Unsupported gpu architecture ‘compute_20‘ 解决办法
MATLAB-matconvnet报错:Error using mex ...... error: ‘numeric_limits’ is not a member of ‘std’
MatConvNet使用报错:Error using vl_argparse (line 63) OPTS must be a structure 解决办法
MatConvNet编译报错:mex/vl_nnconv.mexa64‘ compiled with ‘-R2018a‘ and linked with ‘-R2017b‘. 解决办法
MatConvNet报错:The NVCC compiler ‘/usr/local/cuda-11.1/bin/nvcc‘ does not appear to be valid. 解决办法