Caffe安装 CUDA10.0+CUDNN7.5.1

Caffe安装

一、电脑配置

系统:Ubuntu16.04(64-bit)  

处理器:Intel® Core™ i7-6700 CPU @ 3.40GHz × 8

图像处理器:NVIDIA 2080 Ti

内存:8GB

二、安装过程

1.安装相关依赖项

$ 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

2.安装NVIDIA驱动

(1)查询NVIDIA驱动

首先去官网(http://www.nvidia.com/Download/index.aspx?lang=en-us)查看适合自己显卡的驱动并下载:

驱动文件后缀名应当是以.run结尾的。我们要把这个文件移动到家目录下,原因是下面我们要切换到文字界面下,如果放到~/下载 下面,我们没有办法进入下载这个目录(没有中文输入法,且中文全部是乱码)

                                                                               图1 输入显卡型号 

                                                                            图2  显卡驱动搜索结果

(2)安装驱动

在终端下输入: sudo gedit /etc/modprobe.d/blacklist.conf  

输入密码后在最后一行加上 blacklist nouveau .  这里是将Ubuntu自带的显卡驱动加入黑名单。

在终端输入: sudo update-initramfs -u 

重启电脑

这里要尤其注意,安装显卡驱动要先切换到文字界面,(按Ctrl+Alt+F1~F6).所以,启动电脑后,先进入文字界面。

然后,输入命令 sudo service lightdm stop 

现在可以安装驱动了,先进入家目录cd ~,然后: sudo./NVIDIA-Linux-x86_64-435.21.run,按照提示一步步来~ 

完成后,再次重启电脑。

安装完成之后输入以下指令进行验证: sudo nvidia-smi ,若列出了GPU的信息列表则表示驱动安装成功。如下图:

3.安装CUDA

CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda。

(1)下载CUDA

首先在官网上(https://developer.nvidia.com/cuda-toolkit-archive)下载CUDA:

 (2)下载完成后执行以下命令:

$ sudo chmod 777 cuda_10.0.131_410.48_linux.run

$ sudo  ./cuda_10.0.131_410.48_linux.run

注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?

因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。

(3)环境变量配置

打开~/.bashrc文件: sudo gedit ~/.bashrc将以下内容写入到~/.bashrc尾部:

export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

(4)测试CUDA的samples

$ cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery

$ sudo make

$ sudo./deviceQuery

如果显示一些关于GPU的信息,则说明安装成功。

4.配置cuDNN

cuDNN是GPU加速计算深层神经网络的库。

首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:

下载cudnn-10.0-linux-x64-v7.5.1.10.solitairetheme8之后进行解压:

sudo tar -zxvf ./cudnn-10.0-linux-x64-v7.5.1.10.solitairetheme8

解压完成之后在命令行进行如下操作:

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

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/include/cudnn.h

sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

之后执行 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

若显示以下内容表明安装成功

5.安装protobuf

caffe的layer开发以google的protobuf为格式,需要安装该依赖,推荐安装2.6.1版本(gcc版本推荐4.4.7),下载地址为https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz,按照README文件里的步骤安装即可。

安装步骤概括如下:

#tar zxvfprotobuf-2.6.1.tar.gz

#cd protobuf-2.6.1

#./configure

#make

#make check

#make install

继续安装protobuf的python模块(如果不用python,可跳过这一步)

sudo apt-get install python-protobuf

6.安装opencv3.X

从官网(http://opencv.org/downloads.html)下载Opencv,并将其解压到你要安装的位置,假设解压到了/home/opencv。

1 unzip opencv-3.1.0.zip

2 sudo cp ./opencv-3.1.0 /home

3 sudo mv opencv-3.1.0 opencv

安装前准备,创建编译文件夹:

cd ~/opencv

mkdir build

cd build

配置:

1 sudo apt installcmake

2 sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

编译:

sudo make -j8

-j8表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。

可能出现问题:

这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:修改 ~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容,如图:

其中, #if !defined

(HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000) 是我们修改的。

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

sudo make install

7.配置caffe

(1) 使用Git直接下载Caffe非常简单,或者去https://github.com/chuanqi305/ssd.git下载。由于我习惯去github上找代码,所以就直接去下载的源码。

git clone https://github.com/chuanqi305/ssd.git

下载完成后,重命名为caffe.

(2)因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config: sudo cp Makefile.config.example

Makefile.config 

(3) 打开并修改配置文件:sudo gedit

Makefile.config #打开Makefile.config文件 根据个人情况修改文件:

a.若使用cudnn,则将

#USE_CUDNN := 1

修改成:

USE_CUDNN := 1

b.若使用的opencv版本是3的,则将

#OPENCV_VERSION := 3

修改为:

OPENCV_VERSION := 3

c.若要使用python来编写layer,则将#WITH_PYTHON_LAYER := 1 修改为WITH_PYTHON_LAYER := 1 

d.适配CUDA版本

根据CUDA版本将

-gencode arch=compute_20,code=sm_20 \

-gencode arch=compute_20,code=sm_21\

修改为:

#gencode arch=compute_20,code=sm_20 \

#gencode arch=compute_20,code=sm_21\

e.重要的一项

将# Whatever else you find you need goes here.下面的

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的位置,所以需要更改这一路径.

(4)修改makefile文件打开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

 (5)编译

make all -j8 #-j根据自己电脑配置决定

编译过程中可能会出现如下错误:

错误内容1:

"fatal error: hdf5.h: 没有那个文件或目录"

解决办法:

step1: 在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/到INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。将:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

替换为:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

stept2: 在Makefile文件的第173行,把hdf5_hl 和hdf5修改为hdf5_serial_hl和hdf5_serial,也就是把下面第一行代码改为第二行代码。将:

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

改为:

LIBRARIES += glog gflags protobuf boost_system boost_filesystem mhdf5_serial_hl hdf5_serial

错误内容2:

"libcudnn.so.5 cannot open shared object file: No such file ordirectory"

解决办法是将一些文件复制到/usr/local/lib文件夹下:

#注意自己CUDA的版本号!

1 sudo cp/usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudoldconfig

2 sudo cp/usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudoldconfig

3 sudo cp/usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudoldconfig

4 sudo cp/usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudoldconfig

(6)编译pycaffe

首先编译pycaffe :

make pycaffe -j8

以下是我编译 pycaffe 时出现的错误:

python /caffe/_caffe.cpp:10:31:fatal error: numpy/arrayobject.h: 没有那个文件或目录

解决方法:

sudo apt-get install python-numpy

此外也可能是由于 Makefile.config 文件中 python 路径设置错误出现的错误。

编译pycaffe 成功后,添加环境变量

export PYTHONPATH=/python:$PYTHONPATH

验证一下是否可以在 python 中导入 caffe 包,首先进入 python 环境:

python

然后导入caffe :

>>> import caffe

若不报错则表示 caffe 的 python 接口已正确编译,但是应该不会那么顺利,以下是我导入 caffe 时出现的错误:

错误1:

File "",line 1, in    ImportError:No module named caffe

解决方法:

sudo echo export

PYTHONPATH="~/caffe/python" >> ~/.bashrc

source ~/.bashrc

错误2:

ImportError: No module named skimage.io

解决方法:

pip install -U scikit-image #若没有安装pip: sudo apt install python-pip

(7)修改.bashrc文件

PYTHONPATH=${HOME}/caffe/python:$PYTHONPATH

LD_LIBRARY_PATH=${HOME}/caffe/build/lib:$LD_LIBRARY_PATH

(8)测试

sudo make runtest

如果运行之后出现下图,说明caffe配置成功。

 到此caffe配置完毕!

你可能感兴趣的:(Caffe安装 CUDA10.0+CUDNN7.5.1)