首頁 > 軟體

Ubuntu 16.04+CUDA8.0+MKL+OpenCV3.2+Matlab R2016b+Caffe安裝

2020-06-16 17:04:48

經過無數次的失敗後,終於安裝成功,安裝過程並不是很難,只是遇到問題時候的解決方式不對,導致花費了不少時間。現將過程整理如下:

電腦的環境:Ubuntu 16.04 64位元系統(Windows7雙系統)、GPU型號為GeForce GT 540M。

1、先安裝相關依賴項

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 libopenblas-dev liblapack-dev libatlas-base-dev 

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2、安裝NVIDIA驅動

很多教學都是用驅動檔案安裝,但我的電腦驅動檔案總是安裝失敗,即使成功了也會遇到很多問題(重新啟動後黑畫面、迴圈登入、NVIDIA X Server Settings僅顯示部分資訊等)。所以,驅動檔案安裝方式請自行搜尋。

最後,我直接通過系統設定->軟體和更新->附件驅動,安裝了最新的專有驅動nvidia-375。若總是應用更改失敗,則可以嘗試更新源,更新方式如下:

sudo vi /etc/apt/sources.list  ->替換源  ->sudo apt-get update

替換內容如下(僅供參考):

 

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted

 

 

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted

 

 

deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted

 

 

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial universe

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

 

 

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties

 

 

deb http://archive.canonical.com/ubuntu xenial partner

 

 

deb-src http://archive.canonical.com/ubuntu xenial partner

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted

 

 

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe

 

 

deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

 

3、CUDA8.0

(1)下載:https://developer.nvidia.com/cuda-downloads

(2)下載完成後執行以下命令:

 

sudochmod777 cuda_8.0.44_linux.run
sudo  ./cuda_8.0.44_linux.run
注意:執行後會有一系列提示讓你確認,但是注意,有個讓你選擇是否安裝nvidia367驅動時,一定要選擇否
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
因為前面我們已經安裝了更加新的nvidia367,所以這裡不要選擇安裝。其餘的都直接預設或者選擇是即可。

(3)環境變數設定

 

開啟~/.bashrc檔案: sudo gedit ~/.bashrc 
將以下內容寫入到~/.bashrc尾部:

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

(4)測試CUDA的samples

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
makesudo ./deviceQuery

如果顯示一些關於GPU的資訊,則說明安裝成功。

4、設定cuDNN
cuDNN是GPU加速計算深層神經網路的庫。首先去官網 https://developer.nvidia.com/rdp/cudnn-download 下載cuDNN,需要註冊一個賬號才能下載。

 

下載cuDNN5.1之後進行解壓:

sudo tar -zxvf ./cudnn-8.0-linux-x64-v6.0.tgz 

進入cuDNN5.1解壓之後的include目錄,在命令列進行如下操作:

cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include  #複製標頭檔案

再將進入lib64目錄下的動態檔案進行複製和連結:

cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/    #複製動態連結庫
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6    #刪除原有動態檔案
sudo ln -s libcudnn.so.6.0.20 libcudnn.so.6  #生成軟銜接
sudo ln -s libcudnn.so.6 libcudnn.so      #生成軟連結

5、安裝MKL

這裡也可以選擇(ATLASMKL或者OpenBLAS),依賴檔案安裝時已經安裝了ATLAS,我這裡安裝MKL,首先下載並安裝英特爾®數學核心庫 Linux*MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下載連結是:https://software.intel.com/en-us/intel-education-offerings使用學生身份(郵件 + 學校)下載Student版,填好各種資訊,可以直接下載,同時會給你一個郵件告知序列號。下載完之後,要把檔案解壓到home資料夾,或者其他的ext4的檔案系統中。

接下來是安裝過程,先授權,然後安裝:

$ tar zxvf parallel_studio_xe_2017_update3.tgz

$ chmod a+x parallel_studio_xe_2016 -R

$ sudo sh install_GUI.sh

PS: 安裝的時候,建議使用root許可權安裝,過程中會要求輸入Linuxroot口令。

 

MKLCUDA的環境設定

(1) 新建intel_mkl.conf並編輯

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

/opt/intel/lib/intel64

/opt/intel/mkl/lib/intel64

(2) 新建cuda.conf,並編輯

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

/usr/local/cuda/lib64

/lib

(3) 完成lib檔案的連結操作,執行:

$ sudo ldconfig

6、安裝opencv3.2

 

從官網(http://opencv.org)下載Opencv。

unzip opencv-3.2.0.zip
cd ~/opencv-3.2.0
mkdir build
cd build

設定:

sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

編譯:

sudo make

sudomakeinstall

7、安裝Matlab

(1)下載Matlab2016b,請自行搜尋

 

下載後的Linux資料夾會有三個檔案分別是R2016b_glnxa64_dvd1.iso、R2016b_glnxa64_dvd2.iso和Matlab 2016b Linux64 Crack資料夾。Crack檔案解壓:

rar x Matlab 2016b Linux64 Crack.rar

注意:解壓後Crack資料夾中包含readme.txt檔案,裡面包含金鑰;license_standalone.lic檔案,用於進行軟體啟用;/bin/glnx64/檔案,用於進行matlab安裝目錄中bin/glnx64/的替換,裡面工四個檔案。

(2)掛載:首先建立掛載資料夾,本文為/home/generallc/matlab2016,然後用mount命令進行R2016b_glnxa64_dvd1.iso檔案掛載,注意當前只掛載R2016b_glnxa64_dvd1.iso檔案,R2016b_glnxa64_dvd2.iso先不要進行掛載。

命令:

mkdir /home/generallc/matlab2016                        

#掛載目錄

sudo mount -t auto -o loop /home/generallc/下載/matlab/R2016b_glnxa64_dvd1.iso /home/generallc/matlab2016

 

注意:/home/generallc/下載/matlab/為下載的linux版本MATLAB2016檔案目錄,/home/generallc/matlab2016為指定的掛載目錄

(3)安裝:進入到掛載目錄下,可以發現有install檔案,然後返回當前目錄的前一層進安裝

命令:

cd /home/generallc/matlab2016

cd ..  

sudo /home/generallc/matlab2016/install    # 進行安裝、彈出安裝介面,類似windows安裝,安裝金鑰在Crack檔案中的readme.txt中

注意:記住matlab安裝目錄,本文為/home/generallc/MATLAB

 

(4)安裝R2016b_glnxa64_dvd2.iso

當R2016b_glnxa64_dvd1.iso安裝完成後,提示拔出dvd1,然後插入dvd2對話方塊,此時需要掛載第二個iso檔案(R2016b_glnxa64_dvd2.iso)到/home/generallc/matlab2016資料夾下,這裡注意的是,由於你當時的終端視窗正在 進行安裝,所以你是無法進行操作的,所以你需要ctrl+Alt+t進行重新開一個終端命令視窗。掛載成功後直接點選ok就可以了。

命令:

ctrl+Alt+t    #新建視窗

sudo mount -t auto -o loop /home/generallc/下載/matlab/R2016b_glnxa64_dvd2.iso /home/generallc/matlab2016

(5)啟用:安裝完成後,進入安裝 目錄下,執行matlab檔案,彈出啟用對話方塊,選擇用不聯網的方法進行啟用。然後用用下載目錄中/bin/glnx64/的四個檔案替換matlab安裝目錄中bin/glnx64/裡面檔案。

命令:license檔案載入

cd /home/generallc/MATLAB/R2016b/bin  #進入到matlab安裝目錄中

./matlab             #執行matlab,彈出啟用對話方塊,選擇用不聯網的方法進行啟用,載入license_standalone.lic檔案

注意:本文啟用過程中,出現了許可權不足問題,採用chomd命令提高對license_standalone.lic檔案和安裝目錄R2016b的許可權

cd /home/generallc/MATLAB/R2016b/          #進入到掛載目錄中

sudo chmod 777 license_standalone.lic      #提高對license_standalone.lic檔案的操作許可權

cd /home/generallc/MATLAB    #進入到matlab安裝檔案中

sudo chmod -R 777 R2016b/      #提高對安裝目錄R2016b的操作許可權

命令:檔案替換,用下載目錄中/bin/glnx64/的四個檔案替換matlab安裝目錄中bin/glnx64/裡面檔案。
sudo cp /home/generallc/下載/matlab/R2016b/bin/glnxa64/libmwservices.so /home/generallc/MATLAB/R2016b/bin/glnxa64
sudo cp /home/generallc/下載/matlab/R2016b/bin/glnxa64/libmwlmgrimpl.so /home/generallc/MATLAB/R2016b/bin/glnxa64
sudo cp /home/generallc/下載/matlab/R2016b/bin/glnxa64/libinstutil.so /home/generallc/MATLAB/R2016b/bin/glnxa64
sudo cp /home/generallc/下載/matlab/R2016b/bin/glnxa64/libcufft.so.7.5.18 /home/generallc/MATLAB/R2016b/bin/glnxa64

8、Python安裝(根據需要安裝)

(1)anaconda安裝python2.7方式,下載Anacondahttps://www.continuum.io/downloads,下載完成之後,cd進入下載檔案所在的目錄:

bash Anaconda2-4.0.0-Linux-x86_64.sh

(2)安裝完成之後,在~/.bashrc檔案末尾新增Anaconda的庫檔案(注意“=”兩邊不要有空格),具體如下:

sudo gedit ~/.bashrc      

export PATH="/home/jeson/anaconda2/bin:$PATH" 

export LD_LIBRARY_PATH="/home/jeson/anaconda2/lib:$LD_LIBRARY_PATH" 

(3)重新啟動電腦之後,在命令列輸入:ipython,就可以看到python的版本。

9、caffe設定

(1)下載caffe原始碼:

git clone https://github.com/BVLC/caffe.git    //從github上git caffe  

(2)安裝設定:

cd caffe    //開啟到剛剛git下來的caffe  

cp Makefile.config.example Makefile.config //make指令只能make Makefile.config  

(3)組態檔修改

 

sudo gedit Makefile.config #開啟Makefile.config檔案 根據個人情況修改檔案:
a)若使用cudnn,則將
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1

 

b)啟用Intel Parallel Studio XE 2016

BLAS := mkl

c)設定路徑,實現caffePythonMatlab介面的支援

PYTHON_LIB := /usr/local/lib

MATLAB_DIR := /usr/local/MATLAB/R2016b

d)若使用的opencv版本是3的,則將
#OPENCV_VERSION := 3 
修改為: 
OPENCV_VERSION := 3
e)若要使用python來編寫layer,則將

#WITH_PYTHON_LAYER := 1  
修改為:

WITH_PYTHON_LAYER := 1 
f)重要的一項:將

 # Whatever else you find you need goes here. 下面的

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 

修改為:

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

這是因為Ubuntu16.04的檔案包含位置發生了變化,尤其是需要用到的hdf5的位置,所以需要更改這一路徑。

h)若安裝Anaconda,則

 

注釋掉原來的PYTHON_INCLUDE,使用ANACONDA的設定,
注意檔案的

ANACONDA_HOME := $(HOME)/anaconda
可能需要改為

ANACONDA_HOME := $(HOME)/anaconda2

根據自己的情況

#PYTHON_INCLUDE := /usr/include/python2.7
# /usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
ANACONDA_HOME := $(HOME)/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include
$(ANACONDA_HOME)/include/python2.7
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
#PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib

(4)修改makefile檔案

開啟makefile檔案,做如下修改:
將:

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替換為:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

(5)編輯/usr/local/cuda/include/host_config.h
將其中的第115行注釋掉,將

#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改為
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

(6)編譯caffe

 

make -j4 #-j根據自己電腦設定決定
編譯過程中可能會出現如下錯誤:
錯誤內容1:
"fatal error: hdf5.h: 沒有那個檔案或目錄"
解決辦法:
step1:在Makefile.config檔案的第85行,新增/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行程式碼改為第二行程式碼。
將:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
替換為:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
stept2:在Makefile檔案的第173行,把 hdf5_hl 和hdf5修改為hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行程式碼改為第二行程式碼。
將:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改為:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
錯誤內容2:
"libcudnn.so.5 cannot open shared object file: No such file or directory"
解決辦法是將一些檔案複製到/usr/local/lib資料夾下:
#注意自己CUDA的版本號!

 sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
 sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
 sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
 sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig

IT145.com E-mail:sddin#qq.com