2016-10-04 101 views
0

我已經使用.deb文件從https://github.com/baidu/Paddle/releases/download/V0.8.0b1/paddle-gpu-0.8.0b1-Linux.deb如何解決Paddle v0.8.0b上的「cudaSuccess = err(0 vs. 8)」錯誤?

安裝paddlepaddle我有CUDA 8.0 cudnn V5.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也運行平穩,沒有發生錯誤。

但是,當我試圖從Paddle github repo運行image_classification演示時,出現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,這個問題應該可以解決在#170,並支持GTX 1080 CUDA 8.0,但訪問時,它仍然引發錯誤GPU功能。 (對不起,不能添加2個以上的信譽低的鏈接)

有誰知道如何解決這個問題,並安裝它,使image_classification可以運行?


我自己也嘗試從源代碼編譯+安裝和而quick_start演示運行順利拋出同樣的錯誤。

+1

那麼你有兩個基本的選擇解決:學C++,開始通過源代碼採摘,找到了這個錯誤,並修復它。選項二是提交錯誤報告,然後等待。 –

+0

我不認爲這是一個C++錯誤。 'hl_create_global_resources()'表明這是一個與cuda有關的東西。 –

+1

我可以平凡地破解一些會在'libstdC++'內部崩潰的代碼。它不會是一個庫錯誤。歡迎來到C++。 –

回答

1

我對槳一無所知。但是,CUDA錯誤幾乎可以肯定是由於您安裝的二進制文件不包含您的(相當新的)GTX1080代碼而導致的。要麼找到支持Pascal GPU的版本,要麼從源代碼構建自己的版本。