操作系统:Ubuntu14.04 64bits
处理器:Intel core i7-4790k 8核4GHz
GPU:GTX TITAN X
cuda:cuda7.0
NVIDIA驱动:NVIDIA346.72
blas:mkl
安装过程:
(一)Ubuntu系统安装
最好安装Ubuntu14.04,对caffe的支持最好,另外,安装完Ubuntu之后不要更新系统。
(二)caffe依赖项
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 libgflags-dev libgoogle-glog-dev liblmdb-dev
注意,这里安装的都是一些必要的库文件,必须安装。
(三)NVIDIA驱动安装
从NVIDIA官网下载英文版驱动,有.run与.deb两种格式,前者可自选组件进行安装,后者则等效于一键安装。注意要选择与自己gpu想匹配的驱动,没试过中文版驱动,不知道是否可行,不过在官网上下载中文驱动的时候会出现乱码。下载完驱动之后(我下的.run文件)按照官网的安装说明进行安装,大体步骤如下:
1、利用sudo gedit /etc/modprobe.d/blacklist-nouveau.conf新建blacklist-nouveau.conf文件,输入命令
blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off
保存并退出。这一步是为了禁掉Ubuntu自带开源驱动nouveau。之后sudo reboot重启系统。在终端执行命令
lsmod | grep nouveau
可以查看nouveau模块是否被加载。如果什么都没输出,则执行下一步。
2、重启后屏幕分辨率变低,不用管。进入tty1文件模式,输入用户名密码后登陆,输入命令
sudo /etc/init.d/lightdm stop
关闭xserver。注意,安装NVIDIA驱动需要以root用户登陆,所以利用命令sudo su进入root。输入命令
bash NVIDIA-LINUX-X86_64-346.72.run --kernel-source-path=/usr/src/linux-headers-3.*.*
进行安装。这里的linux-headers-3.*.*是Linux系统源文件名。安装过程中有一些提示问题让你回答,注意,当提示
The distribution-provided pre-install script failed!Are you sure you want to continue?
的时候不用管,继续安装就行了,这个问题我至今没明白是什么原因导致的,但这不影响后续安装及使用。当提示
Would you like to register the kernel module sources with DKMS?This will allow DKMS to auomatically build a new module,if you install a different kernel later
的时候,回答No。
3、最好再执行命令
sudo apt-get install linux-image-extra-virtual
否则后续可能会出现如下错误提示:
modprobe: ERROR: could not insert‘nvidia‘:Unknown symbolinmodule,or unknown parameter(see dmesg)
4、执行sudo /etc/init.d/lightdm start并重启电脑。重启后可能会产生分辨率问题,只需要更改/etc/X11/xorg.conf文件如下:
Section ‘Monitor‘ ** ** HorizSync 31.5 - 61.0 VertRefresh 50.0 - 75.0 ** ** Section ‘Screen‘ Modes "[email protected]" "[email protected]" "[email protected]" "[email protected]" "[email protected]" "[email protected]" "[email protected]" "[email protected]" "[email protected]" "[email protected]" "[email protected]" "[email protected]" EndSubSection
(四)cuda7.0安装
注意,caffe推荐安装最新版NVIDIA驱动,所以cuda内置的驱动我们就不需要安装了,cuda的安装完全按照官网教程进行,过程比较简单,这里不再赘述,如有问题可以留言我们相互讨论。但注意一点是安装完成之后需要修改环境变量,只需在/etc/ld.so.conf.d/下新建一个cuda.conf文件,将cuda库路径(默认是/usr/local/cuda-7.0/lib64)加入之后保存即可。
(五)MKL的安装
caffe所需要的blas我们安装mkl,虽然mkl的下载稍微有点麻烦,但安装起来还是很快的。下载的时候只需要在官网申请学生免费版,用你的邮箱注册之后会自动收到下载指南以及一个lic注册文件,按照指示下载即可,安装也较为简单,这里只提几点注意事项:
1、一个mkl安装文件可以同时被几个用户使用,所以不必重复下载。
2、安装的时候必须将安装包放置在Ubuntu能够识别的文件系统中,推荐~/,否则无法执行.sh脚本文件。
3、安装之后需要把mkl库路径(/opt/intel/lib以及/opt/intel/mkl/lib/intel64)加入环境变量。
(六)如果要使用Python接口,那么还需要另外安装一些Python库文件(Ubuntu自带Python不能满足我们的需要)
sudo apt-get install python-numpy python-scipy python-dev
(七)如果需要使用matlab接口,那么推荐新版本的matlab比如R2013a/b,R2014a/b等,我安装的R2014b,没任何问题。
(八)编译配置caffe
下载caffe文件并解压至某一目录caffe-root,注意修改makefile文件当中的一些路径。执行一下命令
cd caffe-root/caffe-master cp Makefile.config.example Makefile.config make all make test make runtest
在make编译过程中会遇到一些问题,可能是由caffe本身文件兼容性问题造成的,比如:
1、提示make:protoc:命令未找到,这是因为protoc未安装,只需安装就行。
sudo apt-get install protobuf-c-compiler protobuf-compiler
2、提示“src/caffe/util/math_functions.cu(140):errot:calling a host function("std::signbit")from a globalfunction("caffe::sgnbit kernel")is not allowed”,
修改./include/caffe/util/math_functions.hpp 224行
删除(注释):using std::signbit
修改:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = signbit(x[i]));
为:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = std::signbit(x[i]));
这是Yangqing Jia给出的解决方案,目前只有这一种方法。
我在编译的时候只对于某些版本的caffe会遇到情况2,对于第一个问题只要你按照前面的步骤做了应该不会出现的。虽然装这个花了好几天,不过总算是自己的努力换来了回报,希望caffe以后能优化的更完美,不要再在编译的时候遇上这么多麻烦,对于初学者是很不利的。希望大家共同学习,共同进步吧!