1. 程式人生 > >伺服器caffe環境配置

伺服器caffe環境配置

配置目標cuda8.0 + cudnn + opncv3.1 + matlab-R2014a + mkl

伺服器配置:

顯示卡:k80

系統:ubuntu14.04(64位)

安裝步驟:

1. 安裝gcc: 

$ apt-get install gcc  $ apt-get install build-essential 2. 安裝顯示卡驅動: $ sudo ./NVIDIA-Linux-x86_64-375.20.run 3. 安裝 cuda: 在官網上下載cuda8.0版本 由於步驟2已經安裝了顯示卡驅動,所以在安裝cuda的時候不需要再安裝NIVIDIA Accelerate Graphics Driver:


安裝完成後,通過nvidia-smi命令查詢是否安裝成功:


然後配置cuda環境:

$ sudo gedit /etc/ld.so.conf.d/cuda.conf

在新建檔案中輸入:
/usr/local/cuda/lib64
/lib

儲存,並執行命令:sudo ldconfig  -v

4. 配置cudnn

$ tar zxvf cudnn-8.0-linux-x64-v5.1.tgz
$ cd cuda
$ sudo cp include/cudnn.h /usr/local/include
$ sudo cp lib64/libcudnn.* /usr/local/lib
$ sudo ln -sf /usr/local/lib/libcudnn.so.5.1.3 /usr/local/lib/libcudnn.so.5
$ sudo ln -sf /usr/local/lib/libcudnn.so.5 /usr/local/lib/libcudnn.so
$ sudo ldconfig -v


5.  安裝opencv 2) 安裝必備基本庫:
$ sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev  # 必要的基本庫
3) $ unzip opencv.zip
4) $ cd opencv-3.1.0
5) $ vim models/cudalegacy/src/graphcuts.cpp  (解決opencv v3,跟cuda8的相容性問題)
更改:
#include "precomp.hpp"
// GraphCut has been removed in NPP 8.0
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
void cv::cuda::graphcut(GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, Stream&) { throw_no_cuda(); } void cv::cuda::graphcut(GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, GpuMat&, Stream&) { throw_no_cuda(); }

6) $ mkdir build

7) $cd build

8) $cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

在configure過程中過程中,可能會出現下面的錯誤:

-- ICV: Downloading ippicv_linux_20151201.tgz...

在直接下載該檔案的過程中,會因為超時而失敗,多執行幾次就好了

9)   $ make -j16  (16核並行編譯)

10) $ sudo make install

6. 安裝mkl

1) 在官網中註冊下載



下載頁面中的serial  number在安裝過程中需要。

2) 安裝

$ tar zxvf parallel_studio_xe_2017.update1.tar.gz
$ cd parallel_studio_xe_2017
$ sudo sh ./install.sh

3) 環境設定:
$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
$ sudo ldconfig -v

7.安裝matlab 1) 複製,覆蓋原始檔: $ sudo cp Crack/install.jar java/jar 如果報錯:
Error: Installation cannot proceed. You may either: 
1. Set an X11 display, and restart the install process 
2. Use the silent install feature by specifying the -mode silent option

解決思路: $ sudo ./install -mode silent -agreeToLicense yes -fileInstallationKey 1111-1111-1111-1111
2)啟用:
$ sudo  /usr/local/MATLAB/R2014A/bin/activate_matlab.sh -propertiesFile  /usr/local/MATLAB/R2014A/etc/activate.ini
其中activate.ini的內容:
isSilent=true #開啟silent模式
activateCommand=activateOffline #設定啟用方式, 離線啟用 無需聯網
licenseFile= /usr/local/MATLAB/R2014A/etc/license_405329_R2014a.lic #license檔案位置
其中*.lic從crack裡面cp到/usr/local目錄下即可
3) Crack/Linux下的libmwservices.so 複製到 /usr/local/MATLAB/R2014A/bin/glnxa64

注:編譯的時候如果出現錯誤,將gcc,g++版本降低
$ sudo apt-get install gcc-4.7 g++4.7
$ sudo rm gcc
$ sudo ln -sf gcc-4.7 gcc

8. 安Anaconda

$bash Anaconda2*.sh $source ~/.bashrc

9. 安裝caffe

1)安裝依賴包

$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

2)下載caffe

$ git clone --recursive https://github.com/BVLC/caffe.git

3)配置Makefile.config檔案

修改部分:

USE_CUDNN := 1 #啟用cudnn
...
OPENCV_VERSION := 3 #啟用opencv
...
CUDA_DIR := /usr/local/cuda
...
BLAS := mkl #啟用mkl
...
MATLAB_DIR := /usr/local/MATLAB/R2014a#實現caffe對matlab介面的支援
...

ANACONDA_HOME := $(HOME)/anaconda2

PYTHON_INCLUDE := $(ANACONDA_HOME)/include \            $(ANACONDA_HOME)/include/python2.7 \            $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/includePYTHON_LIB := $(ANACONDA_HOME)/lib

...

4.編譯:
$ makeall-j32
$ make test-j32
$ make runtest-j32
$ make pycaffe-j32
$ make matcaffe-j32

[注]

1) 在執行相關程式是如果報錯:ImportError: No module named google.protobuf.internal, 解決方法:pip install protobuf==2.6.0

2)報錯:Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: Python, 解決方法,在Makefile.config檔案裡面新增WITH_PYTHON_LAYER :=1,

然後重新編譯

參考文獻