经过无数次的失败后,终于安装成功,安装过程并不是很难,只是遇到问题时候的解决方式不对,导致花费了不少时间。现将过程整理如下:
电脑的环境:Ubuntu 16.04 64位系统(Windows7双系统)、GPU型号为GeForce GT 540M。
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
2、安装NVIDIA驱动
很多教程都是用驱动文件安装,但我的电脑驱动文件总是安装失败,即使成功了也会遇到很多问题(重启后黑屏、循环登录、NVIDIA X Server Settings仅显示部分信息等)。所以,驱动文件安装方式请自行搜索。
最后,我直接通过系统设置->软件和更新->附件驱动,安装了最新的专有驱动nvidia-375。若总是应用更改失败,则可以尝试更新源,更新方式如下:
sudo vi /etc/apt/sources.list ->替换源 ->sudo apt-get update
替换内容如下(仅供参考):
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ – Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
3、CUDA8.0
(1)下载:https://developer.nvidia.com/cuda-downloads
(2)下载完成后执行以下命令:
sudochmod777 cuda_8.0.44_linux.run sudo ./cuda_8.0.44_linux.run
注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。
(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 makesudo ./deviceQuery
如果显示一些关于GPU的信息,则说明安装成功。
4、配置cuDNN
cuDNN是GPU加速计算深层神经网络的库。首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。
下载cuDNN5.1之后进行解压:
sudo tar -zxvf ./cudnn-8.0-linux-x64-v6.0.tgz
进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:
cd cuda/include sudo cp cudnn.h /usr/local/cuda/include #复制头文件
再将进入lib64目录下的动态文件进行复制和链接:
cd .. cd lib64 sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库 cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.6 #删除原有动态文件 sudo ln -s libcudnn.so.6.0.20 libcudnn.so.6 #生成软衔接 sudo ln -s libcudnn.so.6 libcudnn.so #生成软链接
5、安装MKL
这里也可以选择(ATLAS,MKL或者OpenBLAS),依赖文件安装时已经安装了ATLAS,我这里安装MKL,首先下载并安装英特尔®数学内核库 Linux*版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下载链接是:https://software.intel.com/en-us/intel-education-offerings,使用学生身份(邮件 + 学校)下载Student版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号。下载完之后,要把文件解压到home文件夹,或者其他的ext4的文件系统中。
接下来是安装过程,先授权,然后安装:
$ tar zxvf parallel_studio_xe_2017_update3.tgz
$ chmod a+x parallel_studio_xe_2016 -R
$ sudo sh install_GUI.sh
PS: 安装的时候,建议使用root权限安装,过程中会要求输入Linux的root口令。
MKL与CUDA的环境设置
(1) 新建intel_mkl.conf,并编辑
$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
(2) 新建cuda.conf,并编辑
$ sudo gedit /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
/lib
(3) 完成lib文件的链接操作,执行:
$ sudo ldconfig
6、安装opencv3.2
从官网(http://opencv.org)下载Opencv。
unzip opencv-3.2.0.zip
cd ~/opencv-3.2.0 mkdir build cd build
配置:
sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译:
sudo make
sudomakeinstall
7、安装Matlab
(1)下载Matlab2016b,请自行搜索
下载后的Linux文件夹会有三个文件分别是R2016b_glnxa64_dvd1.iso、R2016b_glnxa64_dvd2.iso和Matlab 2016b Linux64 Crack文件夹。Crack文件解压:
rar x Matlab\ 2016b\ Linux64\ Crack.rar
注意:解压后Crack文件夹中包含readme.txt文件,里面包含密钥;license_standalone.lic文件,用于进行软件激活;/bin/glnx64/文件,用于进行matlab安装目录中bin/glnx64/的替换,里面工四个文件。
(2)挂载:首先建立挂载文件夹,本文为/home/generallc/matlab2016,然后用mount命令进行R2016b_glnxa64_dvd1.iso文件挂载,注意当前只挂载R2016b_glnxa64_dvd1.iso文件,R2016b_glnxa64_dvd2.iso先不要进行挂载。
命令:
mkdir /home/generallc/matlab2016
#挂载目录
sudo mount -t auto -o loop /home/generallc/下载/matlab/R2016b_glnxa64_dvd1.iso /home/generallc/matlab2016
注意:/home/generallc/下载/matlab/为下载的linux版本MATLAB2016文件目录,/home/generallc/matlab2016为指定的挂载目录
(3)安装:进入到挂载目录下,可以发现有install文件,然后返回当前目录的前一层进安装
命令:
cd /home/generallc/matlab2016
cd ..
sudo /home/generallc/matlab2016/install # 进行安装、弹出安装界面,类似windows安装,安装密钥在Crack文件中的readme.txt中
注意:记住matlab安装目录,本文为/home/generallc/MATLAB
(4)安装R2016b_glnxa64_dvd2.iso
当R2016b_glnxa64_dvd1.iso安装完成后,提示拔出dvd1,然后插入dvd2对话框,此时需要挂载第二个iso文件(R2016b_glnxa64_dvd2.iso)到/home/generallc/matlab2016文件夹下,这里注意的是,由于你当时的终端窗口正在 进行安装,所以你是无法进行操作的,所以你需要ctrl+Alt+t进行重新开一个终端命令窗口。挂载成功后直接点击ok就可以了。
命令:
ctrl+Alt+t #新建窗口
sudo mount -t auto -o loop /home/generallc/下载/matlab/R2016b_glnxa64_dvd2.iso /home/generallc/matlab2016
(5)激活:安装完成后,进入安装 目录下,运行matlab文件,弹出激活对话框,选择用不联网的方法进行激活。然后用用下载目录中/bin/glnx64/的四个文件替换matlab安装目录中bin/glnx64/里面文件。
命令:license文件加载
cd /home/generallc/MATLAB/R2016b/bin #进入到matlab安装目录中
./matlab #运行matlab,弹出激活对话框,选择用不联网的方法进行激活,加载license_standalone.lic文件
注意:本文激活过程中,出现了权限不足问题,采用chomd命令提高对license_standalone.lic文件和安装目录R2016b的权限
cd /home/generallc/MATLAB/R2016b/ #进入到挂载目录中
sudo chmod 777 license_standalone.lic #提高对license_standalone.lic文件的操作权限
cd /home/generallc/MATLAB #进入到matlab安装文件中
sudo chmod -R 777 R2016b/ #提高对安装目录R2016b的操作权限
命令:文件替换,用下载目录中/bin/glnx64/的四个文件替换matlab安装目录中bin/glnx64/里面文件。
sudo cp /home/generallc/下载/matlab/R2016b/bin/glnxa64/libmwservices.so /home/generallc/MATLAB/R2016b/bin/glnxa64
sudo cp /home/generallc/下载/matlab/R2016b/bin/glnxa64/libmwlmgrimpl.so /home/generallc/MATLAB/R2016b/bin/glnxa64
sudo cp /home/generallc/下载/matlab/R2016b/bin/glnxa64/libinstutil.so /home/generallc/MATLAB/R2016b/bin/glnxa64
sudo cp /home/generallc/下载/matlab/R2016b/bin/glnxa64/libcufft.so.7.5.18 /home/generallc/MATLAB/R2016b/bin/glnxa64
8、Python安装(根据需要安装)
(1)anaconda安装python2.7方式,下载Anaconda(https://www.continuum.io/downloads),下载完成之后,cd进入下载文件所在的目录:
$ bash Anaconda2-4.0.0-Linux-x86_64.sh
(2)安装完成之后,在~/.bashrc文件末尾添加Anaconda的库文件(注意“=”两边不要有空格),具体如下:
$ sudo gedit ~/.bashrc
export PATH=“/home/jeson/anaconda2/bin:$PATH”
export LD_LIBRARY_PATH=“/home/jeson/anaconda2/lib:$LD_LIBRARY_PATH”
(3)重启电脑之后,在命令行输入:ipython,就可以看到python的版本。
9、caffe配置
(1)下载caffe源码:
git clone https://github.com/BVLC/caffe.git //从github上git caffe
(2)安装配置:
cd caffe //打开到刚刚git下来的caffe
cp Makefile.config.example Makefile.config //make指令只能make Makefile.config
(3)配置文件修改
sudo gedit Makefile.config #打开Makefile.config文件 根据个人情况修改文件:
a)若使用cudnn,则将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
b)启用Intel Parallel Studio XE 2016
BLAS := mkl
c)配置路径,实现caffe对Python和Matlab接口的支持
PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2016b
d)若使用的opencv版本是3的,则将
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
e)若要使用python来编写layer,则将
#WITH_PYTHON_LAYER := 1
修改为:
WITH_PYTHON_LAYER := 1
f)重要的一项:将
# 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
这是因为Ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径。
h)若安装Anaconda,则
注释掉原来的PYTHON_INCLUDE,使用ANACONDA的配置,
注意文件的
ANACONDA_HOME := $(HOME)/anaconda
可能需要改为
ANACONDA_HOME := $(HOME)/anaconda2
根据自己的情况
#PYTHON_INCLUDE := /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it’s in root.
ANACONDA_HOME := $(HOME)/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
#PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib
(4)修改makefile文件
打开makefile文件,做如下修改:
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
(5)编辑/usr/local/cuda/include/host_config.h
将其中的第115行注释掉,将
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported! 改为 //#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
(6)编译caffe
make -j4 #-j根据自己电脑配置决定
编译过程中可能会出现如下错误:
错误内容1:
“fatal error: hdf5.h: 没有那个文件或目录”
解决办法:
step1:在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。
将:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
替换为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
stept2:在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。
将:
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
错误内容2:
“libcudnn.so.5 cannot open shared object file: No such file or directory”
解决办法是将一些文件复制到/usr/local/lib文件夹下:
#注意自己CUDA的版本号!
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
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig
make test -j4
make runtest
若runtest报错,则尝试在~/.bashrc文件末尾添加输入一行export MKL_CBWR=AUTO,即:
sudo gedit ~/.bashrc
export MKL_CBWR=AUTO #打开的文件末尾加入该行,然后保存退出。
sudo ldconfig #编译立即生效
再编译:
make clean
make -j4
make test -j4
make runtest
(7)编译pycaffe
a)准备Python环境
sudo apt-get update
sudo apt-get install python-pip python-dev python-numpy
sudo apt-get install gfortran
sudo pip install -r ${CAFFE_ROOT}/python/requirements.txt #${CAFFE_ROOT}为caffe根路径
sudo pip install pydot
b)Anaconda需要将caffe头文件进行链接(不是Anaconda,则直接编译:make pycaffe):
sudo gedit ~/.bashrc
export PYTHONPATH=“/home/jeson/caffe/python:$PYTHONPATH”
保存后:
sudo ldconfig
make pycaffe
make distribute
ipython
import caffe
(8)编译matcaffe(gcc可以不用降级,我降级后caffe一直编译不通过,后面才发现不降级也可以用)
将matlab下的libstdc++.so.6 更改名称为libstd++.so.6_back(让matlab找不到这个),这样在执行matlab编译的时候会自动去找系统用的库。具体为:
cd /usr/local/MATLAB/R2014a/sys/os/glnxa64/
sudo mv libstdc++.so.6 libstdc++.so.6_back
sudo ldconfig
cd ~/caffe/
make matcaffe (会有警告gcc版本不支持,可忽略,后面会提示Mex成功)
make mattest
若编译成功,但在调用matcaffe接口时报错,如:
“libcudart.so.8.0 cannot open shared object file: No such file or directory”
则,可用ldd命令查看caffe_.mexa64所依赖的所有库文件路径,在终端中执行:
ldd external/caffe/matlab/caffe_faster_rcnn/+caffe/caffe_.mexa64
在Matlab命令窗口中执行:
!ldd external/caffe/matlab/caffe_faster_rcnn/+caffe/caffe_.mexa64
对比两者的结果,找出所依赖库文件路径不一致的地方,进行修改。
可将这些文件链接或复制到Matlab路径下(/usr/local/MATLAB/R2016b/bin/glnxa64/)或系统路径/usr/local/lib(Matlab中相应的文件应删除或重命名)。
我解决的方案是链接到Matlab路径下:
sudo ln -sf /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/MATLAB/R2016b/bin/glnxa64/libcudart.so.8.0
sudo ln -sf /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/MATLAB/R2016b/bin/glnxa64/libcublas.so.8.0
sudo ln -sf /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/MATLAB/R2016b/bin/glnxa64/libcurand.so.8.0
至此,caffe配置和编译结束。
Ubuntu 14.04下安装Matlab2013a http://www.linuxidc.com/Linux/2016-08/134082.htm
Ubuntu Server上安装Matlab http://www.linuxidc.com/Linux/2014-09/106242.htm
Ubuntu 16.04 LTS 安装 MATLAB 2014b http://www.linuxidc.com/Linux/2016-10/136436.htm
Matlab编译cuda的.cu文件 http://www.linuxidc.com/Linux/2014-04/100675.htm
Linux Matlab服务器进一步改造成Application Server(应用程序服务器) http://www.linuxidc.com/Linux/2014-09/106340.htm
Matlab 坐标图动画,动态显示数据 http://www.linuxidc.com/Linux/2016-03/129056.htm
Ubuntu 14.04安装Matlab2012a过程 http://www.linuxidc.com/Linux/2015-12/126297.htm
Ubuntu 16.04 安装配置MATLAB+Python +CUDA8.0+cuDNN+OpenCV3.1的Caffe环境 http://www.linuxidc.com/Linux/2017-06/145087.htm
精通 MATLAB 7.0 混合编程 清晰中文PDF版 http://www.linuxidc.com/Linux/2017-05/143845.htm
Ubuntu 15.04 下Caffe + + CUDA 7.0 安装配置指南 http://www.linuxidc.com/Linux/2016-11/137497.htm
Caffe 深度学习入门教程 http://www.linuxidc.com/Linux/2016-11/136774.htm
Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安装 http://www.linuxidc.com/Linux/2016-07/132860.htm
Ubuntu 16.04系统下CUDA7.5配置Caffe教程 http://www.linuxidc.com/Linux/2016-07/132859.htm
Caffe在Ubuntu 14.04 64bit 下的安装 http://www.linuxidc.com/Linux/2015-07/120449.htm
深度学习框架Caffe在Ubuntu下编译安装 http://www.linuxidc.com/Linux/2016-07/133225.htm
Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明 http://www.linuxidc.com/Linux/2015-04/116444.htm
Ubuntu 16.04上安装Caffe http://www.linuxidc.com/Linux/2016-08/134585.htm
Caffe配置简明教程 ( Ubuntu 14.04 / CUDA 7.5 / cuDNN 5.1 / OpenCV 3.1 ) http://www.linuxidc.com/Linux/2016-09/135016.htm
Ubuntu 16.04安装 Caffe GPU版 http://www.linuxidc.com/Linux/2017-09/147111.htm
Ubuntu 16.04上安装Caffe(CPU only) http://www.linuxidc.com/Linux/2016-09/135034.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147617.htm