欢迎使用CSDN-markdown编辑器

来源:互联网 发布:goodtv网络电视台直播 编辑:程序博客网 时间:2024/06/04 00:10

deepin15.4.1安装caffe


此安装仅仅针对intel核显及NVIDIA独显用户

cpu:intel core i7 6700Q

显卡:NVIDIA gt960m

操作系统: deepin15.4.1 x64


步骤

  1. cuda及cudnn安装
  2. opencv3.2编译安装
  3. caffe安装

1.安装nvidia-bumblebee,实现双显卡切换

对于笔记本用户来说,一直开着独显的话发热量会明显增大,并且耗电也会变快,所以需要安装bumblebee来切换显卡,平时只用核显就足够了,需要运行cuda或者玩游戏的话才开启独显。

2.安装cuda开发工具

cuda在linux下的开发工具基本上够用了,有基于eclipse 的nsight,有visual profiler性能分析工具,还有pycuda库实现对python运算的加速。但是我以前在deepin上面尝试安装官方的.run包,均以失败告终,很容易把电脑搞崩溃。最近终于找到了从软件源直接安装cuda的方法。

具体安装方法:

1.安装nvidia-bumblebee

sudo apt updatesudo apt install bumblebee bumblebee-nvidia nvidia-smi

一行命令搞定nvidia驱动、bumblebee切换程序、和显卡状态监控程序。

不用管nouveau驱动,系统会自己屏蔽掉。

然后重启

sudo reboot

重启后测试

nvidia-smi

optirun nvidia-smi

这里写图片描述

2.cuda开发工具

首先安装配置g++,gcc

因为cuda版本原因,cuda8之前都只支持g++-4.8,gcc-4.8

所以gcc需要降级

sudo apt install g++-4.8 gcc-4.8

然后更改软连接

cd /usr/binsudo rm gcc g++sudo ln -s g++-4.8 g++sudo ln -s gcc-4.8 gcc

然后下载开发工具

sudo apt install nvidia-cuda-dev nvidia-cuda-toolkit nvidia-nsight nvidia-visual-profiler

使用nsight的方法为:在终端下输入

optirun nsight

这里写图片描述

3.安装pycuda扩展

有的同学有使用python 写cuda的需求,推荐pycuda,能够自定义核函数,并且里面带的GpuArray这个数据结构很好用安装方法为:

sudo apt install python-pycuda

写一个简单的测试代码

from __future__ import print_functionfrom __future__ import absolute_importimport pycuda.autoinitimport pycuda.gpuarray as gpuarrayimport pycuda.driver as cudaimport numpyimport timefree_bytes, total_bytes = cuda.mem_get_info()exp = 10while True:   fill_floats = free_bytes / 4 - (1<<exp)   if fill_floats < 0:       raise RuntimeError("couldn't find allocatable size")   try:       print("alloc", fill_floats)       ary = gpuarray.empty((fill_floats,), dtype=numpy.float32)       break   except:       pass   exp += 1ary.fill(float("nan"))print("filled %d out of %d bytes with NaNs" % (fill_floats*4, free_bytes))time.sleep(10)

另存为cuda_test.py

然后

optirun python python cuda_test.py

这里写图片描述

至此cuda的安装完成,为了用NVIDIA显卡加速深度学习,还需要安装cudnn

cudnn详细安装步骤

1、从官网上下载cudnn的安装包。

2、将安装包解压,将此安装包放在常用的放远吗路径下即可,并在当前路径下进行解压,解压后的文件夹名为cuda。

3、在终端上编辑如下代码:

cd ./cuda/includesudo cp *.h /usr/include (这里是你安装cuda的地址,由于使用apt安装,系统讲cuda直接安装在/usr目录)cd ./cuda/lib64sudo cp libcudnn.so.7.0.1 /usr/libsudo cp libcudnn_static.a /usr/libsudo ln -s /usr/libcudnn.so.7.0.1 /usr/libcudnn.so.7sudo ln -s /usr/libcudnn.so.7 /usr/libcudnn.so

至此cudnn安装完毕,第一步完成。


opencv的编译安装过程用到cmake,cmake命令行参数配置太复杂,这里采用他的图形化工具

1.安装OpenCV所需要的库

sudo apt-get install build-essential (如果按照之前的流程一路走下来,此步骤省略,因为会造成gcc/g++从4.8升级到当前最新版本,后面的cuda及cudnn加速程序编译报错)sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devsudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-devsudo apt-get install libglu1-mesa-dev (OpenGL相关的依赖项)

2.从github上下载OpenCV源代码

git clone https://github.com/opencv/opencv.git

3.安装cmake的GUI工具,方便配置

sudo apt-get install cmake-gui

然后打开该软件,输入OpenCV源码在本地的路径,已经编译配置过程产生的中间文件保存在本地的路径

这里写图片描述

× 路径配置完之后,淀积左下角的Configure按钮,开始执行依赖检查等环境配置

× 成功之后,会在上面产生一个列表,是将来编译时需要的一些环境配置,一般默认即可,这里我们稍作修改,修改CMAKE_BUILD_TYPE为Release,修改CMAKE_INSTALL_PREFIX为/usr/local,选中WITH-OPENGL

× 完了之后,淀积左下角的Generate按钮,将会根据上面的配置生成Makefile文件

这里写图片描述

在build路径下执行命令

make -j8 (多线程编译,注意散热,这里的数字8根据自己计算机cpu核心的个数自行调整)

编译过程耗时很久,大概一个半小时左右,编译完成之后安装即可

sudo make installsudo ldconfig

测试opencv安装是否成功,opencv完全编译安装会安装对应的python接口,在终端中简单测试即可
这里写图片描述
至此opencv3.2安装完成


终于来到重头戏了,caffe的安装

1.依赖库安装

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler  sudo apt-get install --no-install-recommends libboost-all-dev 

安装ATLAS,输入下述命令:

sudo apt-get install libatlas-base-dev 

安装剩余依赖项

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2.删除deepin软件源中太新的库,这些库采用比gcc/g++4.8.5更新的编译器编译,有不兼容部分,后续的caffe编译中会出现找不到对应函数的情况

sudo apt-get remove libleveldb-devsudo apt-get remove libprotobuf-devsudo apt-get remove libgflags-devsudo apt-get remove libgoogle-glog-dev

3.重新编译安装上述库

leveldb

git clone https://github.com/google/leveldb.gitcd ./leveldb/make -j8

安装leveldb

sudo cp -r /leveldb/include/ /usr/include/sudo cp /leveldb/out-shared/libleveldb.so.1.20 /usr/lib/sudo ln -s /usr/lib/libleveldb.so.1.20 /usr/lib/libleveldb.so.1sudo ln -s /usr/lib/libleveldb.so.1.20 /usr/lib/libleveldb.sosudo ldconfig

查看安装是否成功

ls /usr/lib/libleveldb.so*# 显示下面 3 个文件即安装成功/usr/lib/libleveldb.so.1.20/usr/lib/libleveldb.so.1/usr/lib/libleveldb.so

protobuf编译安装

deepin库中默认采用的是protobuf-3.0x,而caffe的github代码中兼容protobuf2.5

protobuf2.5在其官方的github中已经没法提供下载,这里提供一个链接https://code.google.com/p/protobuf/downloads/list,网络不行的话,可以去简单检索一下,到csdn下载即可

tar -zxvf protobuf-2.5.0cd protobuf-2.5.0./autogen.sh./configure --prefix=/usr/make -j8make check -j8sudo make installsudo ldconfig

查看版本

这里写图片描述

gflags安装

git clone https://github.com/gflags/gflags.gitcd gflagsmkdir buildcd buildexport CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1make -j8sudo make install

glog安装

git clone https://github.com/golang/glog.gitcd glog./configuremakesudo make install

下载caffe源码

git clone https://github.com/BVLC/caffe.git  

修改Makefile.config

cp Makefile.config.example Makefile.config  vim Makefile.config 

根据个人情况修改

#USE_CUDNN := 1改为USE_CUDNN := 1

opencv3版本

#OPENCV_VERSION := 3 改为OPENCV_VERSION := 3 

使用python layer

#WITH_PYTHON_LAYER := 1 改为WITH_PYTHON_LAYER := 1 

最重要的一项

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

修改为

1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial /usr/liclude /usr/include/leveldb /usr/local/include/gflags /usr/include/google/protobuf2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr /usr/lib/x86_64-linux-gnu/hdf5/serial

修改Makefile

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

至此准备工作结束,开始编译

make all -j8make test -j8

编译完成,以最简单的MNIST手写体数据集做一个简单测测试

# 下载MNIST数据./data/mnist/get_mnist.sh

这里写图片描述

# 数据格式转换./examples/mnist/create_mnist.sh

这里写图片描述

# 训练LeNet-5超参数(hyperparameters)optirun ./examples/mnist/train_lenet.sh

这里写图片描述

这里写图片描述

# 测试集上做预测测试optirun ./build/tools/caffe.bin test \-model examples/mnist/lenet_train_test.prototxt \-weights examples/mnist/lenet_iter_10000.caffemodel \-iterations 100

这里写图片描述

这里写图片描述

至此,全部教程结束。


参考文献

1.http://blog.csdn.net/liaodong2010/article/details/71482304

2.https://jingyan.baidu.com/article/36d6ed1f95e0b91bcf4883a6.html

3.http://caffe.berkeleyvision.org/installation.html