在GTX 1080上使用Cuda 8.0编译Caffe

在GTX 1080上使用Cuda 8.0编译Caffe,caffe,Caffe,我使用的是Nvidia GeForce GTX 1080,它需要Cuda 8.0。尽管如此,从实验中,我发现它与Cuda 7.5配合得很好,但当我的网络有一个退出层时,就会出现错误。另一方面,当我使用Cuda 8.0时,我得到错误: ./build/tools/caffe: error while loading shared libraries: libcudart.so.7.5: cannot open shared object file: No such file or director

我使用的是Nvidia GeForce GTX 1080,它需要Cuda 8.0。尽管如此,从实验中,我发现它与Cuda 7.5配合得很好,但当我的网络有一个退出层时,就会出现错误。另一方面,当我使用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
我假设问题可能是我使用Cuda 7.5和以下
Cuda_ARCH
参数编译了Caffe

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的正确参数是什么。如果没有,问题是什么?

解决方案是:

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 \
解决办法是:

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 \

您尚未包含正确的NVIDIA nvcc sm标志,无法为GTX1080(sm体系结构61)编译CUDA


您应该将
-gencode=arch=compute_61,code=sm_61
添加到您的
CUDA_arch
参数并重新编译。

您没有包含正确的NVIDIA nvcc sm标志来编译GTX1080(sm架构61)的CUDA

您应该将
-gencode=arch=compute\u 61,code=sm\u 61
添加到
CUDA\u arch
参数并重新编译