安装前的说明:
1.cuda和cudnn是用来加速运行的,要想安装cuda和cudnn必须确保自己有一块cuda支持的GPU(显卡),下面给大家一个查询地址https://developer.nvidia.com/cuda-gpus,大家常用的是GeForce系列的显卡,如果大家能查到自己电脑的显卡,就可以安装cuda和cudnn。
2.本人的ubuntu16.04系统是新安装的系统,如果你的电脑配置没有乱改过的话,可以多参考一下该安装教程,我会把安装过程遇到过的坑和我知道的最简单的方法都给大家说出来,以供大家参考。
3.本人之所以会重装系统,是因为之前系统出现了无法复制粘贴以及有时软件打开了,出现在左边任务栏但看不见的情况,经查明是ubuntu16.04的安装包有问题,本人之前是在ubuntu的中文官网http://cn.ubuntu.com/download/下载的ubuntu,建议大家还是在英文官网去下载https://www.ubuntu.com/download。如果有类似错误的情况,请读者考虑重新安装系统(真的很影响自己使用,而且网上也很难找到怎么解决这个错误)。
4.安装的过程并不一定是一帆风顺的,出了错误大家可以以官方的安装教程为主,其他教程为辅尝试查找问题,保持心态,一定可以安装好的!如果大家对ubuntu的基本命令比较熟悉的话,安装过程肯定会轻松一点。我会尽量给大家讲细致一点。
好的,接下来就进入正题了。安装的步骤分为以下几步:
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
sudo apt-get install git cmake build-essential
如果该过程中出现无法定位安装包的问题,请读者打开“软件和更新”
建议选择最佳服务器
如需验证自己的依赖包是否安装成功,例如想验证第五行代码的git、make、build-essential三个依赖包是否安装成功,只需在终端再输入一次sudo apt-get install git cmake build-essential,出现下面结果就证明已经安装好了。
2.安装NVIDIA显卡驱动
在安装NVIDIA显卡驱动的过程中,我在网上看到了两种方法,第一种要禁用nouveau,还要关闭图形界面安装驱动,非常麻烦。下面直接给大家介绍更简单的一种方法。
首先去官网上查看适合你GPU的驱动(http://www.nvidia.com/Download/index.aspx?lang=en-us)例如,本人电脑GPU适合的驱动如下:
执行如下语句,安装
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-384 ##这里后面三位数字请改为你自己查到版本的前三位
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
执行完上述命令后,输入reboot进行重启(友情提示:如有其他重要的东西请及时备份、保存,以防丢失,重启后浏览器可以恢复之前的网页)
重启后在命令行输入:
nvidia-smi
如果出现了你的GPU列表,则说明驱动安装成功了。另外也可以通过打开“详细信息”,
查看红框内的内容检查驱动是否安装成功。
3.安装cuda8.0
(1)下载安装包
给大家说一下,caffe的源代码(后面安装caffe的过程中会看到)中对不同的cuda版本有不同的编译要求。
如图所示,cuda版本小于6.0需要注释掉*-50和*_61三排,小于8.0要注释*_60和*_61一排,大于等于9.0要注释*_20和*_21两排,所以为了方便的话我推荐大家直接就安装cuda8.0。
进入https://developer.nvidia.com/cuda-80-ga2-download-archive,依次选择cuda类型然后下载即可。
当然如果你不想安装cuda8.0,也可以通过这个网址https://developer.nvidia.com/cuda-downloads去下载最新版的cuda,本人在写该教程时最新已经出到了cuda9.1,如果你要使用cuda9.1的话就需要想上述那样,在安装caffe的时候注释掉*_20和*_21两排。
给大家解释一下,红框里的local表示本地下载完整的安装包,network表示在线下载安装包(文件大小会小很多),本教程就以第一个安装包为例,为了方便读者就请也下载这个安装包吧,如果不行再尝试另外三个安装包。
(2)安装
点击download下载完安装包后,找到安装包的位置,将它拷贝到你要安装的路径下,本人将它拷贝在home文件夹下,为了后面阅读教程方便的话读者可以也考虑安装在这个目录下。
进入home文件夹,输入命令
cd /home/<自己的用户名>
运行runfile文件:
sudo sh cuda_8.0.27_linux.run
然后根据提示,第一步输入accept,剩余的步骤除了提示你安装nvidia显卡驱动时输入no,其余均输入yes就行。
在安装的时候会叫你选择存放的地址,建议读者输入/home/<自己的用户名>/Cuda8.0,如果不新建一个文件夹的话安装完系统是没有给你打包成一个文件夹的。
除此以外系统还会给你分配一个默认为/usr/local/cuda的链接地址,意思就是说,这两个地址指向的地方其实是一样的。
看到了吗?这两个目录里的内容是一样的。
安装完后添加一下环境变量:
输入sudo gedit /etc/profile
在文件最下面另起两行写入
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
当然,其中的路径你也可以用你自己存放的路径/home/<自己的用户名>/Cuda8.0,保证里面的内容是一样的就行了。
保存关闭后,输入source /etc/profile使环境变量立即生效。
这里顺便给大家罗嗦几句,上面这样添加环境变量是添加系统变量,对系统的所有用户都适用的。如果你只想对当前用户设置环境变量,请输入
sudo gedit ~/.bashrc
然后依然是写入两行
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
最后用source ~/.bashrc使配置生效。
建议在读的学生党还是用上面的步骤直接添加系统变量,这样你以后离校不用这台电脑了,留给师弟师妹,他们换了用户名也可以接着使用。
(3)测试
安装完cuda后让我们来检测一下cuda8.0是否安装成功:
分别执行以下命令
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
若看到最后显示Result=Pass就代表已经安装成功了。
顺便说一句:本人安装完显示CUDA Driver Version / Runtime Version 为9.0/8.0,前面为cuda的驱动版本,后面为实际运行的版本,你实际使用的还是cuda8.0,不用担心。本人猜想的话驱动版本应该是你下载的时候当时cuda的最新版本,只要别出现运行版本比驱动版本还高就行了。
4.安装cudnn7.0.5
(1)下载安装包
登录官网https://developer.nvidia.com/rdp/cudnn-download,如果没有nvidia账户的需要先注册再登录。
选择和你cuda8.0适配的cudnn7.0.5进行下载
其中红色框是官方的安装指导,读者可以另开一个窗口参照它的步骤进行安装
蓝框是基于linux系统的cudnn7.0.5,下载下来为tgz文件。黑框是基于ubuntu16.04的cudnn7.0.5,下载下来为deb文件。绿色框是测试cudnn安装是否成功时用到的samples,请把它也下载下来。
本人尝试了下载deb文件进行安装但是有报错,所以我最后下载的是蓝框中的tgz文件进行安装,读者也可以尝试一下用deb文件进行安装,两种文件的安装命令在安装指导中都有。
(2)安装
同样,下载完安装包和测试Samples后,找到安装包和测试Samples的位置,将它们拷贝到你要安装的路径下,本人还是将它们拷贝在home文件夹下。
进入home文件夹,输入命令
cd /home/<自己的用户名>
![这里写图片描述](https://img-blog.csdn.net/20171219224708055?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVGlsbFRoZVdvcmxkRW5k/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
如果你下载的是runtime版本的deb文件,就用第2步的命令安装;如果下载的是developer版本的deb文件,就用第3步的命令安装。再用第4步的命令把绿框中你下载下来的sample安装了。
如果你下载的是tgz文件,就按2,3步骤依次执行命令进行安装
提醒一下:安装命令里面的包的名字要改成你自己下载的文件的名字。
(3)测试
安装完后测试一下cudnn7.0.5是否安装成功,根据安装指导里的命令
依次执行安装指导里的命令,最后显示test passed就证明cudnn7.0.5安装成功了。
5.安装opencv3.1
(1)下载安装包
进入官网 :http://opencv.org/releases.html, 选择 3.1.0 版本的 source , 下载opencv-3.1.0.zip
解压到你要安装的位置,本人还是将它安装在home文件夹下。
(2)更新一下软件源中的软件列表
sudo apt-get update
sudo apt-get upgrade
(3)编译环境安装
sudo apt-get install build-essential
(4)必需包安装
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
(5)可选包安装
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
这些包基本上之前第一步都安装过了,读者可以再运行一下,看有没有遗漏。
(6)编译opencv 3.1.0
先将下载的opencv-3.1.0.zip解压到home目录下
cp <下载文件所在路径>/opencv-3.1.0.zip /home/<自己的用户名>/
进入到当前目录
cd /home/<自己的用户名>/
将下载文件解压
unzip opencv-3.1.0.zip
解压完后,需要解决opencv3.1和cuda8.0不兼容的问题:
打开配置文件
gedit /home/<自己的用户名>/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp
将第45行的内容,改为如下图所示:
修改完后,命令行进入已解压的文件夹opencv-3.1.0目录下,
cd opencv-3.1.0
依次执行:
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
这一步可能出现下载ippcv_linux_20151201.tgz文件失败的问题。如果下载失败,则在该地址http://download.csdn.net/download/lx928525166/9479919手动进行下载,将下载好的文件ippcv_linux_20151201.tgz拷贝到文件夹路径中:
/home/<自己的用户名>/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/,然后再重新执行cmake命令。
开始编译
make -j7
编译成功后安装:
sudo make install
设置环境变量(如果提示权限不足就在命令前面加sudo)
/bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
(7)验证
安装完成后通过查看 opencv 版本验证是否安装成功:
pkg-config –modversion opencv
6.安装caffe并配置python接口
(1)下载caffe
首先在github上拉取caffe:
git clone https://github.com/BVLC/caffe.git
(2)安装并编译caffe
进入caffe,将Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作:
sudo cp Makefile.config.example Makefile.config
复制的原因是因为 Makefile.config.example是caffe给的配置模板,实际还需要用户根据自己的情况进行配置。
然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:
sudo gedit Makefile.config
修改 Makefile.config 文件内容:
1.应用cudnn:
将#USE_CUDNN := 1 改为 USE_CUDNN := 1
2.应用 opencv版本
将#OPENCV_VERSION := 3 改为OPENCV_VERSION := 3
3.使用python接口
将#WITH_PYTHON_LAYER := 1 改为 WITH_PYTHON_LAYER := 1
4.修改python路径
将 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
然后修改 caffe 目录下的 Makefile 文件:
将415行的 NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为 NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
然后修改/usr/local/cuda/include/host_config.h 文件:
将119行的 #error-- unsupported GNU version! gcc versions later than 5 are not supported!
改为 //#error-- unsupported GNU version! gcc versions later than 5 are not supported!
然后就可以开始编译了,在caffe目录下执行:
make all -j8
编译过程中可能会有很多nvcc warning,提示*_20和*_21的警告,不用管它,cuda8.0是不需要注释这两行的,系统只是提示你如果以后你升级了cuda,版本大于等于9.0就需要注释掉这两行。
(3)测试
编译成功后运行测试:
make runtest -j8
结果显示
(4)配置python接口
编译完caffe后,还要配置python接口
进入caffe目录
cd /home/<自己的用户名>/caffe
编译pycaffe
make pycaffe -j8
如果出现“没有那个文件或目录”的错误就把没有的包安装一下就可以了,使用sudo apt-get install xxx(缺失的包)
编译pycaffe成功后,将python添加到系统变量中,输入
sudo gedit /etc/profile
在文件最下面另起一行写入
export PYTHONPATH=/home/xxx(自己的用户名)/caffe/python:$PYTHONPATH
保存关闭后,输入
source /etc/profile
使环境变量立即生效。
(5)测试python接口
在命令行输入
python
进入python环境,输入
import caffe
如无信息显示则python接口就配置好了。
结束语:
每台机器的情况不同,安装方法可能会有细微的差别,有时候就是很小的错误都能卡你好几天,说实话之前我ubuntu系统有问题,来来回回重装系统好几次,本来装好的东西又要重新下载,心态爆炸了好几次。这篇教程也许不能对每台机器都适用,如果大家遇到了问题,欢迎在下方给我留言,如果我知道一定会为你解答。如果该篇教程有错误,也欢迎大家指出,一定会及时修正。
希望大家保持心态,做人最重要的是开心~最后祝大家都能尽早安装成功!