【Bug解决】nvcc fatal : Unsupported gpu architecture ‘compute_86‘

报错描述

执行 pip install 'git+https://github.com/facebookresearch/detectron2.git' 安装 detectron2 遇到错误:

nvcc fatal   : Unsupported gpu architecture 'compute_86'

在这里插入图片描述
报错环境:

  • Linux:Ubuntu 18.04
  • GPU:NVIDIA GeForce RTX 3090
  • CUDA:11.0
  • Pytorch:1.10
  • Python:3.9
  • GCC:7.5.0

解决方案

错误原因: GPU 3090 算力是 8.6,而当前 CUDA 11.0 不支持算力 8.6。

解决方案: 设置环境变量,降低算力要求。

# 打开配置文件
vi ~/.bashrc
# 在配置文件中添加如下一行
export TORCH_CUDA_ARCH_LIST="8.0"  # 因为是CUDA11.0,对应的算力为8.0
# 保存后source更新
source ~/.bashrc

再次执行报错的安装命令,安装成功:
在这里插入图片描述
解决方案(目前不可行):将 CUDA 版本升级到支持算力 8.6 即可,但同时需要安装对应的PyTorch。在 CUDA官网 可以看到目前最新的 CUDA 版本是 11.6,表示支持算力 8.6 的 GPU。但是上 PyTorch官网 却看到目前 PyTorch 支持的 CUDA 最高版本是 11.3。因此这个办法暂时是不可行了,因为 PyTorch 还没有支持。
在这里插入图片描述

关于报错的原因解释

compute_86 是说当前 GPU 3090 的算力是 8.6,关于 GPU 算力和 CUDA 算力的关系是:

  • 算力 8.0 的显卡可以在最高支持算力 8.6 的 CUDA 下正常运行
  • 但算力 8.6 的显卡不能在最高支持算力 8.0 的 CUDA 下正常运行
  • 也就是说 CUDA 支持的最高算力要大于等于GPU本身的算力

关于版本问题:

  • 通常 CUDA 的最新版本要比 PyTorch 支持的 cuda 版本高,要注意
  • CUDA 10.x 最高支持算力为 7.x,CUDA 11.x 最高支持算力为 8.x
  • 44
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
### 回答1: 这个错误提示是因为您的GPU架构不被支持。您需要检查您的GPU型号和驱动程序是否支持CUDA编程。如果您的GPU支持CUDA编程,您需要升级您的GPU或选择一个支持GPU。如果您的GPU支持CUDA编程,您需要安装正确的驱动程序和CUDA工具包。 ### 回答2: "nvcc fatal : unsupported gpu architecture 'compute_30'"这个错误是因为在进行GPU编译时,使用的CUDA版本过旧,不支持计算能力为3.0(compute_30)的显卡架构。计算能力是显卡计算并行性能的指标,它取决于显卡架构和显卡内部的硬件资源(如SP,SFU等)。 要解决这个问题,可以选择更新使用的CUDA版本,使其支持计算能力为3.0的显卡架构。具体方法如下: 1.查看CUDA版本:可以在命令行中输入nvcc --version命令,查看当前CUDA版本号。 2.查看支持的显卡架构:可以在CUDA开发者文档中查找支持的显卡架构列表,确定当前CUDA版本是否支持计算能力为3.0的显卡架构。 3.更新CUDA版本:如果当前CUDA版本过旧,不支持计算能力为3.0的显卡架构,可以下载最新的CUDA版本进行更新。在更新时,需要注意当前系统所支持CUDA版本和显卡驱动版本。 4.修改编译选项:如果当前不方便更新CUDA版本,可以通过修改编译选项使得nvcc支持计算能力为3.0的显卡架构。具体方法是在编译代码时指定-gencode选项,如-gencode=arch=compute_30,code=sm_30,它的作用是可以将代码编译成适用于计算能力为3.0的显卡架构的机器码。 总之,解决这个问题的关键是要理解计算能力的概念,知道当前CUDA版本的支持情况,并且有选择地进行相应的更新或修改编译选项等操作。 ### 回答3: 这个错误是由于使用 Nvidia 编译器时选择的 GPU 架构版本不受支持所导致的。 首先,要理解什么是计算能力(compute capability)。计算能力是 Nvidia GPU 用于计算和执行 GPU 代码的能力。每个 GPU 都有不同的计算能力版本。计算能力是由架构决定的,并且不同的架构具有不同的计算能力版本。 当您使用 Nvidia 编译器编译代码时,您需要指定要使用的 GPU 架构版本。如果您指定了不受支持GPU 架构版本,则会出现“unsupported gpu architecture”错误。 在这种情况下,错误信息中指出的是“compute_30”,这表示您选择的 GPU 架构版本是 Kepler 架构,这是一个旧的 GPU 架构,并且不支持许多新的功能和指令。 为了解决这个问题,您需要使用支持GPU 的计算能力版本编译您的代码。首先,您需要确定您的 GPU 的计算能力版本。您可以使用 Nvidia 官方网站上提供的计算能力表确定您的 GPU 的计算能力版本。 接下来,您需要在编译代码时指定正确的计算能力版本。您可以使用以下命令指定计算能力版本: nvcc -arch=compute_{计算能力版本} -code=sm_{计算能力版本} your_file.cu 在这个命令中,您需要将“计算能力版本”替换为您 GPU 的计算能力版本。例如,如果您的 GPU 的计算能力版本为3.5,则命令应该是: nvcc -arch=compute_35 -code=sm_35 your_file.cu 或者,您可以使用以下命令指定计算能力版本和 GPU 架构: nvcc -gencode arch=compute_{计算能力版本},code=sm_{计算能力版本} your_file.cu 以上是关于“nvcc fatal: unsupported gpu architecture 'compute_30'”错误的解释和解决方法。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃饭就会放大招

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值