CAFFE:使用GPU(GeForce GTX 970)时Cuda Error“(8 vs. 0)无效设备功能”?

时间:2015-10-22 08:29:32

标签: cuda gpu-programming caffe

我正在尝试在GTX 970上运行CNN网络“CAFFE”。但我收到了标题中提到的错误。

有人可以帮忙吗?

我发布了关于caffe组的更多细节的问题,但未收到任何提示/答案!

https://groups.google.com/forum/#!topic/caffe-users/sVOfE0qhf_M

更新1

在我的Makefile.config中,我添加了-gencode arch=compute_52,code=compute_52

CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
        -gencode arch=compute_20,code=sm_21 \
        -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=compute_50 \
        -gencode arch=compute_52,code=compute_52     

但是当我尝试制作时,它会返回:

$make
NVCC src/caffe/layers/cudnn_sigmoid_layer.cu
nvcc fatal   : Unsupported gpu architecture 'compute_52'
Makefile:531: recipe for target '.build_release/cuda/src/caffe/layers/cudnn_sigmoid_layer.o' failed
make: *** [.build_release/cuda/src/caffe/layers/cudnn_sigmoid_layer.o] Error 1

更新2

NCC版本是:

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2014 NVIDIA Corporation
Built on Thu_Jul_17_21:41:27_CDT_2014
Cuda compilation tools, release 6.5, V6.5.12

更新3

我正在使用带有346.96驱动程序的CUDA 6.5

libcuda1-346
/.
/usr
/usr/lib
/usr/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu/libcuda.so
/usr/lib/i386-linux-gnu/libcuda.so.1
/usr/lib/i386-linux-gnu/libcuda.so.346.96
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libcuda.so
/usr/lib/x86_64-linux-gnu/libcuda.so.1
/usr/lib/x86_64-linux-gnu/libcuda.so.346.96
/usr/share
/usr/share/doc
/usr/share/doc/libcuda1-346
/usr/share/doc/libcuda1-346/changelog.Debian.gz
/usr/share/doc/libcuda1-346/copyright


libcudart6.5
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libcudart.so.6.5
/usr/lib/x86_64-linux-gnu/libcudart.so.6.5.14
/usr/share
/usr/share/doc
/usr/share/doc/libcudart6.5
/usr/share/doc/libcudart6.5/changelog.Debian.gz
/usr/share/doc/libcudart6.5/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libcudart6.5

更新4

我发现here(页面是德语)Ubuntu 15.04仅支持NVidia GPU,直到800系列。 我现在正在做的是将Ubuntu更新到15.10,其中NVidia驱动程序版本“nvidia-352”可用于支持Geforce GTX 970。

我会在这里公布结果。

更新5

它更新到Ubuntu 15.10。这与GCC 5.2一起提供,但CAFFE仅接受4.9以下的版本。 我安装了g ++ 4.8并行到现有的我已经将编译器设置为cmake中的“g ++ - 4.8”...

更新6

现在错误读取

[  1%] Built target proto
[  1%] Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/util/cuda_compile_generated_math_functions.cu.o
nvcc fatal   : Unsupported gpu architecture 'compute_52'
CMake Error at cuda_compile_generated_math_functions.cu.o.cmake:206 (message):
  Error generating
  /home/art/Downloads/caffe-master-build/src/caffe/CMakeFiles/cuda_compile.dir/util/./cuda_compile_generated_math_functions.cu.o


src/caffe/CMakeFiles/caffe.dir/build.make:375: recipe for target 'src/caffe/CMakeFiles/cuda_compile.dir/util/cuda_compile_generated_math_functions.cu.o' failed
make[2]: *** [src/caffe/CMakeFiles/cuda_compile.dir/util/cuda_compile_generated_math_functions.cu.o] Error 1
CMakeFiles/Makefile2:218: recipe for target 'src/caffe/CMakeFiles/caffe.dir/all' failed
make[1]: *** [src/caffe/CMakeFiles/caffe.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
make: *** [all] Error 2

更新7

我的下一次尝试:

1)安装Ubuntu 15.04

2)安装CUDA 7.5 directly from nVidia

3)安装cuDNN 7.0

4)安装CAFFE

终于有效!!

1 个答案:

答案 0 :(得分:8)

每当CUDA运行时API返回"无效的设备功能"时,就意味着您正在使用的代码不是为您尝试运行它的架构而构建的(并且不会有一个JIT路径)。

您可能需要检查您的CAFFE Makefile.config,确保为CUDA_ARCH -gencode arch=compute_52,code=compute_52 <? echo round($cena*(20/100)+$cena, 2);?> 确保设置正确的架构。

由于您使用的是计算能力52设备,因此必须在GPU上使用CUDA 7或更高版本。您正在使用的CUDA 6.5工具包无法为您的GPU生成代码,并且CUDA 6.5驱动程序无法将较低的计算能力代码重新编译为可在GPU上运行的代码。这对您的硬件来说是不可妥协的要求。

解决方案在上面的帖子中的更新7下