Ubuntu 14.04 + cudnn8.0

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:

  1. 官网有说明cuDNN Install Guide
PREREQUISITES
    ... a GPU of compute capability 3.0 or higher are required.
  1. 在查看Compute Capability这一项时,请注意,左侧的是:..Desktop Products,右侧的是Notebook Products, 就是台式机和笔记本的区别。
    Ubuntu 14.04 + cudnn8.0_第1张图片
    GPU.png
  • 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文件)

    Ubuntu 14.04 + cudnn8.0_第2张图片
    cuDNN.png

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的注释加上

你可能感兴趣的:(Ubuntu 14.04 + cudnn8.0)