Как устранить ошибку «cudaSuccess = err (0 против 8)» на Paddle версии 0,8.0b?

#c #cuda #gpu #deep-learning #paddle-paddle

#c #cuda #графический процессор #глубокое обучение #paddle-весло

Вопрос:

Я установил paddlepaddle , используя .deb файл из https://github.com/baidu/Paddle/releases/download/V0.8.0b1/paddle-gpu-0.8.0b1-Linux.deb

У меня установлена CUDA 8.0 с cudnn версии 5,1 без NVIDIA Accelerated Graphics Driver установки на компьютере с 4 GTX 1080:

 $ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Sun_Sep__4_22:14:01_CDT_2016
Cuda compilation tools, release 8.0, V8.0.44
  

Я установил переменные оболочки:

 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
  

Все cuda работает нормально, так как я запустил все NVIDIA_CUDA-8.0_Samples , и они «ПРОШЛИ» все тесты.

quick_start Демонстрационный код Paddle/demo/quick_start также работает без сбоев и не выдает ошибку.

Но когда я попытался запустить image_classification демонстрационную версию из репозитория Paddle github, я получаю invalid device function сообщение об ошибке. Есть ли какой-нибудь способ решить эту проблему?

 hl_gpu_matrix_kernel.cuh:181] Check failed: cudaSuccess == err (0 vs. 8) [hl_gpu_apply_unary_op failed] CUDA error: invalid device function
  

Полная трассировка:

 ~/Paddle/demo/image_classification$ bash train.sh 
I1005 14:34:51.929863 10461 Util.cpp:151] commandline: /home/ltan/Paddle/binary/bin/../opt/paddle/bin/paddle_trainer --config=vgg_16_cifar.py --dot_period=10 --log_period=100 --test_all_data_in_one_period=1 --use_gpu=1 --trainer_count=1 --num_passes=200 --save_dir=./cifar_vgg_model 
I1005 14:34:56.705898 10461 Util.cpp:126] Calling runInitFunctions
I1005 14:34:56.706171 10461 Util.cpp:139] Call runInitFunctions done.
[INFO 2016-10-05 14:34:56,918 layers.py:1620] channels=3 size=3072
[INFO 2016-10-05 14:34:56,919 layers.py:1620] output size for __conv_0__ is 32 
[INFO 2016-10-05 14:34:56,920 layers.py:1620] channels=64 size=65536
[INFO 2016-10-05 14:34:56,920 layers.py:1620] output size for __conv_1__ is 32 
[INFO 2016-10-05 14:34:56,922 layers.py:1681] output size for __pool_0__ is 16*16 
[INFO 2016-10-05 14:34:56,923 layers.py:1620] channels=64 size=16384
[INFO 2016-10-05 14:34:56,923 layers.py:1620] output size for __conv_2__ is 16 
[INFO 2016-10-05 14:34:56,924 layers.py:1620] channels=128 size=32768
[INFO 2016-10-05 14:34:56,925 layers.py:1620] output size for __conv_3__ is 16 
[INFO 2016-10-05 14:34:56,926 layers.py:1681] output size for __pool_1__ is 8*8 
[INFO 2016-10-05 14:34:56,927 layers.py:1620] channels=128 size=8192
[INFO 2016-10-05 14:34:56,927 layers.py:1620] output size for __conv_4__ is 8 
[INFO 2016-10-05 14:34:56,928 layers.py:1620] channels=256 size=16384
[INFO 2016-10-05 14:34:56,929 layers.py:1620] output size for __conv_5__ is 8 
[INFO 2016-10-05 14:34:56,930 layers.py:1620] channels=256 size=16384
[INFO 2016-10-05 14:34:56,930 layers.py:1620] output size for __conv_6__ is 8 
[INFO 2016-10-05 14:34:56,932 layers.py:1681] output size for __pool_2__ is 4*4 
[INFO 2016-10-05 14:34:56,932 layers.py:1620] channels=256 size=4096
[INFO 2016-10-05 14:34:56,933 layers.py:1620] output size for __conv_7__ is 4 
[INFO 2016-10-05 14:34:56,934 layers.py:1620] channels=512 size=8192
[INFO 2016-10-05 14:34:56,934 layers.py:1620] output size for __conv_8__ is 4 
[INFO 2016-10-05 14:34:56,936 layers.py:1620] channels=512 size=8192
[INFO 2016-10-05 14:34:56,936 layers.py:1620] output size for __conv_9__ is 4 
[INFO 2016-10-05 14:34:56,938 layers.py:1681] output size for __pool_3__ is 2*2 
[INFO 2016-10-05 14:34:56,938 layers.py:1681] output size for __pool_4__ is 1*1 
[INFO 2016-10-05 14:34:56,941 networks.py:1125] The input order is [image, label]
[INFO 2016-10-05 14:34:56,941 networks.py:1132] The output order is [__cost_0__]
I1005 14:34:56.948256 10461 Trainer.cpp:170] trainer mode: Normal
F1005 14:34:56.949136 10461 hl_gpu_matrix_kernel.cuh:181] Check failed: cudaSuccess == err (0 vs. 8) [hl_gpu_apply_unary_op failed] CUDA error: invalid device function
*** Check failure stack trace: ***
    @     0x7fa557316daa  (unknown)
    @     0x7fa557316ce4  (unknown)
    @     0x7fa5573166e6  (unknown)
    @     0x7fa557319687  (unknown)
    @           0x78a939  hl_gpu_apply_unary_op<>()
    @           0x7536bf  paddle::BaseMatrixT<>::applyUnary<>()
    @           0x7532a9  paddle::BaseMatrixT<>::applyUnary<>()
    @           0x73d82f  paddle::BaseMatrixT<>::zero()
    @           0x66d2ae  paddle::Parameter::enableType()
    @           0x669acc  paddle::parameterInitNN()
    @           0x66bd13  paddle::NeuralNetwork::init()
    @           0x679ed3  paddle::GradientMachine::create()
    @           0x6a6355  paddle::TrainerInternal::init()
    @           0x6a2697  paddle::Trainer::init()
    @           0x53a1f5  main
    @     0x7fa556522f45  (unknown)
    @           0x545ae5  (unknown)
    @              (nil)  (unknown)
/home/xxx/Paddle/binary/bin/paddle: line 81: 10461 Aborted                 (core dumped) ${DEBUGGER} $MYDIR/../opt/paddle/bin/paddle_trainer ${@:2}
No data to plot. Exiting!
  

Согласно выпуску # 158 репозитория git, эта проблема должна быть решена в # 170 и поддерживает GTX 1080 с CUDA 8.0, но она по-прежнему выдает ошибки при доступе к функциям графического процессора. (извините, не могу добавить более 2 ссылок с низкой репутацией)

Кто-нибудь знает, как решить эту проблему и установить ее так, чтобы image_classification она могла работать?


Я также пробовал компиляцию установку из исходного кода, и quick_start во время бесперебойной работы демонстрации выдается та же ошибка.

Комментарии:

1. Что ж, у вас есть два основных варианта: изучить C , начать копаться в исходном коде, найти ошибку и исправить ее. Вариант номер два — отправить отчет об ошибке и подождать.

2. Я не думаю, что это ошибка C . hl_create_global_resources() предполагается, что это связано с cuda.

3. Я могу тривиально взломать какой-нибудь код, который где-то внутри приведет к сбою libstdc . Это не будет ошибка библиотеки. Добро пожаловать на C .

4. Есть ли у вас графический процессор CUDA на этой машине? Почему вы говорите «без драйвера ускоренной графики NVIDIA»? Вы намеренно не установили драйвер? Правильная установка CUDA включает в себя этап проверки. Вы убедились, что CUDA установлена правильно, создав и запустив несколько примеров кодов?

5. Да, у меня есть 4 графических процессора на этой машине. Без ускоренной графики nvidia, поскольку она несовместима с конфигурациями xserver в ubuntu. Кроме того, моя машина с CUDA 7.5 работает с tensorflow, и пример кода на 8.0 из CUDA также выполняется. Просто paddle-paddle двоичные файлы, похоже, не работают.

Ответ №1:

Проблема связана с флагами, установленными для архитектуры в Paddle/cmake/flags.cmake for CUDA 8.0.

Она была решена в https://github.com/baidu/Paddle/pull/165/files путем добавления compute_52 , sm_52 и compute_60 и sm_60

Ответ №2:

Я ничего не знаю о paddle. Однако ошибка CUDA почти наверняка вызвана установленным вами двоичным файлом, не содержащим кода для вашего (довольно нового) GTX1080. Либо найдите версию с поддержкой графических процессоров Pascal, либо создайте свою собственную версию из исходного кода.