Caffe + Ubuntu 15.10 64bit + CUDA 7.5 +Matlab2014a

来源:互联网 发布:数据库分区表 编辑:程序博客网 时间:2024/05/01 21:49

    入职第三天一直在配置caffe环境,身为装过多次caffe的老人,我深感愧疚(因为之前是看别人给我装的),直到现在,才战战兢兢地快要配置成功。。。

    参考的网页一定要贴上来:

1、欧神的旧版配置说明:http://ouxinyu.github.io/Blogs/20140723001.html

2、欧神的新版配置说明:http://ouxinyu.github.io/Blogs/20140723001.html

3、普兒的文章链接地址:http://www.cnblogs.com/platero/p/3993877.html

4、实验室的集体作战经验(当然没有我):http://blog.csdn.net/u013476464/article/details/46945433

5、Matlab安装主要参考欧神的新版配置说明,但作为linux渣渣我还是翻阅了无数网站,贴几个:

      http://blog.csdn.net/lanbing510/article/details/41698285

     http://www.linuxidc.com/Linux/2011-01/31632.html


    另外,参考欧神的新版配置说明安装好cuda7.5后,又参考普兒的文章完成了环境变量设置与samples编译等,将我的整体流程再贴一遍吧。

环境1:Ubuntu15.10中文版x86_64位(还好有了cuda7.5的智能安装,否则中文系统在字符界面根本无法识别中文字符,也因为这个原因系统被我强制进入字符界面后无法返回图形界面,还好身边一群技术牛,不然我只能不停地重装系统,可更悲哀的是,我根本没装过任何系统!现在真是后悔以前一遇到问题就找男同学帮忙享受被伺候着的感觉,娃哈哈。。。)

环境2:Geforce GT 730 GPU(显存太小,后来证明根本跑不起来caffe,呜呜呜~)

第一部分:nVidia CUDA Toolkit的安装(*.deb方法)

一、CUDA Repository

获取CUDA安装包,安装包请自行去NVidia官网下载。(https://developer.nvidia.com/cuda-downloads)

二、CUDA Toolkit

三、添加环境变量

在/etc/profile中添加环境变量,打开文件添加:

PATH=/usr/local/cuda-7.5/bin:$PATHexport PATH
保存并执行下述命令使环境变量立即生效:

source /etc/profile


四、添加lib库路径
在/etc/ld.so.conf.d/路径下添加cuda.conf文件,内容如下:

/usr/local/cuda-7.5/lib64
执行以下命令使之立即生效:

sudo ldconfig


五、编译Sample文件

cd /usr/local/cuda-7.5/samplessudo make
完成编译后,执行

cd bin/x86_64/linux/release/sudo ./deviceQuery

如果出现下列显卡信息,则表示显卡安装成功:

./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)Device 0: "GeForce GT 730"  CUDA Driver Version / Runtime Version          7.5 / 7.5  CUDA Capability Major/Minor version number:    3.5  Total amount of global memory:                 1023 MBytes (1073020928 bytes)  ( 2) Multiprocessors, (192) CUDA Cores/MP:     384 CUDA Cores  GPU Max Clock rate:                            902 MHz (0.90 GHz)  Memory Clock rate:                             800 Mhz  Memory Bus Width:                              64-bit  L2 Cache Size:                                 524288 bytes  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers  Total amount of constant memory:               65536 bytes  Total amount of shared memory per block:       49152 bytes  Total number of registers available per block: 65536  Warp size:                                     32  Maximum number of threads per multiprocessor:  2048  Maximum number of threads per block:           1024  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)  Maximum memory pitch:                          2147483647 bytes  Texture alignment:                             512 bytes  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)  Run time limit on kernels:                     Yes  Integrated GPU sharing Host Memory:            No  Support host page-locked memory mapping:       Yes  Alignment requirement for Surfaces:            Yes  Device has ECC support:                        Disabled  Device supports Unified Addressing (UVA):      Yes  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0  Compute Mode:     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GT 730Result = PASS

第二部分 Matlab安装和调试(以Matlab 2014a为例)

下载好Mathworks.Matlab.R2014a.Unix.iso文件及Crack压缩包

一、首先进行挂载:

sudo mkdir /media/matlabsudo mount -o loop ./Mathworks.Matlab.R2014a.iso /media/matlab

拷贝全部文件至home/Matlab 文件夹

复制Crack/install.jar至 home/Matlab/java/jar/ 并覆盖源文件:

二、授权安装文件夹

三、 安装

选项:不使用Internet安装

序列号: 12345-67890-12345-67890

默认路径:/usr/local/MATLAB/R2014a

勾选从默认启动路径创建符号链接(实现在任意位置运行matlab启动程序)

激活文件:license_405329_R2014a.lic

拷贝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64:

四、解决编译器gcc/g++版本问题。

因为Ubuntu 15.10的gcc/g++版本较高,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla调用mex文件的时候,基本上都会报错,根据报错信息,考虑如下两步解决方案。

A. 降级安装gcc/g++版本为4.7.x

(a). 下载gcc/g++ 4.7.x

(b). 链接gcc/g++实现降级

B. 暴力引用新版本GLIBCXX_3.4.20

通过命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已经成功包含了GLIBCXX_3.4.21,如果已经存在,基本上就成功了。

五、编译Matlab用到的caffe文件(见第三部分)

第三部分 Caffe-Master的安装和测试

一、安装BLAS

这里可以选择(ATLAS,MKL或者OpenBLAS),我这里使用MKL,首先下载并安装英特尔® 数学内核库 Linux* 版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下载链接是:https://software.intel.com/en-us/intel-education-offerings, 使用学生身份(邮件 + 学校)下载Student版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号。下载完之后,要把文件解压到home文件夹(或直接把tar.gz文件拷贝到home文件夹,为了节省空间,安装完记得把压缩文件给删除喔~),或者其他的ext4的文件系统中。

先授权,然后安装:

PS: 安装的时候,建议使用root权限安装,过程中会要求输入Linux的root口令。(设置方法:命令行:$ sudo passwd)

二、MKL与CUDA的环境设置

1. 新建intel_mkl.conf, 并编辑之:

/opt/intel/lib/intel64

/opt/intel/mkl/lib/intel64

2. 新建cuda.conf,并编辑之:

/usr/local/cuda/lib64

/lib

3. 完成lib文件的链接操作,执行:

三、安装OpenCV 3.0.0

1. 下载并编译OpenCV(官网原版OpenCV:http://opencv.org/), 或者使用欧神提供的修改版的安装包 Install-OpenCV-master (下面的安装方式使用该包完成,安装包修改了dependencies.sh文件并增加了OpenCV 3.0.0的安装文件)

2. 切换到文件保存的文件夹,然后安装依赖项:

3. 切换目录Ubuntu\3.0\安装OpenCV 3.0.0:

这一步的时候,遇到问题:其中一个文件libatomic.so一直出问题,好吧,原谅我并不知道为什么,后来汤圆就刷刷刷地帮我解决了。。。

四、安装其他依赖项

1. Google Logging Library(glog),下载地址:https://code.google.com/p/google-glog/,然后解压安装:

如果没有权限就chmod a+x glog-0.3.3 -R , 或者索性 chmod 777 glog-0.3.3 -R , 装完之后,这个文件夹就可以kill了。

2. 其他依赖项,确保都成功

五、安装Caffe并测试

1. 安装pycaffe必须的一些依赖项:

2. 安装配置nVidia cuDNN 加速Caffe模型运算

a. 安装前请去先官网下载最新的cuDNN (cudnn-70-linux-x64-v3)。

3. 切换到Caffe-master的文件夹,生成Makefile.config配置文件,执行:

4. 配置Makefile.config文件(仅列出修改部分)

a. 配置一些引用文件(增加部分主要是解决新版本下,HDF5的路径问题)

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

b. 启用Intel Parallel Studio XE 2016

BLAS := mkl

c. 配置路径,实现caffe对Python和Matlab接口的支持

PYTHON_LIB := /usr/local/lib

MATLAB_DIR := /usr/local/MATLAB/R2014a

d. 启用OpenCV 3.0, 去掉"#"

OPENCV_VERSION =3

5. 编译caffe-master!!!"-j4"是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。

编译Python和Matlab用到的caffe文件

当然,在 make all -j4编译的时候意料之中地又出现了各种问题,下面是汤圆帮我解决的过程,原谅我并不知道都作了什么,只是新建了caffe进行编译,并不在我原来的文件夹中,简单记录下:

ls  458  cd /usr/local/cuda  459  ls  460  cd samples/  461  ls  462  make  463  sudo make  464  sudo apt-get -y atlas atlas-dev  lapack lapack-dev  blas blas-dev cblas cblas-dev  465  sudo apt-get install -y atlas atlas-dev  lapack lapack-dev  blas blas-dev cblas cblas-dev  466  sudo apt-get install libatlas-base-dev  467  sudo ldconfig  468  ls  469  ./bin/x86_64/linux/release/deviceQuery  470  ls  471  cd  472  cd programs/  473  ls  474  cd caffe/  475  ls  476  emacs Makefile  477  emacs Makefile.config  478  make  479  sudo apt-get install -y libhdf5-serial-dev  480  make -j4  481  sudo ldconfig  482  ls /usr/include/hdf5/serial/  483  emacs Makefile.config  484  make -j4  485  ls /usr/lib/  486  locate hdf5.so  487  emacs Makefile.config  488  make -j4  489  locate opencv_imgcodecs.so  490  cd /home/in66/caffeinstall/Install-OpenCV-master-master/Ubuntu/3.0/OpenCV/opencv-3.0.0-rc1/build  491  ls  492  sudo make install  493  echo '/usr/local/lib' >> /etc/ld.so.conf.d/opencv.conf  494  sudo echo '/usr/local/lib' >> /etc/ld.so.conf.d/opencv.conf  495  ls /etc/ld.so.conf.d/opencv.conf   496  sudo emacs /etc/ld.so.conf.d/opencv.conf   497  sudo ldconfig  498  sudo echo 'PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig' >> /etc/bash.bashrc  499  sudo emacs /etc/bash.bashrc   500  cd  501  cd programs/  502  ls  503  source /etc/bash.bashrc  504  ls  505  cd caffe/  506  ls  507  make -j4  508  sudo apt-get install -y libleveldb-dev liblmdb-dev libboost-all-dev   509  sudo ldconfig  510  emacs Makefile  511  emacs Makefile.config  512  make  513  emacs Makefile.config  514  make   515  cd  516  cd programs/  517  git clone https://github.com/google/leveldb.git  518  cd leveldb/  519  make  520  sudo cp -r include/leveldb /usr/local/include  521  sudo cp libleveldb.so /usr/local/lib  522  sudo ldconfig  523  cd ../caffe/  524  make  525  ls  526  cd ../  527  ls  528  cd caffe/  529  ls  530  make matcaffe  531  emacs Makefile.config  532  make   533  make matcaffe  534  cd ../  535  ls  536  unzip opencv-2.4.11.zip   537  cd opencv-2.4.11/  538  ls  539  mkdir build  540  cd build/  541  cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler  -D BUILD_NEW_PYTHON_SUPPORT=ON ..  542  make -j4  543  sudo make install  544  cd  545  cd programs/  546  sudo ldconfig  547  cd caffe/  548  emacs Makefile.config  549  make  550  make clean  551  make -j4  552  sudo apt-get install -y libgflags-dev libgoogle-glog-dev   553  make matcaffe  554  ls  555  locate gflag.so  556  sudo updatedb  557  locate gflag.so  558  locate gflag   559  emacs Makefile.config  560  make  561  ldconfig  562  sudo ldconfig  563  make clean  564  make -j4  565  make matcaffe  566  cd ../  567  ls  568  git clone https://github.com/google/protobuf.git  569  git clone https://github.com/google/glog.git  570  git clone https://github.com/gflags/gflags.git  571  cd gflags/  572  mkdir -p build && cd build  573  export CXXFLAGS="-fPIC" && cmake -D CMAKE_INSTALL_PREFIX=/usr/local ..  574  make -j4  575  cmake -h  576  sudo make install  577  ldconfig  578  sudo ldconfig  579  cd ../../caffe/  580  ls  581  make clean  582  make -j4  583  ls  584  make matcaffe  585  sudo apt-get install python-dev python-pip  586  cd python/  587  ls  588  emacs require.sh  589  sudo bash require.sh   590  cd ../  591  ls  592  make pycaffe  593  ls  594  cd ../  595  ls  596  cd ../  597  ls  598  cd programs/  599  ls  600  sudo reboot  601  ls  602  ifconfig  603  tar zxf protobuf-2.5.0.tar.gz   604  cd protobuf-2.5.0/  605  ls  606  bash autogen.sh   607  sudo apt-get -y automake autoconf  608  sudo apt-get install -y automake autoconf  609  bash autogen.sh   610  ./configure --prefix=/usr/local  611  make -j4  612  sudo make install  613  locate libprotoc.so  614  sudo updatedb  615  locate libprotoc.so  616  sudo emacs /etc/profile  617  source /etc/profile  618  locate cblas  619  locate cblas.so  620  ls  621  mkdir programs  622  cd programs/  623  ls  624  ifconfig  625  ls  626  ls ../  627  cp -r ../caffe-master caffe  628  ls  629  cd caffe/  630  ls  631  make -j4  632  make clean  633  ls  634  ls -a  635  make -j4  636  rm -rf .build_debug  637  make -j4  638  cd ../  639  rm -rf caffe  640  git clone https://github.com/BVLC/caffe.git  641  sudo apt-get install -y git cmake  642  git clone https://github.com/BVLC/caffe.git  643  cd caffe/  644  ls  645  cp Makefile.config.example  Makefile.config  646  make -j4  647  emacs Makefile  648  emacs Makefile.config  649  make  650  emacs Makefile.config  651  emacs Makefile  652  make  653  sudo ldconfig  654  make  655  ssh tutu@10.10.105.2  656  cd /usr/local/MATLAB/R2014a/bin/  657  ./matlab   658  cd caffe-master/  659  sudo make all -j4  660  sudo make clean  661  sudo make all -j4  662  ls /usr/local/include/  663  whereis protobuf  664  ls  665  emacs Makefile.config  666  make  667  sudo make  668  ls /usr/local/include/  669  cd programs/  670  ls  671  grep MHz /proc/cpuinfo  672  ls  673  cd ATLAS/  674  ls  675  rm -rf build/  676  ls  677  mkdir -p build && cd build  678  ../configure -D c -DPentiumCPS=3200 -b 64 -Fa alg -fPIC --prefix=/usr/local/atlas --with-netlib-lapack-tarfile=$cur/lapack-3.5.0.tgz  679  cat ../INSTALL.txt   680  ../configure  -b 64 -Fa alg -fPIC --prefix=/usr/local/atlas --with-netlib-lapack-tarfile=$cur/lapack-3.5.0.tgz  681  ../configure  -fPIC --prefix=/usr/local/atlas --with-netlib-lapack-tarfile=$cur/lapack-3.5.0.tgz  682  ../configure  --prefix=/usr/local/atlas --with-netlib-lapack-tarfile=$cur/lapack-3.5.0.tgz

其中

(1)遇到问题caffe.pb.h 丢失:

 fatal error: caffe/proto/caffe.pb.h: No such file or directory #include "caffe/proto/caffe.pb.h"
解决方法见:http://blog.csdn.net/xmzwlw/article/details/48270225


(2)遇到问题opencv error:

/usr/bin/ld: .build_release/tools/check_img.o: undefined reference to symbol '_ZN2cv6imreadERKNS_6StringEi'/usr/bin/ld: note: '_ZN2cv6imreadERKNS_6StringEi' is defined in DSO /usr/local/lib/libopencv_imgcodecs.so.3.1 so try adding it to the linker command line/usr/local/lib/libopencv_imgcodecs.so.3.1: could not read symbols: 无效的操作collect2: 错误:ld 返回 1make: *** [.build_release/tools/check_img.bin] 错误 1make: *** 正在等待未完成的任务....
解决方法见:http://stackoverflow.com/questions/31253870/caffe-opencv-error

就酱,入职三天来就配置了这么些东西,真是悲哀啊,真是后悔以前总是偷懒,呜呜呜~



0 0