我正在尝试在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
终于有效!!
答案 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下