CAFFE: ошибка Cuda "(8 против 0) недопустимая функция устройства" при использовании графического процессора (GeForce GTX 970)?

Я пытаюсь запустить сеть CNN "CAFFE" на GTX 970. Но я получаю ошибку, упомянутую в названии.

Может кто-нибудь помочь?

Я опубликовал проблему с более подробной информацией о группе кафе, но не получил никаких подсказок / ответов!

https://groups.google.com/forum/

обновление 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

Я использую CUDA 6.5 с драйвером 346.96

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

Я обнаружил здесь (страница на немецком языке), что Ubuntu 15.04 поддерживает графические процессоры NVidia только до 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 прямо из nVidia

3) Установите cuDNN 7.0

4) установить CAFFE

это, наконец, сработало!!

1 ответ

Решение

Всякий раз, когда API среды выполнения CUDA возвращает "Неверная функция устройства", это означает, что вы используете код, который не был создан для архитектуры, на которой вы пытаетесь его запустить (и не имеет пути JIT).

Вам, вероятно, нужно проверить свой КАФЕ Makefile.config чтобы убедиться, что он установлен для правильной архитектуры, убедившись, что CUDA_ARCH включает в себя -gencode arch=compute_52,code=compute_52,

Поскольку вы используете устройство с возможностью вычислений 52, вы должны использовать CUDA 7 или более новую версию с вашим графическим процессором. Набор инструментов CUDA 6.5, который вы используете, не может генерировать код для вашего GPU, а драйвер CUDA 6.5 не может JIT перекомпилировать код с более низкой вычислительной способностью во что-то, что будет работать на вашем GPU. Это не подлежит обсуждению требование для вашего оборудования.

Решение находится в обновлении 7 в посте выше

Другие вопросы по тегам