You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7.3+CUDA9.1环境编译Matconvnet遇compute_20不支持错误求助

解决vl_compilenn编译时nvcc报错"Unsupported gpu architecture 'compute_20'"的问题

这个报错的核心原因很明确:CUDA 9.1已经彻底移除了对Fermi架构(对应compute_20)的支持,而你使用的MatConvNet 1.0-beta24默认编译配置里还包含了这个过时的架构选项,导致nvcc拒绝编译。结合你的环境(Tesla P100是Pascal架构,compute能力为6.0),可以通过以下两种方式解决:

方法一:修改MatConvNet的CUDA配置文件

  1. 打开报错中提到的配置文件:
    vi /data1/zhangdinghuai/gitrepo/explanatoryGraph/matconvnet-1.0-beta24/matlab/src/config/mex_CUDA_glnxa64.xml
    
  2. 找到所有包含compute_20的行,比如:
    <NVCC_FLAGS>-gencode=arch=compute_20,code=sm_20</NVCC_FLAGS>
    <NVCC_FLAGS>-gencode=arch=compute_20,code=sm_21</NVCC_FLAGS>
    
    将这些行直接删除或者用<!-- ... -->注释掉。
  3. 确保配置中包含Tesla P100支持的架构参数(如果没有就添加):
    <NVCC_FLAGS>-gencode=arch=compute_60,code=sm_60</NVCC_FLAGS>
    <NVCC_FLAGS>-gencode=arch=compute_60,code=compute_60</NVCC_FLAGS>
    
  4. 保存文件后,重新执行vl_compilenn('enableGpu', true);即可。

方法二:调用vl_compilenn时直接指定GPU架构

不需要修改配置文件,直接在编译命令中指定你的GPU对应的compute架构:

vl_compilenn('enableGpu', true, 'cudaArch', 'sm_60');

这个参数会强制MatConvNet只编译P100支持的架构,自动跳过不兼容的compute_20选项。

额外验证步骤

为了确保万无一失,你可以先确认以下信息:

  • 执行nvcc --version,确认输出的CUDA版本是9.1;
  • 执行nvidia-smi,查看GPU信息,确认Tesla P100的compute capability为6.0(和我们指定的sm_60对应);
  • Matlab 2018a本身是支持CUDA 9.1的,所以版本兼容性没问题。

内容的提问来源于stack exchange,提问作者Narsil Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:28:16