不支持在CUDA 5兼容的GPU上使用compute_30 GPU架构。

17

我目前正在尝试在最新的CUDA工具包(版本11.1)上编译Darknet。我的GPU支持运行CUDA 5,是一款GeForce 940M显卡。然而,在使用最新的CUDA工具包重新构建Darknet时,出现以下错误:

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

由于compute_30适用于3.0版本,但我的GPU可以运行版本5,所以为什么会失败呢?是否可能我的代码检测到了我的英特尔集成显卡而不是我的Nvidia GPU?如果是这种情况,是否可以更改其检测方式?


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

32

CUDA 10.2版本之后,已经取消了对compute_30的支持。因此,如果您正在使用nvcc,请确保在构建系统中使用此标志来针对正确的架构。

-gencode=arch=compute_50,code=sm_50

你可能需要使用这个{{one}}来避免架构已过时的警告。

-Wno-deprecated-gpu-targets 

虽然这是一个正确的观察,但它如何回答问题?应该采取什么措施来解决这个问题? - talonmies
3
对于其他读者和回答@talonmies的评论,你应该在Makefile中找到一个关于compute_30的引用。你可以将其替换为compute_50。 以darknet为例,compute_20已经被注释掉了:# -gencode arch=compute_20,code=[sm_20,sm_21] \ This one is deprecated?。你也可以这样做,将compute_30注释掉,因为还有其他指定的compute_##标志将取代它(compute_35compute_50compute_52)。 - Matt Popovich

1
我添加了以下内容:

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()

在#Compile Darknet之前

!make

命令。看起来有效!


那是编辑文件的一种方式! - Sam Watkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接