天天看点

Ubuntu14.04 + GTX1080 + CUDA8.0 +Caffe

前言

又要写安装贴,感觉离我的技术blog走远了,现在感觉写下来的东西可能并没有什么大用,总会有新坑出现,到时又得爬坑。说是这么说,我还是写一下吧。实验室新购一台机器,双路GTX1080(本来是双路titan的,无奈好像新titan不好买到,将就一下吧,不过终于可以不用我的笔记本跑了,想想还是无限美好!)

1.安装Ubuntu

具体安装步骤就不谈了,主要说个问题,我在装好系统后发现进不了tty1~6,搜了一下,可以这么解决

编辑/etc/default/grub

修改GRUB_CMDLINE_LINUX_DEFAULT的值为nomodeset

更新grub:sudo update-grub

安装CUDA

安装cuda8.0和之前的cuda7.5没什么区别,可以参考我的另一篇博客。就发现装服务器时候,原来会导致无法进入桌面的OpenGL安装了并没有什么影响,可能这和笔记本核显有冲突,具体原因不知道。

装完cuda,联网安装一些基本包

sudo apt-get install build-essential
sudo apt-get install vim cmake git
sudo apt-get install libprotobuf-dev libleveldb-dev 
libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
           

安装CuDnn

原来的显卡计算能力小于3,用不动cuDnn,现在可以了。先去Nvidia官网下载cuDnn,我下载的是cuDNN v5.1 Library for Linux ,虽然那上面也有for Ubuntu14.04,但是看到的文档这么做的,我就不作死了。

tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
cd cuda
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp 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*
cd /usr/local/cuda/lib64/
sudo rm libcudnn.so.5
sudo rm libcudnn.so
sudo ln -s libcudnn.so.5.13 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
           

设置环境变量

安装完成后需要在/etc/profile中添加环境变量, 在文件最后添加:

PATH=/usr/local/cuda/bin:$PATH
export PATH
           

保存后, 执行下列命令, 使环境变量立即生效

source /etc/profile
           

同时需要添加lib库路径: 在 /etc/ld.so.conf.d/加入文件 cuda.conf, 内容如下

/usr/local/cuda/lib64
           

保存后,执行下列命令使之立刻生效

sudo ldconfig
           

安装BLAS

这里可以选择(ATLAS,MKL或者OpenBLAS),我之前是用ATLAS,免费,安装也很方便。

sudo apt-get install libatlas-base-dev
           

这次看到宇宙骑士的博客里说到MKL速度最快,学生免费,那就体验一把。

我这里使用MKL,因为它最快。首先下载并安装英特尔® 数学内核库 Linux* 版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下载链接是:https://software.intel.com/en-us/qualify-for-free-software/student, 使用学生身份(邮件 + 学校)下载Student版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号。下载完之后,要把文件解压到home文件夹(注意任何一级文件夹不能包含空格,否则安装会失败)
$ tar zxvf parallel_studio_xe_2016.tar.gz (如果你是直接拷贝压缩文件过来的)
$ chmod a+x parallel_studio_xe_2016 -R
$ sh install_GUI.sh
           

注意: 安装完成后需要添加library路径, 创建/etc/ld.so.conf.d/intel_mkl.conf文件, 在文件中添加内容

/opt/intel/lib
/opt/intel/mkl/lib/intel64
           

注意把路径替换成自己的安装路径。 编辑完后执行

sudo ldconfig
           

安装Opencv

引用这篇博客的东西吧,因为让我长了一点见识,第一次都是无脑输入安装命令。

1. 安装OPENCV
opencv的安装有两种方式:
(1)安装官网默认版本的OpenCV(2.4.8);
(2)安装特定版本的OpenCV(这里一般指3.0以上的版本,个人觉得除了3.0以上的版本,其它版本感觉跟2.4.8区别不大,很多时候为了省事就直接装CAFFE默认版本的就好了)

下面分别讲一下:
(1)的安装方式非常简单,打开终端,运行下面这句命令就行了:

        sudo apt-get install libopencv-dev
           

之前都不知道有官网默认版本这事。

安装的时候我没有采用上面两种,而是采用了别人写好的脚本。脚本出处很多,我是从宇宙骑士的博客上分享的云盘上下载的。但是还是遇到了大坑了。

遇到三个问题:

1.The imported target “Qt5::Gui” references the file “/usr/lib/x86_64-linux-gnu/libGL.so” but this file does not exist.

google了一下,解决方式如下:

$ sudo rm /usr/lib/x86_64-linux-gnu/libGL.so 
$ sudo ln -s /usr/lib/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so 
           

2.运行脚本中途遇到需要下载 ippicv_linux_20141027.tgz,但是不知道是不是有墙的原因,下不动了。导致无法继续下去。

我去网上下载ippicv_linux_20151201.tgz,然后拷贝到指定文件

cp ippicv_linux_20141027.tgz /home/zhou/opencv3.0/OpenCV/opencv-3.0.0/3rdparty/ippicv/downloads/
linux-8b449a536a2157bcad08a2b9f266828b
           

重新运行脚本。

3.然后开始正常安装,并开始make,但是make到72%出现错误,graphcuts.cpp文件中许多变量没有声明

google之后发现是因为opencv3.0还不支持cuda8.0,但是有个同学已经对其进行修改。

请参考此网站

cd  '/home/zhou/opencv3.0/OpenCV/opencv-3.0.0/modules/cudalegacy/src'
sudo vi graphcuts.cpp
           

重新运行指令:

sudo sh opencv3_1_0.sh
           

修改完再次运行安装脚本。能解决2,3问题,主要感谢这篇博客的博主。

安装anaconda包

官网下载好安装包。

bash Anaconda2-2.4.1-Linux-x86_64.sh
           

将安装路径添加到系统环境变量中,

$sudo gedit /etc/profile
           

在文件末尾添加一行:

export PATH={$HOME}/anaconda/bin:$PATH
           

使它生效

source /etc/profile
           

用which python 确认一下是否默认python已经是anaconda的python

安装caffe

1.安装其它依赖项

caffe官网第一步那几句指令:

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
           

接下来就是gflag、glog、lmdb的安装,那就要看你的ubuntu是什么版本了,本文选的是14.04,就是因为这个版本已经把这三个包集成在内了,直接用下面的指令就可以装了:

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

2.下载caffe

caffe的github下载最新版的caffe,解压到$HOME下

3.python依赖库

打开新的终端, 用which python和which pip确定使用的是anaconda提供的python环境,然后进入caffe_root/python, 执行下列命令

for req in $(cat requirements.txt); do pip install $req; done
           

4.编译caffe

切换到Caffe-master的文件夹,生成Makefile.config配置文件,执行:

$ cp Makefile.config.example Makefile.config
           

配置Makefile.config文件(仅列出修改部分)

a. 启用CUDNN,去掉”#”

USE_CUDNN := 1
           

b. 启用Intel Parallel Studio XE 2016

BLAS := mkl
           

c. 配置路径,实现caffe对Python接口的支持

PYTHON_LIB := {$home}/anaconda...(修改为anaconda的路径)
           

d. 启用OpenCV 3.0, 去掉”#”

OPENCV_VERSION = 3
           

编译caffe-master!!!”-j16”是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。

$ make all -j16
$ make test -j16
$ make runtest -j16
$ make pycaffe -j16
           

继续阅读