使用Cuda 8.0在GTX 1080上编译Caffe

时间:2017-08-25 06:34:25

标签: 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 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的正确CUDA_ARCH参数是什么。如果不是,问题是什么?

2 个答案:

答案 0 :(得分: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 \

答案 1 :(得分:0)

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

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