@(Program Primer)
这本是在印象笔记中的一个小系列,当初用于自己整理学习,现在发现实验室有师弟师妹需要,整理成一篇文章。按照顺序,配置顺序是CUDA,OpenCV,MKL,Caffe,中间可能会有各种依赖的安装。
这可能是我在2015年的最后一篇文章,因为我剩下的时间要完成毕业论文!!!
2017年3月19日更新
Ubuntu14.04 配置CUDA7.15
主要还是参考之前的文章在Windows8.1安装配置CUDA。
下面是具体步骤:
我是选择的使用
.run
安装文件,若是选择使用deb
包安装,据说是比较简单,可以参考这里。若是使用
run
文件安装,可能会遇到一些麻烦,下面是我的步骤,我是参考了官方文档。检查硬件是不是支持,我的系统是ubuntu14.04 64位,硬件是NVIDIA GT755M,是支持的,也可以使用命令
lspci | grep -i nvidia
检查支持否。停止自身的显卡服务,按照文档里面说的,创建一个黑名单,阻止开源的显卡驱动,然后进入文本模式下,停止显卡服务就可以,使用命令
sudo service lightdm stop
。(这里需要注意的是,若是笔记本双显卡,会遇到OpenGL的问题,若是双显卡最好不要安装OpenGL,否则就会在登录界面无穷循环,具体原因在文档里面有说明)然后使用命令安装就可以了,中间让你选择几个文件目录,安装过程还是挺快的。
完成后,输入命令
sudo service lightdm start
重新开启显卡服务,这时候就可以进入桌面了。添加环境变量,在
.profile
或者.bashrc
文件的最后添加下面两行。
1 | export PATH=/usr/local/cuda-7.5/bin:$PATH |
测试一下,1
2
3
4
5nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17
需要手动编译所有的样本,花了不少时间。
注意:这是CUDA7.5,其他版本没有测试过。
最后,配置CUDA环境
新建cuda.conf,并编辑:
sudo gedit /etc/ld.so.conf.d/cuda.conf
添加内容:/usr/local/cuda/lib64/lib
sudo ldconfig -v
编译Sample
CUDA本身提供了很多例子,可以进入目录,make一下,若是这个过程没有问题,基本上CUDA就安装成功了。
主要参考
- Caffe + Ubuntu 15.04 + CUDA 7.0 新手安装配置指南
- ubuntu14.04安装cuda
- Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
- Ubuntu 14.04 上安装 CUDA 7.5/8.0 超详细教程
- 有没有双显卡笔记本在Ubuntu下使用cuda的解决方案?
Ubuntu14.04 安装OpenCV2.9
2017年3月19日更新
这个最好还是用在Github上的这个编译OpenCV的脚本,很好用。
这个安装OpenCV的方法与以前的有点区别,之前我都是直接编译安装,但是这次需要用到的CUDA,用了别人写好的Shell脚本,但是也有不少的问题,最后还是没有成功安装2.4.9,安装是3.0.0.
主要是参考了下面的两篇文章:
上面的这两篇文章都是使用的脚本安装的,脚本的功能比较全面,我是手动下载的源码文件,然后修改了了脚本内容,屏蔽了下载,以及修改了解压路径等。其他的都是与在官方网站提供的方式差不多。
以下的参考中,前两篇是安装的Shell脚本,第3和第4、第5都是解决在make过程中的一些问题,不过最终我还是选择了安装openCV3.0.0
.
更新【2015.10.05】
以上是昨天写的记录,今天更新一下,仔细的研究了一下脚本,跟手动make安装没什么区别,就是在CMake的时候选择了更多的选项,但是始终没有编译样例。不知道是什么原因,我今天又重新卸载,编译了,手动make安装,都是不行。
最后更新,这里还是不要手动安装了,因为需要其他的编译选项,官网提供的编译选项都不包括,所以,还是按照别人的脚本安装吧。
下面是参考的链接:
卸载:
是参考的这里
1 | cat install_manifest.txt | sudo xargs rm |
查看安装版本:
参考这里
1 | pkg-config --modversion opencv |
参考
- Install-OpenCV
- Install-OpenCV-master
- Ubuntu 14.04 cuda 6.5 and opencv 2.4.9
- Unsupported gpu architecture ‘compute_11’解决方法
- Ubuntu14.04 +caffe+cuda 7.0
- linux下查看opencv版本
Ubuntu14.04 安装Intel MKL
Intel
提供的MKL
是一个开放的线性代数函数库,也有其他的,可以在参考的几个链接中找到相应的参考资料。
这个安装过程比较简单,但是需要在Intel的官网上申请,学生版的。
要先注册,申请,然后会得到一个序列号,没有序列号是不能使用的,必须使用教育邮箱。
步骤:
- 申请下载
parallel_studio_xe_2016.tar.gz
,在官网申请下载,应该先注册 - 选择平台,在Get Intel® Parallel Studio XE Cluster Edition (includes Fortran and C/C++):这里选择是
Linux
还是Windows
,然后接受4个条件。 - 进入信息填写界面,输入你的学校的邮箱和学校英文名称
- 然后提交后进入一个下载界面,选择合适的版本下载,我是选择最新的。
- 解压:
tar -zxvf arallel_studio_xe_2016.tgz
,然后拷贝到Home
路径下,赋予执行权限 - 运行一个shell安装脚本,
sudo ./install_GUI.sh
,按照提示安装即可 - 一定要注意在下载页面会有一个序列号,要记录下来,在安装过程中会使用的。
最后,配置MKL环境
新建intel_mkl.conf, 并编辑:
1 | $ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf |
参考
Ubuntu14.04 安装Glog等一些依赖库
Glog是一个轻量级的日志系统,我是第一次接触程序级的日志系统,主要的是参考这里。
- 下载。原文提供的Google Code,但是我自己的电脑是一直不能登陆,在另外一台电脑上,登陆后发现是原始的源码都转移到GitHub上了,地址在这里。
- 配置:
./configure
这里先暂停一下,遇到一些问题,我在试图编译Glog的时候出现了多种错误,一直没有好的办法解决,另外,我在Caffe的Install指导上,并不是需要自己手动编译Glog和Boost,不像是参考这里和这里讲的都是需要手动编译和安装Glog和Boost。
另外,我刚刚按照这里说的,安装了一些函数库:
1 | sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler |
已经将一些函数库安装了,那就是应该不需要手动安装boost \ glog \ gflags \ lmdb这些函数库了。
下面是提示:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38make[1]: Entering directory `/home/alex/Desktop/Glog/glog-0.3.3'
test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
/bin/bash ./libtool --mode=install /usr/bin/install -c libglog.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libglog.so.0.0.0 /usr/local/lib/libglog.so.0.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libglog.so.0.0.0 libglog.so.0 || { rm -f libglog.so.0 && ln -s libglog.so.0.0.0 libglog.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libglog.so.0.0.0 libglog.so || { rm -f libglog.so && ln -s libglog.so.0.0.0 libglog.so; }; })
libtool: install: /usr/bin/install -c .libs/libglog.lai /usr/local/lib/libglog.la
libtool: install: /usr/bin/install -c .libs/libglog.a /usr/local/lib/libglog.a
libtool: install: chmod 644 /usr/local/lib/libglog.a
libtool: install: ranlib /usr/local/lib/libglog.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "/usr/local/share/doc/glog-0.3.3" || /bin/mkdir -p "/usr/local/share/doc/glog-0.3.3"
/usr/bin/install -c -m 644 AUTHORS COPYING ChangeLog INSTALL NEWS README README.windows doc/designstyle.css doc/glog.html '/usr/local/share/doc/glog-0.3.3'
test -z "/usr/local/include/glog" || /bin/mkdir -p "/usr/local/include/glog"
/usr/bin/install -c -m 644 src/glog/log_severity.h '/usr/local/include/glog'
test -z "/usr/local/include/glog" || /bin/mkdir -p "/usr/local/include/glog"
/usr/bin/install -c -m 644 src/glog/logging.h src/glog/raw_logging.h src/glog/vlog_is_on.h src/glog/stl_logging.h '/usr/local/include/glog'
test -z "/usr/local/lib/pkgconfig" || /bin/mkdir -p "/usr/local/lib/pkgconfig"
/usr/bin/install -c -m 644 libglog.pc '/usr/local/lib/pkgconfig'
make[1]: Leaving directory `/home/alex/Desktop/Glog/glog-0.3.3'
刚刚从其他的机器上,在Google Code上下载了Glog的源码,编译没错,安装的时候提示已将安装了,说明已经安装了,另外两篇文章提示的都是重复安装的,官方文档提示的没错。
那就可以直接安装Caffe了。
Ubuntu14.04 安装Caffe
前面的工作,除了Matlab没有安装,其他的都安装好了。下面就按照官网和其他博客里面的说明安装。
- 下载,在github上下载源码;
- 修改里面的配置文件,我这里只有cuda和blas变了,所以就只修改了这两项;
- 编译:make all,正在编译,完事了
- 编译:make test
- 编译:make runtest
最后的结果是:1
2
3
4
5[----------] Global test environment tear-down
[==========] 1641 tests from 234 test cases ran. (287923 ms total)
[ PASSED ] 1641 tests.
YOU HAVE 2 DISABLED TESTS
上面是比较简单的安装,也没有测试,因为我对Caffe的了解还是不多,下面简单的翻译一下官方的安装说明:
安装
在安装和使用caffe之前,最好是瞥一眼这个安装说明,注意各个平台的安装细节,这个安装说明给出了在Ubuntu14.04
,Ubuntu12.04
,OS X 10.10
, OS X 10.9
, OS X 10.8
, 和AWS
多种平台的安装和使用的细节。官方的Makefile
和 Makefile.config
文件都是由社区使用CMake自动完成的。
下面的三个标题详细的介绍安装过程。
对于各个平台的安装细节区别,如下:
预备条件
Caffe有很多依赖的,如下:
- CUDA在GPU模式下需要;
- 推荐库的版本是7.0,或者更高,6.×的也是可以的
- 5.5 或者5.0 也是兼容的,但是太老了
- BLAS 基础线性代数函数库,比如
ATLAS
,MKL
,OpenBLAS
; - Boost,版本1.5以上;
- OpenCV,版本在2.4以上,包含3.0;
- 还有一些工具:
protobuf
,glog
,gflags
; - 输入输出库:
hdf5
,leveldb
,snappy
,lmdb
;
若是PyCaffe
或者Matcaffe
另外还需要其他的依赖:
PyCaffe
:python2.7或者python3.3+;numpy(>=1.7);boost.python提供的boostMatcaffe
:Matlab 带有mex编译器
cuDNN Caffe
:是有集成在NVIDIA显卡内的cuDNN加速的最快的Caffe,若是要使用这样的方式加速Caffe,在安装Caffe的时候,修改Makefile.config
里面的条件USE_CUDNN := 1,实际上把这一行注释去掉。对于cuDNN R1这些是集成的,但是对于cuDNNE R2请看这里
CPU-only Caffe
:若是选择CPU-OnlyCafe模式,修改Makefile.config
里面的条件CPU_ONLY := 1 ,实际上把这一行注释去掉,这有利于云部署或者聚类部署。
CUDA和BLAS
Caffe需要CUDA的nvcc编译器来编译它的GPU模式和GPU操作的CUDA驱动。在安装CUDA的时候,参考NVIDIA的指导,分别安装库和最新的独立驱动,与库绑定的驱动经常是过时的,并且331.×CUDA驱动系列有严重的问题,不要使用。
为了更好的使用,Caffe需要使用 NVIDIA cuDNN.加速,在官网上注册下载并安装,然后继续这个安装说明,当然,在编译的时候需要在Makefile.config
修改USE_CUDNN := 1
同时Caffe也需要BLAS作为其矩阵和向量计算的后台,这个库有很多实现,比如:
- ATLAS ,是一个免费和开源的,同时也是Caffe默认使用的BLAS
- Intel MKL针对Intel的CPU商业的、优化过的,有免费的实验和学生证书
- 首先安装Intel MKL
- 在
Makefile.config
设置Set BLAS := mkl
- OpenBLAS免费的、开源的,安装可能比较费劲,但是是优化的并行的BLAS,能提供加速度。
- 安装OpenBLAS
- 在
Makefile.config
设置Set BLAS := open
Python 和 Matlab Caffe(选择安装)
Python
安装Python
Matlab
安装Matlab,并保证它的mex在$PATH。
Caffe的Matlab接口可以工作在 Matlab的版本:2015a
, 2014a/b
, 2013a/b
, 2012b
.
Windows安装
非官方的Windows安装参考这里
Ubuntu平台
我的系统是Ubuntu14.04,安装这些依赖有自己平台的说明,除了CUDA需要自己编译安装,OpenCV也是自己编译安装,其他的都是可选用apt-get安装。
首先安装一些通用的包,这里面包含了一些输入输出库,和Boost等 。
1 | sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler |
CUDA在前面的日记里面记载了安装方式。
BLAS我是安装的Intel的MKL,在官网申请学生版的,选择用gui的方式安装。
python我之前都安装好了,这次就没有关心。
此外,还要安装一些其他工具。1
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
这是Ubuntu14.04,对于12.04,这几个库需要自己编译。
1 | # glog |
编译
若是前面的都安装好了,先决条件已经满足了,现在可以编译Caffe,在Github下载Caffe,编辑里面的Makefile.config.example
配置文件。
注意:若是使用默认的Python,需要把关于Anaconda Python
行注释取消。
可以按照下面的命令输入:1
2
3
4
5cp Makefile.config.example Makefile.config
# Adjust Makefile.config (for example, if using Anaconda Python)
make all
make test
make runtest
当要升级的时候,需要重新执行上面的命令,而且之前还要清理一下:1
make clean
需要注意的是,需要开启cuDNN加速或者CPU-Only模式的,需要根据前面的提示在构建之前修改配置文件。
要分别用Python和Matlab来编译PyCaffe和MatCaffe,需要在配置文件设定好Python和Matlab的路径。
分布式:运行命令make distribute
在需要其他机器上创建分布式目录,目录包含Caffe的header、编译的库、二进制等等用来分布式的东西。
速度:为了加快编译速度,可以在make
命令后面添加参数,比如make all -j8
这里面8 就是使用8个线程来并行编译,最好的选择这个数字与自己机器的核心数一致。
好的,现在已经成功安装了Caffe,可以检查 MNIST tutorial和reference ImageNet model tutorial.
CMake编译
Caffe同时提供了一种非官方的CMake的方式来编译Caffe,替换手动编辑配置文件的方式,CMake的版本必须是2.8.7以上的,【In lieu of 是替换的意思】。步骤如下:1
2
3
4
5mkdir build
cd build
cmake ..
make all
make runtest
也可以参考这里更详细的说明。
硬件
这地方没用!