我正在使用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
参数是什么。如果不是,问题是什么?
答案 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
参数并重新编译。