RTX 3080搭配CUDA 10.2报错Unknown CUDA arch(8.6)是否有可行解决方案
问题根因
RTX 3080对应的CUDA算力架构为sm_86,而CUDA 10.2原生最高仅支持到图灵架构的sm_75,原生不识别安培架构的8.6算力,因此会抛出你遇到的架构不支持报错。
可行解决方法
方法1:强制指定兼容算力运行/编译
不需要修改CUDA环境,通过参数指定程序使用兼容的sm_75架构运行,适配成本最低:
- 自行编译项目时,在CUDA编译参数中添加如下配置即可:
-gencode arch=compute_75,code=sm_75 - 使用预编译的框架包(如PyTorch、TensorFlow)时,在运行代码前添加对应环境变量即可,以PyTorch为例:
其他框架可自行查找对应算力指定的环境变量,逻辑一致。export TORCH_CUDA_ARCH_LIST="7.5"
注意:该方法会损失小部分性能,且无法使用安培架构独有的特性,普通运算场景无兼容性问题。
方法2:安装CUDA 10.2安培架构兼容补丁
NVIDIA官方提供了CUDA 10.2的安培架构兼容补丁,安装后可让CUDA 10.2原生支持sm_80/sm_86算力,性能损失比方法1更小。补丁需要匹配你容器内CUDA 10.2的具体小版本安装,安装完成后重新编译项目依赖即可生效。
方法3:使用高版本CUDA兼容运行
大部分标注要求CUDA 10.2的项目都可以在CUDA 11.x环境下兼容运行,不需要强制降级到CUDA 10.2。你可以直接使用宿主机的CUDA 11.4环境运行项目,或者拉取匹配CUDA 11.x的nvidia-docker镜像,完全适配RTX 3080的sm_86架构,无兼容性问题。
内容的提问来源于stack exchange,提问作者Dongri
相关产品推荐
相关产品推荐

