caffe学习之一:caffe安装

来源:互联网 发布:易了千明编程论坛 编辑:程序博客网 时间:2024/06/10 00:42

该博客主要依据如下博客编写,非常感谢这位博主的分享,作者只是根据这个总结了一些步骤,如果中间有什么错误欢迎各位大佬来赐教和讨论
Ubuntu16.04+cuda8.0+caffe安装教程

系统配置

  • 操作系统: Ubuntu Server 16.04.3 LTS(64bit)
  • Cuda版本:8.0.44
  • cuDNN版本:5.1
  • OpenCV版本:3.3.1

一、Ubuntu安装

安装Ubuntu Server 16.04 LTS 版本,该版本只有64位版本。

二、Nvidia显卡驱动安装

1.安装

首先在Terminal模式下安装所需的依赖包,其实这两个包好像在安装完显卡后也能安装,不过我也不太清楚,就提前装了吧,反正没啥影响。

sudo apt-get install mesa-common-devsudo apt-get install freeglut3-dev

显卡安装有如下两种安装方式,第一种是使用Linux终端来安装,第二种则是去英伟达的显卡官网查找适合自己的显卡驱动,下载安装文件并在Linux下运行安装驱动。

无论哪种安装方式,都最好先去官网查看与自己显卡型号相符的驱动版本。
Download Drivers | NVIDIA

  1. 选择与自己显卡相符的型号(比如我要查找在Linux下要用的GeForce GTX1070显卡的驱动版本),点击SEARCH按钮
    这里写图片描述
  2. 如下图,即为显卡驱动型号。可以在Terminal中查找该版本的驱动并使用apt-get安装,也可以点击DOWNLOAD按钮直接下载可执行文件
    这里写图片描述

(1)Terminal安装

sudo add-apt-repository ppa:graphics-drivers/ppasudo apt-get updatesudo apt-get install nvidia-384

【备注】 有的显卡在这找到的版本号跟实际安装可能有点区别,在安装前可以先使用如下命令查找有没有对应型号的驱动:

sudo apt-cache search nvidia-3

比如我的电脑搜索结果就有这些:

nvidia-304-dev - NVIDIA binary Xorg driver development files
nvidia-331 - Transitional package for nvidia-331
nvidia-331-dev - Transitional package for nvidia-340-dev
nvidia-331-updates - Transitional package for nvidia-340
nvidia-331-updates-dev - Transitional package for nvidia-340-dev
nvidia-331-updates-uvm - Transitional package for nvidia-340
nvidia-331-uvm - Transitional package for nvidia-340
nvidia-340-dev - NVIDIA binary Xorg driver development files
nvidia-340-updates - Transitional package for nvidia-340
nvidia-340-updates-dev - Transitional package for nvidia-340-dev
nvidia-340-updates-uvm - Transitional package for nvidia-340-updates
nvidia-340-uvm - Transitional package for nvidia-340
nvidia-346 - Transitional package for nvidia-346
nvidia-346-dev - Transitional package for nvidia-352-dev
nvidia-346-updates - Transitional package for nvidia-346-updates
nvidia-346-updates-dev - Transitional package for nvidia-352-updates-dev
nvidia-352 - Transitional package for nvidia-361
nvidia-352-dev - Transitional package for nvidia-361-dev
nvidia-352-updates - Transitional package for nvidia-361
nvidia-352-updates-dev - Transitional package for nvidia-361-dev
nvidia-361-updates - Transitional package for nvidia-361
nvidia-361-updates-dev - Transitional package for nvidia-361-dev
nvidia-304-updates - Transitional package for nvidia-304
nvidia-304-updates-dev - Transitional package for nvidia-304-dev
nvidia-361 - Transitional package for nvidia-367
nvidia-361-dev - Transitional package for nvidia-367-dev
nvidia-367 - Transitional package for nvidia-375
nvidia-367-dev - Transitional package for nvidia-375-dev
nvidia-375 - Transitional package for nvidia-384
nvidia-375-dev - Transitional package for nvidia-384-dev
nvidia-384 - NVIDIA binary driver - version 384.90
nvidia-384-dev - NVIDIA binary Xorg driver development files
nvidia-304 - NVIDIA legacy binary driver - version 304.137
nvidia-340 - NVIDIA binary driver - version 340.104
nvidia-378-dev - NVIDIA binary Xorg driver development files
nvidia-378 - NVIDIA binary driver - version 378.13
nvidia-381-dev - NVIDIA binary Xorg driver development files
nvidia-381 - NVIDIA binary driver - version 381.22
nvidia-387-dev - NVIDIA binary Xorg driver development files
nvidia-387 - NVIDIA binary driver - version 387.12

注意看加粗那行刚好是对应我的显卡版本型号。因此我安装时对应包名为nvidia-384

(2)下载可执行文件然后安装

①下载的可执行文件名称应该是

NVIDIA-Linux-x86_64-384.90.run

②将它拷贝到Linux任意目录下,然后添加执行权限

chmod a+x NVIDIA-Linux-x86_64-384.90.run

③运行安装文件,开始安装驱动

./NVIDIA-Linux-x86_64-384.90.run

2.测试

输入命令,如果显示如下图信息,则说明安装成功。

nivdia-smi

Nivdia显卡信息

三、安装Cuda 8.0.44

1.下载

由于写这篇总结文章时NVIDIA官网好像在维护,其实作者也是彩笔,所以就去百度网盘里找了一个来用了,等以后有时间了再来总结如何去官网下载吧。这是作者保存在自己网盘中的文件,打开后可以直接下载。
cuda_8.0.44_linux.run 百度网盘链接

2.安装

先安装俩库文件(此处依然是卵用都不知道为什么系列[尴尬]),反正我的没装时它就提示缺少这俩

sudo apt-get install libxi-dev libxmu-dev

然后使用终端来打开运行程序

sudo sh cuda_8.0.44_linux.run

安装过程中需要输入的地方应该就以下几点,用黄色序号标记的位置的说明见图片底下(此处为什么显示cuda9.0呢,因为当时作者装过一次9.0版本的,结果后边遇到一个compute_20有关的错误,这个待会讲,然后作者以为是cuda版本问题,结果并不是[哭])。这个图也是在9.0时截取的,不过没关系,你会发现8.0除了把9.0几个字符换成了8.0之外,没有任何区别。。。。。
这里写图片描述

  1. 在开始会有一大段安装协议啥的,反正一直按空格到最后输入accept就行了
  2. 提示你要不要安装显卡驱动,咱还是输入n吧,不然之前的白装了,虽然此处网上有人说重复装了还是可以用的,可能需要重启一下才能让新的生效,不过咱还是别冒险和浪费时间了。
  3. 问你要不要安装CUDA工具包,咱是来干啥的,为什么不装,当然y
  4. 工具包安装位置,此处我选择默认,所以就直接ENTER
  5. 此处是因为按回车按快了所以有两个重复的,问你要不要装一个符号链接,这个什么意思呢,符号链接就不说了,类似于Windows的快捷方式,你选择y之后,它会在安装目录下生成一个符合链接,名称叫做cuda,指向目录cuda-9.0,所以/usr/local/下会有如下两个目录:
    链接目录
    这样方便其他软件引用cuda,这种方式在Linux中很常见,这样可以避免版本更新时引起的修改麻烦的问题。
  6. 是否安装测试用例。这个不是必需的,它只是用来测试你的cuda是否安装成功用的,内中是一大堆的cpp文件,用make可以编译他们,生成测试用的可执行文件,由于我是初学者,当然就选择y
  7. 测试文件安装位置,与其说是安装,其实感觉就是拷贝了一大堆cpp文件过来,此处我选择默认位置,就直接ENTER

然后就是等待安装完毕了。

3.配置环境变量

【备注】以下相关路径应该和你的cuda安装路径对应

在.bashrc中配置环境变量,将以下两句添加到.bashrc文件的末尾

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

设置环境变量和动态链接库,在/etc/profile文件末尾添加

export PATH=/usr/local/cuda/bin:$PATH

创建链接文件,首先使用vim创建文件

sudo vim /etc/ld.so.conf.d/cuda.conf

在文件中输入如下语句

/usr/local/cuda/lib64

执行如下命令,使链接立即生效

sudo ldconfig

4.测试

首先进入到我们刚刚安装测试用例的目录中

cd /root/NVIDIA_CUDA-9.0_Samples

然后使用make编译测试用例

make

随便找一个测试用例

./1_Utilities/bandwidthTest/bandwidthTest

显卡测试结果
或者再来一个

./1_Utilities/deviceQuery/deviceQuery

这里写图片描述
反正最后提示下边这个说明测试正常

Result = PASS

四、安装cuDNN

1. 下载

下边这个网站是官网的地址,但很奇怪为什么没有cuda9对应的cuDNN(其实也不奇怪,作者太挫,没找到而已[尴尬]),下载的时候注意cuda的版本号对应关系
官网下载地址
cuDNN下载
而下边这个是作者放到百度网盘中的地址(以防万一以后哪天用的到
cudnn-8.0-linux-x64-v5.0-ga.tgz 百度网盘

2.安装

解压缩文件会生成一个名称为cuda的文件夹,然后进入该文件夹

tar -zxvf cudnn-8.0-linux-x64-v5.0-ga.tgzcd cuda

复制头文件

sudo cp include/cudnn.h /usr/local/cuda/include

复制动态文件并创建对应链接

sudo cp lib64/libcudnn.so.5.0.5 /usr/local/cuda/lib64/sudo cp lib64/libcudnn_static.a /usr/local/cuda/lib64/cd /usr/local/cuda/lib64sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5sudo ln -s libcudnn.so.5 libcudnn.so

五、安装OpenCV

1.下载

OpenCV的下载可以去SourceForge下载,我们下载unix版本的
OpenCV下载地址
这里写图片描述
或者百度网盘(以防万一
opencv-3.3.1(unix).zip 百度网盘

2.各种库安装

第一波安装(完全不知道干哈的[尴尬]

sudo apt-get install --assume-yes libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

第二波(编译、项目管理用的相关)

sudo apt-get install build-essential cmake git

第三波(opencv的一些文件编码解码之类,具体也不清楚),好像跟之前的有点重复,不过也没关系,反正apt-get遇到已安装的会自动跳过

sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

3.安装OpenCV

解压缩opencv并进入到目录中

unzip opencv-3.3.1.zipcd opencv-3.3.1

创建构建用的目录,并使用cmake构建编译用的文件

mkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..

cmake成功时,最后几行会是如下信息

-- Configuring done-- Generating done-- Build files have been written to: /root/opencv-3.3.1/build

开始编译和安装

make -j8sudo make install

安装完成后修改一些配置

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'sudo ldconfig

六、安装caffe

1.安装依赖包

这步好多包好像跟之前的都是重复的,懂的人可以自己筛选,像作者这种菜鸟就。。。。。。不说了

sudo apt-get update sudo apt-get install -y build-essential cmake git pkg-config sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install -y libatlas-base-dev sudo apt-get install -y--no-install-recommends libboost-all-dev sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get install -y python-pip sudo apt-get install -y python-dev sudo apt-get install -y python-numpy python-scipy  

2.从GitHub上克隆caffe

git clone https://github.com/BVLC/caffe.git cd caffe 

3.修改Makefile.config文件

复制make的配置文件,caffe默认带了一个叫做Makefile.config.sample的文件,是make的配置示例文件,我们需要将这个文件拷贝一份,并重命名为Makefile.config,然后打开进行修改

sudo cp Makefile.config.example Makefile.config sudo vim Makefile.config

修改如下几个地方:
①是否使用cudnn,如果使用,去掉如下注释

# USE_CUDNN := 1    改为    USE_CUDNN := 1

②如果使用的OpenCV版本是3以上的,则去掉如下注释

# OPENCV_VERSION := 3    改为    OPENCV_VERSION := 3

③最重要的,修改如下地方(貌似是因为是Ubuntu 16.04的缘故)
原始内容

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/includeLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

修改为

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serialLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

④去掉compute_20架构使用的代码,如果不去的话编译中会提示错误,不支持compute_20架构
原始内容:

CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \                -gencode arch=compute_30,code=sm_30 \                -gencode arch=compute_35,code=sm_35 \                -gencode arch=compute_50,code=sm_50 \                -gencode arch=compute_52,code=sm_52 \                -gencode arch=compute_60,code=sm_60 \                -gencode arch=compute_61,code=sm_61 \                -gencode arch=compute_61,code=compute_61

删除20那一行的内容

CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \                -gencode arch=compute_35,code=sm_35 \                -gencode arch=compute_50,code=sm_50 \                -gencode arch=compute_52,code=sm_52 \                -gencode arch=compute_60,code=sm_60 \                -gencode arch=compute_61,code=sm_61 \                -gencode arch=compute_61,code=compute_61

4.修改Makefile文件

原始内容

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

修改后的内容

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

5.修改/usr/local/cuda/include/host_config.h

找到如下内容

#if __GNUC__ > 5#error -- unsupported GNU version! gcc versions later than 5 are not supported!#endif /* __GNUC__ > 5 */

将中间一行注释掉

#if __GNUC__ > 5// #error -- unsupported GNU version! gcc versions later than 5 are not supported!#endif /* __GNUC__ > 5 */

6.编译和测试

make all -j8make runtestmake pycaffe
原创粉丝点击