1. 程式人生 > >(自用)Ubuntu16.04+cuda8.0+caffe配置及採坑

(自用)Ubuntu16.04+cuda8.0+caffe配置及採坑

電腦配置

  • OS:Ubuntu16.04
  • CPU:E5 2630 v4 (2.2GHz * 10)
  • Memory:DDR4 2600 RECC 16G*4
  • GPU:NVIDIA Titan XP *2

安裝過程

  • 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驅動

(1)查詢並下載驅動

https://www.nvidia.com/Download/index.aspx?lang=cn       根據自己顯示卡型號查詢對應驅動

(2)安裝驅動

安裝之前先解除安裝已經存在的驅動版本:

sudo apt-get remove --purge nvidia*


若電腦是整合顯示卡(NVIDIA獨立顯示卡忽略此步驟),需要在安裝之前禁止一項:

sudo service lightdm stop


執行以下指令安裝驅動:

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-367 #注意在這裡指定自己的驅動版本!


安裝完成之後輸入以下指令進行驗證:

sudo nvidia-smi


若列出了GPU的資訊列表則表示驅動安裝成功。

3.安裝CUDA

CUDA是NVIDIA的程式語言平臺,想使用GPU就必須要使用cuda。

(1)下載CUDA

https://developer.nvidia.com/cuda-toolkit-archive

當然是選擇local的runfile啦

(2)安裝CUDA


下載完成後執行以下命令:

sudo sh cuda_8.0.27_linux.run


注意:執行後會有一系列提示讓你確認,但是注意,有個讓你選擇是否安裝nvidia361驅動時,要選否:

(3)測試CUDA的sammples

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

make

sudo ./deviceQuery

4.配置cuDNN

在nvidia官網註冊賬號並下載cudnn ,cuda8.0 推薦配cudnn5.1 

https://developer.nvidia.com/rdp/cudnn-archive

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

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

再將cd進入lib64目錄下的動態檔案進行復制和連結:

sudo cp lib* /usr/local/cuda/lib64/    
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5    
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5  
sudo ln -s libcudnn.so.5 libcudnn.so      


5.安裝opencv

 從opencv官網下載,opencv原始碼包 https://opencv.org/releases.html,推薦opencv3.4.4。

cd ~/opencv

mkdir build

cd build

配置:


cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

編譯:

make -j20

安裝:

sudo make install

6.配置caffe

  • 將終端cd到要安裝caffe的位置
  • 從github上拉取caffe:

BVLC版:

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

MSRA版:

git clone https://github.com/Microsoft/caffe.git
  • 因為make指令只能make Makefile.config檔案,而Makefile.config.example是caffe給出的makefile例子,因此,首先將Makefile.config.example的內容複製到Makefile.config:
sudo cp Makefile.config.example Makefile.config
  • 開啟並修改配置檔案:
sudo gedit Makefile.config #開啟Makefile.config檔案

根據個人情況修改檔案: 
a.若使用cudnn,則

#USE_CUDNN := 1


修改成: 

USE_CUDNN := 1


b.若使用的opencv版本是3的,則

#OPENCV_VERSION := 3 


修改為: 

OPENCV_VERSION := 3



c.若要使用python來編寫layer,則

#WITH_PYTHON_LAYER := 1 


修改為 


d. 重要的一項 : 
將# 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的位置,所以需要更改這一路徑. 

  • 修改makefile檔案 

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

將:

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


替換為:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
  • 編輯/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!
  • 編譯
make all -j20 #根據自己電腦CPU的執行緒數來定啦
  • 編譯成功後可執行測試:
sudo make runtest -j20
  • 編譯pycaffe
sudo make pycaffe -j8