(自用)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