配置Caffe
(1) 安裝相關(guān)依賴
sudoapt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-devlibhdf5-serial-dev protobuf-compiler
sudoapt-get install --no-install-recommends libboost-all-dev
sudoapt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudoapt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
(2) 下載Caffe
git clone https://github.com/BVLC/caffe
或者根據(jù)自己需要下載不同的caffe
(3) 修改Makefile.config
首先將Makefile.config.example的內(nèi)容復(fù)制到Makefile.config:
cp Makefile.config.example Makefile.config
打開并修改配置文件:
vim Makefile.config #打開Makefile.config文件
根據(jù)個(gè)人情況修改文件:
a. 若使用cudnn衔蹲,則將
USE_CUDNN:= 1
修改成:
USE_CUDNN:= 1
b. 若使用的opencv版本是3的,則將
OPENCV_VERSION:= 3
修改為:
OPENCV_VERSION:= 3
c. 若要使用python來編寫layer构罗,則將
WITH_PYTHON_LAYER:= 1
修改為 WITH_PYTHON_LAYER := 1
d. 如果使用matlab 則
修改為MATLAB_DIR := /usr/local/MATLAB/R2014a/
e. 將
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
這是因?yàn)閁buntu16.04的文件包含位置發(fā)生了變化,尤其是需要用到的hdf5的位置,所以需要更改這一路徑。
(4) 修改Makefile文件
打開Makefile文件芒划,做如下修改豁延,將:
NVCCFLAGS +=-ccbin=(COMMON_FLAGS)
替換為:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=(COMMON_FLAGS)
(5) 編輯/usr/local/cuda/include/host_config.h
(有的caffe版本沒有這個(gè),所以就不需要修改)
將其中的第115行注釋掉,將
#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!
改為:
//#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!
(6) 編譯
make all -j #-j后不加數(shù)字是最大性能,或者自己實(shí)際情況加數(shù)字
(7) 測(cè)試
sudo make runtest
編譯問題
cudnn.hpp:127:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDescriptor
如果用的其他版本的caffe 可能會(huì)遇到這個(gè)問題,因?yàn)閏udnn版本與系統(tǒng)cudnn版本不對(duì)應(yīng)
解決辦法:使用最新caffe版本里的文件替換
首先下載最新caffe
git clone https://github.com/BVLC/caffe
然后替換
(1) caffe/include/caffe/util/cudnn.h
cp newcaffepth/include/caffe/util/cudnn.h yourcaffepth/include/caffe/util/
(2)caffe/include/caffe/layers/ 下面的cudnn開頭文件
cp newcaffepth/include/caffe/layers/cudnn_* yourcaffepth/include/caffe/layers/
(3) caffe/src/caffe/layers/ 下面cudnn開頭的文件
cp newcaffepth/src/caffe/layers/cudnn* yourcaffepth/src/caffe/layers/