ubuntu16-04安装GPU版本的caffe

记录一下GPU版本的caffe的安装过程, 路慢慢其修远兮, 吾将上下而求索.

参考链接如下:
大佬一
大佬二

安装opencv

安装需要的两个opencv文件在我的百度云中可以下载,百度云链接地址:链接:链接: https://pan.baidu.com/s/1o8ZK76E 密码: hswb

具体安装教程见百度云中Linux下OpenCV安装PPT所示,讲解的很详细。编译成功之后可以用例子测试一下,PPT中也有具体讲解。

如何测试?

Ubuntu16.04下安装opncv

(1) Create a directory DisplayImagefor test project:

cd DisplayImage

(2) Create DisplayImage.cpp and edit it:

vim DisplayImage.cpp

Then edit the DisplayImage.cpp:

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv){
    if(argc!= 2){
        printf("usage:DisplayImage.out <Image_Path>\n");
        return -1;
    }
    Mat image;
    image= imread(argv[1], 1);
    if(!image.data)
    {
          printf("Noimage data\n");
          return -1;
    }
    namedWindow("DisplayImage",CV_WINDOW_AUTOSIZE);
    imshow("DisplayImage",image);
    waitKey(0);
    return 0;
    }

(3) Create a CMake file:

vim CMakeLists.txt

Then edit the CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(DisplayImage)
find_package(OpenCV REQUIRED)
add_executable(DisplayImage DisplayImage.cpp)
target_link_libraries(DisplayImage ${OpenCV_LIBS})

(4) Generate the executable file:

cmake .
make

(5) Execute it:

./DisplayImage lena.jpg
lena.jpg is the test image

安装显卡驱动

手动安装

(1)查询NVIDIA驱动型号:
首先去官网 http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动并下载:
驱动文件后缀名应当是以.run结尾的(即现在选项第一个)。我们要把这个文件移动到家目录下,原因是下面我们要切换到文字界面下,如果放到~/下载下面,我们没有办法进入下载这个目录(没有中文输入法,且中文全部是乱码)
图1.输入显卡型号

图2.显卡驱动搜索结果

(2)禁止集成的nouveau驱动
Ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,我们需要先将其屏蔽才能安装NVIDIA官方驱动。
将驱动添加到黑名单blacklist.conf中,但是由于该文件的属性不允许修改。所以需要先修改文件属性。

查看属性

$sudo ls -lh /etc/modprobe.d/blacklist.conf

修改属性

$sudo chmod 666 /etc/modprobe.d/blacklist.conf

用vim/gedit编辑器打开

$sudo vim /etc/modprobe.d/blacklist.conf

在该文件后添加一下几行:

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

执行以下命令,重新加载内核:

sudo update-initramfs -u

重启后,执行:lsmod | grep nouveau。如果没有屏幕输出,说明禁用nouveau成功。

(3)接下来就是自己安装显卡驱动了:

1).卸载你电脑中此刻有的nvidia的驱动。(复制命令就行,方便,后面也一样)

sudo apt-get remove –purge nvidia*
或者针对不同的安装方式有不同的卸载方法
sudo chmod +x NVIDIA-Linux-*.run
sudo ./NVIDIA-Linux-*.run --uninstall

运行了这个命令之后,你系统中的NVIDIA的一些驱动就应该被卸载了。

2).添加一个PPA到系统,等一下安装驱动要用的。复制下面的话命令就行(放在这里是因为你现在还在图形界面,复制方便)

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update 

重启电脑

3).上面的准备工作做完,马上就要脱离图形界面进入字符界面了,要是这个时候你看不到教程,还是推荐用手机或者平板边看教程边操作。按CTRL+ATL+F1进入终端1(输入用户名和密码后和终端很相似,可以大胆进去), CTRL+ATL+F7是进入图形页面.
在终端下面运行:

sudo service lightdm stop(关闭图形界面)

查看适合自己的最新版NVIDIA显卡驱动

sudo apt-cache search nvidia*

对照搜索结果和之前下载的文件编号, 然后输入:

sudo apt-get install nvidia-390(你下载的驱动是什么版本这里就写什么)

然后就等待驱动安装好。。。。。
安装好之后,运行sudo service lightdm start来启动图形界面,并且登录。然后,你这个时候应该又回到图形界面了。
这时候你可以运行:nvidia-smi来看是不是能够输出你的GPU的一些信息。要是不能够输出的话,重启。能够输出的话,也建议重启一次

自动安装

选择系统自动更新即可

输入以下指令进行验证:

sudo nvidia-smi

安装过程可能遇到的问题

如果在安装过程中, 提示驱动与电脑的secure boot模式冲突, 驱动无法生效, 进入bios, 设置 secure boot 为 not enable, 否则即使安装成功了, 也无法正常使用驱动.

关于secure boot和UEIF以及BIOS的种种可以参考这个博客

检查是否安装成功

nvidia-smi #若列出GPU的信息列表,表示驱动安装成功
nvidia-settings #若弹出设置对话框,亦表示驱动安装成功

安装cuda8.0

(1) 首先在官网上(https://developer.nvidia.com/cuda-downloads) 下载CUDA(1G以上那个):

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

sudo chmod 777 cuda_8.0.44_linux.run(输入自己下载的cuda文件名,因为软件要进行更新优化,所以过一段时间名字就会略有不同)

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

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 390.25

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

sudo sh cuda_9.1.85_387.26_linux.run

(3)环境变量配置
打开~/.bashrc文件: sudo gedit ~/.bashrc
将以下内容写入到~/.bashrc尾部:

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

(4)测试CUDA的samples

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

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

cuda版本安装错误, 如何卸载?
在目录:

/usr/local/cuda-7.0/bin

有CUDA自带的卸载工具uninstall_cuda_toolkit_7.0.pl,使用命令:

sudo ./uninstall_cuda_toolkit_7.0.pl

(5)配置cuDNN
首先,看看自己电脑的计算能力,如果自己电脑计算能力不超过3就不要进行这一步了,因为cuDNN仅能在计算能力为3以上的电脑上运行,强行装的话后面安装Caffe时会报错。查看自己电脑显卡的计算能力:https://developer.nvidia.com/cuda-gpus

cuDNN是GPU加速计算深层神经网络的库。
首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:

下载cuDNN5.1之后进行解压:

sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz
# 把刚刚解压的那个cuda文件更名为cuda-9.0
mv cuda cuda-8.0

然后执行:

cd cuda-8.0
sudo cp lib64/lib* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/ 
# 建议进行如下操作
cuda-8.0
sudo cp lib64/lib* /usr/local/cuda-8.0/lib64/
sudo cp include/cudnn.h /usr/local/cuda-8.0/include/ 

更新软连接:

cd /usr/local/cuda-8.0/lib64/
sudo chmod +r libcudnn.so.5.1.10
sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig
sudo ldconfig /usr/local/cuda-8.0/lib64/

请注意,请到自己解压后的lib64文件夹看这个文件libcudnn.so.5.0.5 ,电脑配置不同后面的数字型号不同,进行相应的修改,否则会报错。

安装caffe

目标安装caffe、pycaffe、matcaffe

(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

参看caffe官网

(2) 设置Makefile.config文件

sudo cp Makefile.config.example Makefile.config
sudo gedit Makefile.config #打开Makefile.config文件 

修改如下:

USE_CUDNN := 1  #去掉#号
OPENCV_VERSION := 3
WITH_PYTHON_LAYER := 1   #使用python来编写层

重要的:
将 # 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

matcaffe部分需要修改的是:

$ vim Makefile.config
MATLAB_DIR := /usr/local/MATLAB/R2016b

(3) 修改Makefile文件

修改一:

$ vim Makefile  
- opencv_core opencv_highgui opencv_imgproc  
+ opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs  
在位置((LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs))处添加 opencv_imgcodecs

修改二:

$ vim examples/cpp_classification/classification.cpp  
+ #include <opencv2/imgproc/types_c.h>  
+ #include <opencv2/objdetect/objdetect_c.h>

matcaffe部分需要修改的:

vim Makefile
- NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)  
+ NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
# 这个操作是为了解决版本过低的问题
410 CXXFLAGS += -MMD -MP410行下面加上 CXXFLAGS += -std=c++11

引入一下路径:

sudo vim ~/.bashrc
export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
export PATH=$PATH:/usr/local/MATLAB/R2016b/bin
source ~/.bashrc
sudo ldconfig

(4) 编译

查看物理cpu个数

grep 'physical id' /proc/cpuinfo | sort -u

查看核心数量

grep 'core id' /proc/cpuinfo | sort -u | wc -l

查看线程数

grep 'processor' /proc/cpuinfo | sort -u | wc -l

开始编译

cd caffe-master
mkdir build
cd build
cmake ..
cd ..
make all -j6
make test -j6
make runtest -j6

(5) 安装python接口

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

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

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

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

编译python接口:

make pycaffe

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

sudo gedit ~/.bashrc

将以下内容添加到文件中

export PATH=/user/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/user/local/cuda/lib64:$LD_LIBRARY_PATH
# 以上两个也要有
export PYTHONPATH=/home/caffe/python:$PYTHONPATH
export PYTHONPATH=~/caffe/python

然后执行

source ~/.bashrc

重启

然后就能import caffe了

(6) 安装matcaffe接口

cd /usr/local/MATLAB/R2014a/sys/os/glnxa64/  
sudo mv libstdc++.so.6 libstdc++.so.6_back  
sudo ldconfig  
cd ~/caffe/
sudo make matcaffe -j5

如果执行了上面的命令,提示gcc版本过低的话,不用管它,看/home/weijian/caffe/matlab/+caffe/privat下面,有没有caffe_.mexa64这个文件,如果有的话,可以开始测试了。

测试

打开matlib如何使用matcaffe?
在Caffe根目录启动Matlab之后需要增加路径:

addpath ./matlab  

然后执行命令:

savepath  

以后就不用每次都输入addpath ./matlabl了
接着,执行:

gpu_id = 0
caffe.set_mode_gpu();
caffe.set_device(gpu_id);

没有报错,意味着编译成功了。

编译mattest

执行

sudo make mattest -j5

如果执行 sudo make mattest -j5出错
执行下面几个句子

export LD_LIBRARY_PATH=/usr/local/R2016b/sys/os/glnxa64  
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6  

再次执行,仍然出错的话,执行下面的句子,注意路径

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64  
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6 

参考这个http://blog.csdn.net/rt5rte54654/article/details/54742981

MNIST数据集测试

配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:
1.将终端定位到Caffe根目录

cd ~/caffe 

2.下载MNIST数据库并解压缩

./data/mnist/get_mnist.sh 

3.将其转换成Lmdb数据库格式

./examples/mnist/create_mnist.sh 

4.训练网络

./examples/mnist/train_lenet.sh 

训练的时候可以看到损失与精度数值,如下图:

可以看到最终训练精度是0.9906。

可能遇到的问题

ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory

场景1: 在命令行里进入python,输入“import caffe” 或者 直接使用caffe/build/tools/caffe 出现错误: ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory

使用这个命令:

sudo ldconfig /usr/local/cuda/lib64

场景2: 在jupyter中import caffe 报错如下:error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory

解决办法:首先确认/etc/profile中的路径包含了cuda8.0的安装路径及相应的库文件

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

然后

$source /etc/profile

使配置文件生效,再次执行。

然后在当前命令窗下启动jupyter

jupyter notebook --allow-root

若仍提示相同的错误,则执行以下命令,将相应的库文件复制到/usr/lib

sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig

ps. ldconfig命令是一个动态链接库管理命令,是为了让动态链接库为系统共享

如果仍然不行, 关掉此终端, 重新开启一个试一试.

.build_release/tools/caffe: error while loading shared libraries: libcudart.

解决方法:在/usr/lib/下建立一个 软链接将 libopenblas.so.0指向/openbls安装目录/lib/ libopenblas.so.0

ImportError: cannot import name cbook

问题描述:caffe环境编译成功,运行具体项目时,出现错误ImportError: cannot import name cbook。后来进入python环境发现,运行import caffe 和 import matplotlib 出现Import: No module named functools_lru_cache

找了好久才找到的解决方法,亲测有效:
卸载之前的matplotlib:

sudo pip uninstall matplotlib

使用该命令重新安装:

sudo apt-get install python-matplotlib

这样就解决了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值