參考地址:Ubuntu16.04+CUDA8.0+caffe配置
一 安裝Nvidia驅動
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.安裝過程(略,在設置里安裝驅動,版本390)
3.安裝完成之后輸入以下指令進行驗證:
sudo nvidia-smi
若列出了GPU的信息列表則表示驅動安裝成功。
二 安裝Cuda
CUDA是NVIDIA的編程語言平台,想使用GPU就必須要使用cuda。
(1)下載CUDA
首先在官網上(https://developer.nvidia.com/cuda-downloads)下載CUDA:
(2)安裝
同樣,簡化命名為cuda.run
sudo sh cuda.run
注意不要安裝圖形驅動,其他一路綠燈
(3)環境變量配置
打開~/.bashrc文件:
sudo gedit ~/.bashrc
將以下內容寫入到~/.bashrc尾部:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
(4)測試CUDA的sammples
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery #由自己電腦目錄決定 sudo make sudo ./deviceQuery
如果顯示一些關於GPU的信息,則說明安裝成功。
三 安裝cudnn
cuDNN是GPU加速計算深層神經網絡的庫。
首先去官網(https://developer.nvidia.com/rdp/cudnn-download)下載cuDNN,可能需要注冊一個賬號才能下載。
下載CuDNN v7.X library for Linux
下載cuDNN之后進行解壓,cd進入cuDNN解壓之后的include目錄,在命令行進行如下操作:
sudo cp cudnn.h /usr/local/cuda/include/ #復制頭文件1
再將cd進入lib64目錄下的動態文件進行復制和鏈接:
sudo cp lib* /usr/local/cuda/lib64/ #復制動態鏈接庫 cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.7 #刪除原有動態文件 sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7 #生成軟銜接(注意這里要和自己下載的cudnn版本對應,可以在/usr/local/cuda/lib64下查看自己libcudnn的版本) sudo ln -s libcudnn.so.7 libcudnn.so #生成軟鏈接
四 安裝opencv
從官網(https://opencv.org/releases.html)下載Opencv(Sources版),並將其解壓到你要安裝的位置,假設解壓到了/home/opencv。
安裝前准備,創建編譯文件夾:
cd ~/opencv
mkdir build
cd build
配置:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
編譯:
make -j8 #-j8表示並行計算,根據自己電腦的配置進行設置,配置比較低的電腦可以將數字改小或不使用,直接輸make。
以上只是將opencv編譯成功,還沒將opencv安裝,需要運行下面指令進行安裝:
sudo make install
五 安裝 caffe
(1)將終端cd到要安裝caffe的位置。
(2)從github上獲取caffe:
git clone https://github.com/BVLC/caffe.git
注意:若沒有安裝Git,需要先安裝Git:
sudo apt-get install git
(3)因為make指令只能make Makefile.config文件,而Makefile.config.example是caffe給出的makefile例子,因此,首先將Makefile.config.example的內容復制到Makefile.config:
sudo cp Makefile.config.example Makefile.config
(4)打開並修改配置文件:
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 修改為 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的位置,所以需要更改這一路徑.
e.更重要的
注釋掉這一行
#-gencode arch=compute_20,code=sm_20
(5)修改makefile文件
打開makefile文件,做如下修改:
將:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替換為:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
(6)修改host_config.h
sudo gedit /usr/local/cuda/include/crt/host_config.h
將
#error-- unsupported GNU version! gcc versions later than 6 are not supported!
改為
//#error-- unsupported GNU version! gcc versions later than 6 are not supported!
(7)復制鏈接
sudo cp /opencv-3.4.0/build/lib/libopencv_core.so.3.4 /usr/local/lib/libopencv_core.so.3.4 && sudo ldconfig make -j8
在caffe/python目錄下
for req in $(cat requirements.txt); do pip install $req; done
然后
sudo apt-get install python-numpy make py
最后
make test -j8
make runtest
測試綠圖:
cifar-10測試: