说明:安装时为了支持python版本,且为了安装方便,最好首先安装anaconda,anaconda安装起来方便并且集成了许多科学计算库,主要为了配合theano使用
如果想安装opencv、添加caffe matlab等等最好先看教程中相关部分最后再编译caffe比较保险
安装caffe
1.安装build-essentials
安装开发所需要的基本包(一般装完系统就有) sudo apt-get install build-essential
2.安装NVIDIA驱动
2.1 退出图形界面
1)由于有的带有gpu的电脑在启动时默认使用独显作为主要显示设备,因此我们需要将bios设置改为使用集显作为显示设备
2)进入ubuntu,按ctrl+alt+F1进入tty,登陆tty后输入:
sudo service lightdm stop
其他desktop manager也需要关闭
2.2安装驱动
准备工作:
1)Verify the system has a CUDA-capable GPU.
控制台输入以下命令:
lspci | grep -i nvidia
如果列出了当前NIVDIA显卡的信息则说明电脑的GPU事CUDA-capable的
2)Verify the system is running a supported version of Linux.
控制台输入以下命令:
uname -m && cat /etc/*release
输出的结果中如果显示x86_64则说明电脑是x86架构的,在下载驱动安装包时选择对应的包即可
3)Verify the system has gcc installed.
控制台输入:
gcc --version
确认gcc版本正确
4)Download the NVIDIA CUDA Toolkit.
从NVIDIA官网上下载对应的驱动安装包 下载地址:
https://developer.nvidia.com/cuda-downloads
控制台输入以下命令:
sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
sudo apt-get update
sudo apt-get install cuda
5)配置环境变量和lib库路径 安装完成后需要在/etc/profile中添加环境变量, 在文件最后添加:
PATH=/usr/local/cuda-7.0/bin:$PATH
export PATH
保存后使得环境变量立刻生效(或者重新打开控制台)
source /etc/profile
在 /etc/ld.so.conf.d/加入文件 cuda.conf, 内容如下
/usr/local/cuda-7.0/lib64
6)验证是否安装正确:
cd /usr/local/cuda-7.0/bin/
cuda-install-samples-7.0.sh <dir>
dir为目标路径,脚本会把sample文件复制到指定路径下,之后进入该路径make就好了
编译完成后进入bin/x86_64/linux/release
执行./deviceQuery 如显示GPU信息说明cuda安装正确
3 安装atlas
使用gpu加速需要安装blas库,这里选择atlas
sudo apt-get install libatlas-base-dev
4 下载caffe安装包与安装环境
控制台输入:
git clone https://github.com/BVLC/caffe
也可以到github上下载zip文件解压
安装caffe的依赖库:
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
5 安装anaconda
不使用ubuntu自带的python是因为anaconda集成了许多科学计算库如numpy、scipy等,而且安装theano也很方便 在anaconda官网上下载安装包直接安装即可,默认安装路径为
~/anaconda
添加bin到PATH环境变量即可 打开控制台输入python确认使用的是anaconda里面的python 安装pip
conda install pip
6 安装Caffe所需要的Python环境
然后执行如下命令安装编译caffe python wrapper 所需要的额外包
cd python
for req in $(cat requirements.txt); do sudo pip install $req; done
在运行Caffe时,可能会报一些找不到libxxx.so的错误,而用 locate libxxx.so命令发现已经安装在anaconda中,这时首先想到的是在/etc/ld.so.conf.d/ 下面将 $your_anaconda_path/lib 加入 LD_LIBRARY_PATH中。 但是这样做可能导致登出后无法再进入桌面!!!原因(猜测)可能是anaconda的lib中有些内容于系统自带的lib产生冲突。
正确的做法是:为了不让系统在启动时就将anaconda/lib加入系统库目录,可以在用户自己的~/.bashrc 中添加library path,比如我就在最后添加了两行
# add library path
LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
开启另一个终端后即生效,并且重启后能够顺利加载lightdm, 进入桌面环境。
但在实际安装时注意先要等make和make test完之后再加这个路径否则会报错
7 编译caffe
完成了所有环境的配置,可以愉快的编译Caffe了! 进入caffe根目录, 首先复制一份Makefile.config
cp Makefile.config.example Makefile.config
然后修改里面的内容,主要需要修改的参数包括
BLAS (默认使用的是atlas)
DEBUG 是否使用debug模式,打开此选项则可以在eclipse或者NSight中debug程序
如要安装python caffe和mat caffe的话需要在Makefile.config中指定python路径和matlab路径
完成设置后, 开始编译
make all
make test
make runtest
前两步成功说明caffe编译成功,make runtest是在运行caffe的各个测试脚本
8 编译pycaffe
控制台输入: make pycaffe
之后设置环境变量 在~/.bashrc中添加
PYTHONPATH=/path/tp/caffe/python:$PYTHONPATH
export PYTHONPATH
打开控制台输入python,之后import caffe,import成功就说明caffe安装成功了
9 安装cudnn(可选)
9.1编译caffe之后安装cudnn
使用cudnn来加速GPU计算,cudnn支持caffe,theano和Torch7 在官网免费获得cudnn压缩包 下载之后控制台输入:
tar -xzvf cudnn-6.5-linux-R1.tgz
cd cudnn-6.5-linux-R1
sudo cp lib* /usr/local/cuda/lib64/
sudo cp cudnn.h /usr/local/cuda/include/
之后建立软链接(首先删除原先文件夹下的软链接):
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6.5
然后修改文件权限,并创建新的软连接:
sudo chmod u=rwx,g=rx,o=rx libcudnn.so.6.5.18(未必是18,我的机子上是48,相应改就可以了)
sudo ln -s libcudnn.so.6.5.18 libcudnn.so.6.5
sudo ln -s libcudnn.so.6.5 libcudnn.so
9.2编译caffe之前安装cudnn
解压cudnn之后只需将对应的文件复制到对应目录中即可,同时在编译caffe时Makefile.config中
use_cudnn:=1
去掉注释
unpack the library
gzip -d cudnn-6.5-linux-x64-v2.tar.gz
tar xf cudnn-6.5-linux-x64-v2.tar
copy the library files into CUDA's include and lib folders
sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/ cuda-7.0/include
sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/ cuda-7.0/lib64
10 安装opencv(可选)
opencv库在运行其他开源项目时可能需要用到因此也建议安装,这里安装的是支持GPU的,因此安装是需要添加支持GPU的选项
opencv安装起来神烦,Github上有人已经写好了完整的安装脚本: https://github.com/jayrambhia/Install-OpenCV
下载该脚本,进入Ubuntu/2.4 目录, 给所有shell脚本加上可执行权限: chmod +x *.sh
安装2.4.9版本: sudo ./opencv2_4_9.sh
该脚本会去尝试下载2.4.9的压缩包,如果下载速度太慢建议还是自己先下载好,再把脚本中下载的语句注释掉,sh文件需要修改的是在cmake的那一行中添加一个编译参数 -D BUILD_TIFF=ON,否则在make caffe的时候会报类似
/usr/lib/libopencv_highgui.so.2.4: undefined reference to TIFFRGBAImageOK@LIBTIFF_4.0' 1>
的错误
安装过程中可能会遇到两个问题:
1编译过程中报错:
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization
http://www.samontab.com/web/2014/06/installing-opencv-2-4-9-in-ubuntu-14-04-lts/
解决方法在此:http://code.opencv.org/issues/3814 下载 NCVPixelOperations.hpp 替换掉opencv2.4.9内的文件, 重新build
2编译过程中报错:
nvcc fatal: Unsupported gpu architecture: 'compute xx'
需要在cmake时添加参数指定你的GPU架构,参考这两篇blog:
http://blog.csdn.net/sysuwuhongpeng/article/details/45485719 http://blog.csdn.net/altenli/article/details/44199539
11 caffe matlab(可选)
1 安装matlab:
参考教程:
Caffe提供了MATLAB接口, 有需要用MATLAB的同学可以额外安装MATLAB。安装教程请自行搜索。
安装完成后添加图标 matlab图标在该网站可以下载
http://www.linuxidc.com/Linux/2011-01/31632.htm
图标放到/usr/local/MATLAB/下
控制台输入以下内容
sudo vi /usr/share/applications/Matlab.desktop
复制代码
[Desktop Entry]
Type=Application
Name=Matlab
GenericName=Matlab R2014a
Comment=Matlab:The Language of Technical Computing
Exec=sh /usr/local/MATLAB/R2014a/bin/matlab -desktop
Icon=/usr/local/MATLAB/Matlab.png
Terminal=false
Categories=Development;Matlab;
2 matlab wrapper
控制台输入:
make matcaffe
安装完后在运行matlab demo时遇到报错
“libhdf5.so.6 no such file or directory”
但是到anaconda的lib目录下发现是有对应文件的,可能是动态链接库的问题,解决方法是到anaconda/lib目录下执行ldconfig就可以了
安装theano
1 安装theano
控制台输入 pip install theano即可
2 配置theano使其支持gpu加速
参考文档: http://deeplearning.net/software/theano/tutorial/using_gpu.html http://deeplearning.net/software/theano/install.html#gpu-linux http://deeplearning.net/software/theano/library/config.html#config.init_gpu_device
在用户根目录下新建.theanorc配置文档,配置如下:
[global]
floatX = float32
device = gpu
[nvcc]
fastmath = True
[blas]
ldflags = -lf77blas -latlas -lgfortran #put your flags here
检验是否theano可以使用gpu加速,测试脚本如下:
from theano import function, config, shared, tensor, sandbox
import numpy
import time
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], tensor.exp(x))
print f.maker.fgraph.toposort()
t0 = time.time()
for i in xrange(iters):
r = f()
t1 = time.time()
print 'Looping %d times took' % iters, t1 - t0, 'seconds'
print 'Result is', r
if numpy.any([isinstance(x.op, tensor.Elemwise) and
('Gpu' not in type(x.op).__name__)
for x in f.maker.fgraph.toposort()]):
print 'Used the cpu'
else:
print 'Used the gpu'
如果显示used the gpu说明theano在使用gpu加速