about
声明: 此文并非原创,我只是个搬运工罢了(尽做些Ctrl+C, Ctrl+V的工作)。作为一个小白,只是为了方便日后学习。如得罪版权,请多多包含。感谢下面大神劳助。
本博文参考了
autocyz 的Ubuntu16.04+cuda8.0+caffe安装教程
Hungryof的 linux替换cudnn版本
AbsentM's的64位Ubuntu 14.04 LTS + Caffe + CUDA 7.5 + Opencv 3.0 安装配置实战
Doral的Caffe安装问题汇总
github的fatal error: caffe/proto/caffe.pb.h: No such file or directory #105
0. Pre-Installation
- 0.1. 先到NVIDIA官网查看,Compute Capability这项是否达到了3.0,如果不是,那么不用装了,下面的不用看了。
!Note:
- 官网有说明cuDNN Install Guide:
PREREQUISITES
... a GPU of compute capability 3.0 or higher are required.
- 在查看Compute Capability这一项时,请注意,左侧的是:..Desktop Products,右侧的是Notebook Products, 就是台式机和笔记本的区别。
0.2 已装好了 cuda8.0,可查看教程Ubuntu 14.04安装CUDA-8.0
-
0.3到NVIDIA官网注册填个问卷然后下载对应版本的cudnn(本文选的是cuDNN v5.1 Library for Linux, 下早到的是一个cudnn-8.0-linux-x64-v5.1.tgz文件)
1. Installation
- 解压
$ tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
$ cd cuda
$ sudo cp lib64/* /usr/local/cuda/lib64/
$ sudo cp include/cudnn.h /usr/local/cuda/include/
- 更新软连接:
$ sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
$ sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
$ sudo ln -s libcudnn.so.5 libcudnn.so
!Note: 可能遇到的问题:
- 之前安装了某个cuDNN的版本,想替换为新的: 解决方法是删除掉原先的,重新装新的cuDNN
删除旧的
$ cd /usr/local/cuda/lib64
$ sudo rm libcudnn*
然后再按照上述方法安装新的
- 可用
ll
命令查看那些软连接
$ cd /usr/local/cuda/lib64
$ ll | grep libcudnn
lrwxrwxrwx 1 root root 13 12月 1 23:12 libcudnn.so -> libcudnn.so.5*
lrwxrwxrwx 1 root root 17 12月 1 23:11 libcudnn.so.5 -> libcudnn.so.5.1.5*
-rwxr-xr-x 1 root root 79337624 12月 1 23:09 libcudnn.so.5.1.5*
-rw-r--r-- 1 root root 69756172 12月 1 23:09 libcudnn_static.a
2 Post-Installation
- 编译caffe
在~/caffe/Makefile.config
中,去掉USE_CUDNN := 1
的注释
执行
$ make clean # 第一次编译不用这句,出错时也可使用这句。
$ make all
$ make test
$ make runtest
!Note: 可能遇到的错误
- 在执行
$ make all
时遇到
error:‘CUDNN_POOLING_AVERAGE_COUNT_INCLUDE_PADDING’ was not declared in this scope
是因为当前的cuDNN版本过低,请自行下行高版本的,再重新装一遍。
- 在执行
$ make runtest
时遇到
error:
./include/caffe/util/cudnn.hpp:8:34: fatal error: caffe/proto/caffe.pb.h: No such file or directory
#include "caffe/proto/caffe.pb.h"
解决方法:
# 当前目录为caffe,如不是,执行cd caffe
$ protoc src/caffe/proto/caffe.proto --cpp_out=.
$ mkdir include/caffe/proto
$ mv src/caffe/proto/caffe.pb.h include/caffe/proto
再重新编译
$ make clean
$ make all
$ make test
$ make runtest
- 在执行
$ make runtest
时遇到
error:
.build_release/tools/caffe
make: .build_release/tools/caffe: Command not found
make: *** [runtest] Error 127
那是因为先前没有执行make all
,make test
造成的,不要偷懒,在遇到上面的错误时,执行
$ make clean
$ make all
$ make test
$ make runtest
- 在执行
$ make runtest
时遇到
F1202 12:26:03.474925 16455 cudnn_softmax_layer.cpp:15] Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0) CUDNN_STATUS_ARCH_MISMATCH
*** Check failure stack trace: ***
@ 0x2b5817a9cdaa (unknown)
@ 0x2b5817a9cce4 (unknown)
@ 0x2b5817a9c6e6 (unknown)
@ 0x2b5817a9f687 (unknown)
@ 0x2b581bca72b5 caffe::CuDNNSoftmaxLayer<>::LayerSetUp()
@ 0x2b581bd6b6a7 caffe::SoftmaxWithLossLayer<>::LayerSetUp()
@ 0x2b581bdf870c caffe::Net<>::Init()
@ 0x2b581bdf9d4b caffe::Net<>::Net()
@ 0x5ac4a0 caffe::NetTest<>::InitNetFromProtoFileWithState()
@ 0x561c8b caffe::NetTest<>::InitAllInOneNet()
@ 0x578ad0 caffe::NetTest_TestAllInOneNetVal_Test<>::TestBody()
@ 0x8fd933 testing::internal::HandleExceptionsInMethodIfSupported<>()
@ 0x8f4617 testing::Test::Run()
@ 0x8f46be testing::TestInfo::Run()
@ 0x8f47c5 testing::TestCase::Run()
@ 0x8f7b08 testing::internal::UnitTestImpl::RunAllTests()
@ 0x8f7d97 testing::UnitTest::Run()
@ 0x46ccff main
@ 0x2b581ccb0f45 (unknown)
@ 0x474979 (unknown)
@ (nil) (unknown)
make: *** [runtest] Aborted (core dumped)
是因为你的N卡的GPU的Compute Capability低于3.0,不符合cuDNN的硬件要求,这时,不用装cuDNN了,把在~/caffe/Makefile.config
中的 USE_CUDNN := 1
的注释加上