浏览量: 59 次浏览

ubuntu16.04下配置caffe

2020年2月25日 0 作者 Nie Hen

详细介绍 安装caffe需要安装依赖库,配置环境变量,安装配置CUDA8.0 ,安装配置cudnn,安装配置opencv。

安装caffe时需要安装依赖库,

依赖的库有:OpenCV,Boost(不需要安装所有的库,只需安装filesystem,python,system,thread)。

安装后续步骤或环境必需的依赖包,依次输入以下命令:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential

注意:如果出现如下情形,

E: 无法定位软件包 libprotobuf-dev
E: 无法定位软件包 libleveldb-dev
E: 无法定位软件包 libsnappy-dev
E: 无法定位软件包 libopencv-dev
E: 无法定位软件包 libhdf5-serial-dev
E: 无法定位软件包 protobuf-compiler}}}

用sudo apt-get update 更新源, 然后按照上述命令重新安装

禁用 nouveau

安装好依赖包后需要禁用 nouveau,只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动.
禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf 文件中添加一条禁用命令,首先需要打开该文件,通过以下命令打开:

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

打开后发现该文件中没有任何内容,写入:

blacklist nouveau option nouveau modeset=0

保存时命令窗口可能会出现以下提示:

(gedit:3241): WARNING : Set document metadata failed: 不支持设置属性 metadata::gedit-encoding

无视此提示~,保存后关闭文件,注意此时还需执行以下命令使禁用 nouveau 真正生效:

sudo update-initramfs -u

配置环境变量

使用 gedit 命令打开配置文件:

sudo gedit ~/.bashrc

打开后在文件最后加入以下两行内容:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:LD_LIBRARY_PATH export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:LD_LIBRARY_PATH

保存退出。

下载 CUDA 8.0

下载链接
依次选择 CUDA 类型然后下载即可。

  • Select Target Platform:
  • Operating System:Linux
  • Architecture:x86_64
  • Distribution:Ubuntu
  • Version:16.04
  • Installer Type:runfile(local)
  • 然后单击>Base Installer Download(1.4GB),
    按照Installation Instructions进行安装。

安装 CUDA 8.0

在安装CUDA之前,先安装nvidia驱动,
利用PPA安装或者从nvidia官网下载驱动安装,
此处不再详述。

安装下载的cuda-8.0:sudo sh cuda_8.0.44_linux.run。

按住enter加载进度,直到100%。

可能遇到的选项:

Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
(y)es/(n)o/(q)uit: n(因为已经安装了nvidia驱动)
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location

配置 CUDA 环境变量

使用 gedit 命令打开配置文件:

sudo gedit ~/.bashrc

在该文件最后加入以下两行并保存:

export PATH=/usr/local/cuda-8.0/bin:PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:LD_LIBRARY_PATH

使该配置生效:

source ~/.bashrc

验证 CUDA 8.0 是否安装成功

执行:

nvcc –version或nvcc -V

出现如下情况则表明成功:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Sun_Sep__4_22:14:01_CDT_2016
Cuda compilation tools, release 8.0, V8.0.44

测试cuda的Samples:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

输出如下信息:

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.1, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GTX 1050 Ti

安装 cudnn-6.0.21

链接下载cuDNN v6.0 Library for Linux。

将下载的文件cudnn-8.0-linux-x64-v6.0.tgz移到 ~ 下,
然后用sudo tar zxvf cudnn-8.0-linux-x64-v6.0.tgz解压,得到cuda文件夹,
该文件夹下include 和 lib64 两个文件夹.
命令行进入 cuda/include 路径下,
然后进行以下操作:

sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件

然后命令行进入 cuda/lib64 路径下,运行以下命令:

sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/sudo rm -rf libcudnn.so libcudnn.so.6 #删除原有动态文件
sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6 #生成软衔接
sudo ln -s libcudnn.so.6 libcudnn.so #生成软链接

验证cudnn是否安装成功:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

出现如下结果表明安装成功:

#define CUDNN_MAJOR      6
#define CUDNN_MINOR      0
#define CUDNN_PATCHLEVEL 21
#define CUDNN_VERSION    (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#include "driver_types.h"

安装openCV3.3f

进入官网链接:l,
选择3.3.0版本的source,下载 opencv-3.3.0.zip.

(1)将其解压到你要安装的位置,
假设解压到了/home/lin/opencv.
sudo mv opencv-3.3.0.zip ~
cd ~
sudo unzip opencv-3.3.0.zip
sudo mv opencv-3.3.0 opencv

(2)安装前准备,创建编译文件夹
cd opencv/
sudo mkdir build
cd build

(3)配置
sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..

(4)编译
sudo make -j8 (-j8表示并行计算,根据自己电脑的配置进行设置,一般为CPU核数的两倍即可)

(5)安装
以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:sudo make install

(6)验证opencv是否安装成功
pkg-config –modversion opencv

安装 caffe

首先在你要安装的路径下clone:
git clone https://github.com/BVLC/caffe.git

进入caffe,将Makefile.config.example文件复制一份并更名为Makefile.config,
也可以在caffe目录下直接调用以下命令完成复制操作:

sudo cp Makefile.config.example Makefile.config

复制一份的原因是编译caffe时需要的是Makefile.config文件,而Makefile.config.example只是caffe给出的配置文件例子,不能用来编译caffe。
然后修改Makefile.config文件,在caffe目录下打开该文件:

sudo gedit Makefile.config

修改Makefile.config文件内容:
1.应用cudnn

#USE_CUDNN := 1
修改成:
USE_CUDNN := 1

2.应用opencv版本

#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3

3.使用python接口

#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1

4.修改python路径
INCLUDE_DIRS := (PYTHON_INCLUDE) /usr/local/include LIBRARY_DIRS := (PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS := (PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS := (PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

这是因为Ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径。

5.然后修改caffe目录下的Makefile文件:
将:
NVCCFLAGS +=-ccbin=(CXX) -Xcompiler-fPIC (COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=(CXX) -Xcompiler -fPIC (COMMON_FLAGS)

将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

6.然后修改/usr/local/cuda/include/host_config.h文件:

#error– unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error– unsupported GNU version! gcc versions later than 4.9 are not supported!

7.开始编译了,在caffe目录下执行:
make all -j8

8.编译成功后可运行测试:
sudo make runtest -j8

last

参考实验室林师兄的教程