配置Caffe(Ubuntu16.04 + cuda-9.1)的详细过程

配置Caffe(Ubuntu16.04 + cuda-9.1)的详细过程。

本文内容比较多,参考了很多博客,主要如下:

https://www.cnblogs.com/go-better/p/7161006.html

https://blog.csdn.net/a_z666666/article/details/72853346

https://blog.csdn.net/u012033124/article/details/61200524

https://blog.csdn.net/lernering/article/details/78615464

https://blog.csdn.net/kemgine/article/details/78781377

原本在Ubuntu下配置过一个无GPU版本的,相对简单很多,这次由于需要,必须配置cuda的caffe,踩了很多坑,浪费了大半天,所以把整个过程记录下来。

本人的硬件配置为i7 4720HQ + GTX 960M系统为Win10 + Ubuntu16.04;装过很多回双系统,原以为没什么问题,但是在装好双系统后在win下面用easyBCD设置启动项后,Linux的启动项启动失败,原因没有找着,最后在BIOS中直接设置的是Ubuntu优先启动。(若有哪个大神知道这方面的原因,希望周知一下,谢谢)

Ubuntu系统最开始一些配置:

1.在右上角的设置中,点击system settings,后选择Software&Update

勾选source code ,点开Download from,选择other,在里面选择中国的源,例如aliyun。

2.


sudo dpkg -i mentohust***.deb    #本人校园网,所使用mentohust登录锐捷
sudo apt-get install vim         #比较常用的一个编辑器
#安装搜狗输入法
http://pinyin.sogou.com/linux/?r=pinyin
#根据自己需要去更改系统主题什么的,和需要的各种软件

安装caffe的相关依赖项

这一部分相对比较简单,应该都不会有什么问题

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

安装NVIDIA驱动

这一部分与网上多数安装方式相比复杂很多,但是我是照着参考的几篇博客方式出现错误(在登录桌面是反复要求输入密码)才用的这种方式。大家要是出现同样的问题可以用一下

这一部分参考:https://blog.csdn.net/lernering/article/details/78615464

1.输入命令

sudo nvidia-smi

看一下是否有装好的驱动?

2.没有驱动就先去官网 http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动并下载:驱动文件后缀名应当是以.run结尾的。注意系统的位数,我下载的文件是NVIDIA-Linux-x86_64-390.48.run

3.删除原有驱动(这一步是笔者在装失败了一次之后重新装的)

sudo apt-get remove --purge nvidia*

4.禁用nouveau驱动:(Ubuntu自带的显卡驱动)

编辑 /etc/modprobe.d/blacklist.conf 文件,添加以下内容:

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

新建blacklist-nouveau.conf文件,

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

并在文件中输入一下命令,保存并退出

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

sudo reboot 重启,再查看一下nouveau模块是否被加载,如没输出就可以

lsmod | grep nouveau

5.开始装驱动,解决问题根本之处在于添加参数: –no-opengl-files


sudo service lightdm stop    #关闭图形界面
sudo ./NVIDIA-Linux-x86_64-xxx.run --no-opengl-files
sudo service lightdm start    #开启图形界面

6.sudo reboot 重启,就可以了

可以再用nvidia-smi 来查看GPU输出信息

安装CUDA

1.首先从官网(https://developer.nvidia.com/cuda-downloads)下载CUDA我用的是9.1版本的

2.安装


sudo chmod 777 cuda_9.1.85_387.26_linux.run
sudo  ./cuda_9.1.85_387.26_linux.run

由于后续内容很长,必须一致摁住enter才可以一致往下看,在最后的地方有安装的配置说明。

执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia驱动时,一定要选择否Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 ***?

3.环境变量配置

sudo gedit ~/.bashrc

将以下内容写入到~/.bashrc尾部:

export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
注意:以上需要添加的部分会在cuda安装完成后有路径输出

4.在/etc/profile文件中添加CUDA环境变量:

sudo gedit /etc/profile

在结尾加上:

PATH=/usr/local/cuda-9.1/bin:$PATH  
export PATH
source /etc/profile  #使环境变量立即生效

5.同时添加lib库路径,在 /etc/ld.so.conf.d/新建文件 cuda.conf

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

在文中加入下面内容:

/usr/local/cuda-9.1/lib64

执行下列命令使之立刻生效:

sudo ldconfig

6.测试CUDA的samples

cd /usr/local/cuda-9.1/samples/1_Utilities/deviceQuery
make    #如果权限不够,用 sudo make
sudo ./deviceQuery

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

注:有几篇博客在配置环境变量是只改变了~/.bashrc文件,大家可以参考一下:

https://blog.csdn.net/a_z666666/article/details/72853346

配置cuDNN

这一部分我弄的出了些差错,如果搞定了我再补一下。

配置Opencv2.4.13

到官网http://opencv.org/downloads.html下载压缩包,在/home目录本地解压1.进入OpenCV2.4.13所在的文件夹

cd /home/opencv-2.4.13

2.安装依赖库和cmake

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev  libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev  
sudo apt-get install cmake 

3.安装完cmake之后执行命令

cmake .
sudo make

之后就是漫长的编译过程

4.开始安装

sudo make install

5.执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些

OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到:

sudo gedit /etc/ld.so.conf.d/opencv.conf  

执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加:/usr/local/lib

然后保存退出,执行如下命令使得刚才的配置路径生效

sudo ldconfig

6.配置bash,执行如下命令

sudo gedit /etc/bash.bashrc  

在末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH

保存退出,然后执行如下命令使得配置生效

sudo source /etc/bash.bashrc

之后更新database

sudo updatedb 

至此,Linux\Ubuntu16.04环境下配置OpenCV已经全部完成,下面用一个简单的程序进行测试

#include <iostream>  
#include <opencv2/opencv.hpp>    
using namespace std;  
using namespace cv;      
int main()  
{  
    Mat srcImage = imread("mayuyu.jpg");  
    imshow("srcIMage",srcImage);   
    waitKey(0);  
    return 0;  }  

并在相同目录下存放一张mayuyu.jpg编译OpenCV程序命令为:

g++ pkg-config opencv --cflags opencv.cpp  -o opencv pkg-config opencv --libs  

编译没有错误运行 ./opencv

配置caffe

1.从GitHub上https://github.com/BVLC/caffe下载caffe

下载完成后,会在家目录下的下载里找到caffe-master.zip,用unzip命令解压到家目录下,然后重命名为caffe

2.复制Makefileconfig

sudo cp Makefile.config.example Makefile.config

3.根据需求修改配置文件

sudo gedit 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.重要的一项 :

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

1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

修改为:

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

4.修改Makefile文件

打开caffe文件夹下makefile文件,

将:

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

替换为:

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

后面还有根据安装opencv3以上的版本所做的修改:可以参考:

https://www.cnblogs.com/go-better/p/7161006.html

5编译和测试

make all -j8 
make test -j8
make runtest -j8 #使用CPU多核同时进行编译

注:在make all之后,由于cuda的版本与caffe config文件中的需求版本不大相同,会出现如下错误

nvcc fatal : Unsupported gpu architecture 'compute_20'

处理方式如下:


仔细查看了一下 /caffe/Makefile.config 中 CUDA_ARCH 设置未按规定设置:
# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
                -gencode arch=compute_20,code=sm_21 \
                -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
                
因为我装的是CUDA9.1所以把下面这两行删除就可以了
-gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \

编译pycaffe

在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。

在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。

首先回到caffe的根目录,然后执行安装代码:

1 cd ~/caffe
2 sudo apt-get install gfortran
3 cd ./python
4 for req in $(cat requirements.txt); do pip install $req; done

安装完成以后,再次回到caffe根目录我们可以执行:

1 cd ..
2 sudo pip install -r python/requirements.txt

就会看到,安装成功的,都会显示Requirement already satisfied, 没有安装成功的,会继续安装。

编译python接口:

make pycaffe  -j8

配置环境变量,以便python调用:

sudo gedit ~/.bashrc

export PYTHONPATH=/home/caffe/python:$PYTHONPATH

添加到文件中

最后

展开阅读全文

没有更多推荐了,返回首页