【问题标题】:Unsupported gpu architecture compute_30 on a CUDA 5 capable gpu支持 CUDA 5 的 gpu 上不受支持的 gpu 架构 compute_30
【发布时间】:2021-02-22 17:23:23
【问题描述】:

我目前正在尝试在最新的 CUDA 工具包 11.1 上编译 Darknet。我有一个能够运行 CUDA 版本 5 的 GPU,它是 GeForce 940M。但是,在使用最新的 CUDA 工具包重建暗网时,它说

nvcc 致命:不支持的 GPU 架构“compute_30”

compute_30 适用于版本 3,而我的 GPU 可以运行版本 5,它怎么会失败 我的代码是否有可能检测到我的英特尔显卡而不是我的 Nvidia GPU?如果是这样,是否可以改变它的检测?

【问题讨论】:

  • 您的暗网构建工具将需要更改以删除对 compute_30 的引用,以便它可以与 CUDA 11.x 一起使用。 CUDA 11.x 不再支持计算能力 3.0。此特定错误与您拥有的 GPU 无关(这是编译时问题,编译过程不依赖于特定 GPU)。

标签: cuda nvidia yolo nvcc darknet


【解决方案1】:

已删除对 compute_30 的支持 versions after CUDA 10.2。因此,如果您使用的是 nvcc,请确保使用此标志来针对暗网构建系统中的正确架构

-gencode=arch=compute_50,code=sm_50

您可能还需要使用它来避免架构已弃用的警告。

-Wno-deprecated-gpu-targets 

【讨论】:

  • 虽然观察正确,但这如何回答问题?应该怎么做才能解决问题?
  • 对于其他阅读此问题并回答 @talonmies 评论的人,您应该在 Makefile 的某处找到对 compute_30 的引用。您可以将其替换为compute_50。以暗网为例,compute_20 已被注释掉:# -gencode arch=compute_20,code=[sm_20,sm_21] \ This one is deprecated?。您可以对 compute_30 执行相同操作以将其注释掉,因为指定了其他 compute_## 标志将取代它(compute_35compute_50compute_52)。
【解决方案2】:

我添加了以下内容:

makefiletemp = open('Makefile','r+') 
list_of_lines = makefiletemp.readlines()
list_of_lines[15] = list_of_lines[14]
list_of_lines[16] = "ARCH= -gencode arch=compute_35,code=sm_35 \\\n"

makefiletemp = open('Makefile','w')
makefiletemp.writelines(list_of_lines)
makefiletemp.close()

就在 #编译暗网

!make

命令。这似乎行得通!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 2021-12-20
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多