问题解决:nvcc fatal : Unsupported gpu architecture ‘compute_75‘

问题解决:nvcc fatal : Unsupported gpu architecture 'compute_75'

本机环境

  • Ubuntu16.04
  • RTX 2080Ti(算力7.5)
  • Cuda9.0.176
  • Cudnn7.6.5
  • Pytorch1.0.0

问题描述

最近尝试跑插帧的代码DAIN,在安装pytorch扩展的相关依赖时报错:

nvcc fatal   : Unsupported gpu architecture 'compute_75'
error: command '/usr/local/cuda-9.0/bin/nvcc' failed with exit status 1

问题分析

从上面报错看是说不支持算力7.5的GPU架构,但是代码readme说可以修改以适配:
在这里插入图片描述
但是因为刚上手pytorch,一时半会不知道如何修改设置,
看了github上相关的一些讨论:

发现一个网友的解决方案与本人的比较相符,而且参考代码DAIN/my_package/compiler_args.py文件和Matching CUDA arch and CUDA gencode for various NVIDIA architectures中的描述,Titan RTX和本人的RTX 2080Ti是同一种Turing架构,算力都是7.5。就决定参照着该网友的回答修改setup.py文件中的nvcc_args

#!/usr/bin/env python3
import os
import torch

from setuptools import setup,find_packages
from torch.utils.cpp_extension import BuildExtension,CUDAExtension

from compiler_args import nvcc_args,cxx_args
nvcc_args = [ '-gencode', 'arch=compute_75,code=sm_75', '-gencode', 'arch=compute_75,code=compute_75' ]##修改参数  20201206
setup(
    name='depthflowprojection_cuda',
    ext_modules=[
        CUDAExtension('depthflowprojection_cuda', [
            'depthflowprojection_cuda.cc',
            'depthflowprojection_cuda_kernel.cu'
        ], extra_compile_args={'cxx': cxx_args, 'nvcc': nvcc_args})
    ],
    cmdclass={
        'build_ext': BuildExtension
    })

但是运行了还是报错:nvcc fatal : Unsupported gpu architecture 'compute_75'
无奈,只好又google了下:
发现nvcc fatal : Unsupported gpu architecture 'compute_75’中有个老哥的回答也是2080Ti,而且他解决了:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GvEAOqka-1607325696767)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201207110246136.png)]
我就按着compute_70的来修改,居然OK了

#!/usr/bin/env python3
import os
import torch

from setuptools import setup,find_packages
from torch.utils.cpp_extension import BuildExtension,CUDAExtension

from compiler_args import nvcc_args,cxx_args
#nvcc_args = [ '-gencode', 'arch=compute_75,code=sm_75', '-gencode', 'arch=compute_75,code=compute_75' ]##修改参数  20201206
nvcc_args = ['--gpu-architecture=compute_70','--gpu-code=sm_70' ]##修改参数  20201207
setup(
    name='depthflowprojection_cuda',
    ext_modules=[
        CUDAExtension('depthflowprojection_cuda', [
            'depthflowprojection_cuda.cc',
            'depthflowprojection_cuda_kernel.cu'
        ], extra_compile_args={'cxx': cxx_args, 'nvcc': nvcc_args})
    ],
    cmdclass={
        'build_ext': BuildExtension
    })

问题解决

简单来说就是修改所有有用到的setup.py文件中的nvcc_args,对于GPU是RTX 2080Ti的用户那就修改成compute_70对应的参数。

  • 猜想
    compute_75应该适用于Turing架构的RTX 2080Ti才对的,我猜可能是我CUDA并非2080Ti可用最高版本10.0的原因,如果我的CUDA版本是10.0,用compute_75应该是OK的。而本机器现在的CUDA是9.0,应匹配compute_70。
  • 另一种解决方案就是升级CUDA了吧,将我的9.0升到10.0,但是比较麻烦,就放弃了

参考

[1] DAIN
[2] CUDA error trying to run demo following requirements
[3] Colab compatibility improvements
[4] Unclear installation description
[5] Matching CUDA arch and CUDA gencode for various NVIDIA architectures
[6] nvcc fatal : Unsupported gpu architecture ‘compute_75’
[7] nvcc fatal : Unsupported gpu architecture ‘compute_75’

码字不易,如果您觉得有帮助,欢迎点赞和收藏~~

  • 18
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答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'”错误的解释和解决方法。希望能对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值