2017-08-25 183 views
0

我使用的是Nvidia GeForce GTX 1080,它需要Cuda 8.0。儘管如此,從實驗中,我發現它與Cuda 7.5的配合良好,但是當我的網絡有一個丟失層時出現錯誤。在另一方面,當我使用的Cuda 8.0,我得到的錯誤:在GTX 1080上編譯Caffe與Cuda 8.0

./build/tools/caffe: error while loading shared libraries: libcudart.so.7.5: cannot open shared object file: No such file or directory 

我認爲這個問題可能是我編了來自Caffe使用CUDA 7.5及以下CUDA_ARCH參數。

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_50,code=sm_50 \ 
    -gencode arch=compute_50,code=compute_50 

當我使用這些參數,並嘗試使用CUDA 8.0編譯,我得到以下錯誤:

make: *** No rule to make target `/usr/local/cuda/include/thrust/detail/type_traits/result_of.h', needed by `.build_release/cuda/src/caffe/layers/softmax_layer.o'. Stop. 

你認爲這是什麼問題?如果是,Cuda 8.0和GTX 1080的參數CUDA_ARCH是否正確。如果不是,那麼問題是什麼?

回答

0

的解決方案就是:

make clean 
make all 

而且我用下面的CUDA_ARCH參數:

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_50,code=sm_50 \ 
    -gencode arch=compute_50,code=compute_50 
    -gencode=arch=compute_52,code=sm_52 \ 
    -gencode=arch=compute_52,code=compute_52 \ 
    -gencode=arch=compute_60,code=sm_60 \ 
    -gencode=arch=compute_61,code=sm_61 \ 
0

您還沒有正確的NVIDIA NVCC SM標誌編譯CUDA的GTX1080(SM架構61)。

您應該將-gencode=arch=compute_61,code=sm_61添加到您的CUDA_ARCH參數中並重新編譯。