設備:
Ubuntu 16.04
python 2.7(anaconda) python —version
cuda 9.0 nvcc -V
cuDNN 7101 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
openCV 2.4.9.1 pkg-config --modversion opencv
caffe主頁:
http://caffe.berkeleyvision.org/installation.html#compilation
主要步驟:
安裝依賴包
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
2. 安裝CUDA
官方:https://developer.nvidia.com/cuda-downloads
參考: ?https://blog.csdn.net/u012235003/article/details/54575758/
2.1 檢查GPU的信息
lspci | grep -i nvidia
2.2 檢查是否安裝gcc
gcc - - version
2.3 檢查kernel版本
sudo apt-get install linux-headers-$(uname -r)
2.4 禁用nouveau 第三方顯卡驅動
2.4.1? 檢查nouveau運行狀態(tài)
lsmod | grep nouveau
2.4.2 在/etc/modprobe.d 中創(chuàng)建黑名單blacklist-nouveau.conf
sudo? touch? blacklist-nouveau.conf
sudo? chmod a+w+r blacklist-nouveau.conf? (給文件可讀可寫的權限)
vim blacklist-nouveau.conf
文件內容是:
blacklist nouveau
options nouveau modeset=0
2.4.3 運行命令
sudo update-initramfs -u
2.4.4 重啟設備
2.4.5 檢查nouveau運行狀態(tài)
2.5 下載CUDA
https://developer.nvidia.com/cuda-downloads
選擇runfile下載[注:之后可以按照官網安裝方式安裝CUDA]
2.6 安裝依賴包
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
2.7 開始安裝
2.7.1.重啟電腦 在進入到登錄界面時候,按住Ctrl+Alt+F1芯勘,進入到text mode床牧,登錄賬號 2.7.2.關閉圖形界面 終端命令:
sudo service lightdm stop
2.7.3.切換到cuda文件目錄 cd到下載好的cuda目錄侦高,例如我的cuda包在/home/tony/cuda中 再ls查看cuda名字 2.7.4.給cuda可執(zhí)行的權限
sudo chmod a+x cuda_7.5.18_linux.run
2.7.5.安裝步驟
sudo sh cuda_7.5.18_linux.run
(a)會先有個閱讀聲明习霹,一直按D即可碴萧,然后accept (b)第一個選項install nvidia accelerated Graphics Driver (y) (c)第二個選項install the OpenGL libraries 雙顯卡(指的是集成顯卡+獨立顯卡)選n囱嫩,單卡(如果沒有集成顯卡苦蒿,只有一個或多個支持GPU的顯卡)選y沾谓。雙顯卡選y的話委造,會出現黑屏或登錄界面無限循環(huán)的問題。 (d)后面的選項都是yes均驶,或者按默認路徑即直接按回車即可争涌。?
2.7.6.若出現下列顯示 上面無警告和報錯
Driver :Installed
Toolkit :Installed in /usr/local/cuda-7.5
Samples :Installed in /home/tony
即安裝暫時成功。
2.7.7.輸入
sudo service lightdm start
重新啟動圖形化界面 Alt + ctrl +F7辣恋,返回到圖形化登錄界面亮垫,輸入密碼登錄模软。 如果能夠成功登錄,則表示不會遇到循環(huán)登錄的問題饮潦,基本說明cuda的安裝成功了燃异。
2.7.8.搭配環(huán)境 終端輸入
echo 'export PATH=/usr/local/cuda-7.5/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
重啟ubuntu
2.8 測試cuda安裝結果
2.8.1.檢查路徑 ~/dev 下 有無存在名為 nvidia* (以nvidia開頭)的多個文件(device files) 若無,安裝錯誤继蜡,見解決篇回俐。?
2.8.2.檢查 CUDA Toolkit是否安裝成功 終端輸入 :
nvcc -V
會輸出CUDA的版本信息(V要大寫)?
2.8.3.編譯samples例子 進入到Samples安裝目錄,然后在該目錄下終端輸入make稀并,等待十來分鐘仅颇。?
2.8.4.編譯完成后測試 可以在Samples里面找到bin/x86_64/linux/release/目錄,并切換到該目錄 運行deviceQuery程序碘举,sudo ./deviceQuery 查看輸出結果忘瓦,重點關注最后一行,Pass表示通過測試
3 安裝BLAS
conda install blas
4 安裝些奇怪的東西(gflag引颈, glog耕皮, lmdb)
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
# glog
wget https://github.com/google/glog/archive/v0.3.3.tar.gz
tar zxvf v0.3.3.tar.gz
cd glog-0.3.3
./configure
make && make install
# gflags
wget https://github.com/schuhschuh/gflags/archive/master.zip
unzip master.zip
cd gflags-master
mkdir build && cd build
export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
make && make install
# lmdb
git clone https://github.com/LMDB/lmdb
cd lmdb/libraries/liblmdb
make && make install
5 下載Caffe
https://github.com/BVLC/caffe
6 編譯Caffe
cp Makefile.config.example Makefile.config
# Adjust Makefile.config (for example, if using Anaconda Python, or if cuDNN is desired)
make all
make test
make runtest
7 遇到的典型問題匯總
7.1 Compile Caffe 時vcc fatal : Unsupported gpu architecture 'compute_20'
解決辦法:
將Makefile.config中不支持的CUDA_ARCH注釋掉
7.2 cannot find hdf5
解決辦法:
在Makefile.config中
將
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/includeLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改為:
INCLUDE_DIRS :=? $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serialLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
//這是因為ubuntu16.04的文件包含位置發(fā)生了變化,尤其是需要用到的hdf5的位置蝙场,所以需要更改這一路徑然后:
cd /usr/lib/x86_64-linux-gnu
軟鏈接:
sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
7.3 在make runtest 的時候遇到段錯誤 core dumped
查看warning信息:
Warning! ***HDF5 library version mismatched error***
The HDF5 header files used to compile this application do not match the version used by the HDF5 library to which this application is linked.Data corruption or segmentation faults may occur if the application continues.
This can happen when an application was compiled by one version of HDF5 but linked with a different version of static or shared HDF5 library.
You should recompile the application or check your shared library related settings such as 'LD_LIBRARY_PATH'.
You can, at your own risk, disable this warning by setting the environment variable 'HDF5_DISABLE_VERSION_CHECK' to a value of ‘1'. Setting it to 2 or higher will suppress the warning messages totally. Headers are 1.10.2, library is 1.8.16
故障分析:
由于安裝了anaconda凌停,在安裝包的過程中,出現了兩個版本的HDF5售滤,發(fā)生沖突罚拟。
解決辦法:
step 1.給anaconda賦權,(一開始由于未賦予足夠權限完箩,導致了刪除赐俗、更新包過程出現錯誤),
sudo chmod -R 777 anaconda2/
step 2. 將anaconda中hdf5版本改變到系統(tǒng)對應版本
conda install -c anaconda hdf5=1.8.16
即更新下列包:
h5py: 2.8.0-py27h989c5e5_3 --> 2.6.0-np111py27_1
hdf5:? 1.10.2-hba1933b_1? ? --> 1.8.16-0? ? ? ?
numpy: 1.15.1-py27h1d66e8a_0 --> 1.11.3-py27hcd700cb_6
pytables: 3.4.4-py27ha205bf6_0? --> 3.2.2-np111py27_4? ?
scipy:? ? 1.1.0-py27hfa4b5c9_1? --> 1.1.0-py27hd20e5f9_0
【注】論壇https://www.cnblogs.com/platero/p/4077934.html提供的解決方案是錯的
Error-7.3 差不多花了我5個小時嗜憔,中間解決思路錯了秃励,多費了很多無用功氏仗,好在最后Mission Complete吉捶!