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=<path to caffe>/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配置完毕!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容