ubuntu16.04+anaconda2+gpu+caffe安裝

1. 安裝顯卡驅動
個人覺得安裝顯卡驅動是最煩的,所以單獨寫了博客,參考 Ubuntu16.04系統下裝顯卡驅動 ,在這就不再敘述。
2.安裝相關依賴

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

3. 安裝cuda
如果在cuda官網上下載的是最新版本,安裝起來可能會出現錯誤,於是我安裝的cuda8.o版本
鏈接: https://developer.nvidia.com/cuda-80-ga2-download-archive
在這裏插入圖片描述
下載好之後,在下載的文件夾中打開終端,輸入命令:

sudo sh cuda_8.0.61_375.26_linux.run

在這裏插入圖片描述
出現這個界面,然後一直按enter鍵,直到進度條爲100%,然後根據提示,依次輸入accept,n,y,y,y
在這裏插入圖片描述安裝結束後,設置變量環境,輸入命令:

sudo gedit ~/.bashrc

將以下內容寫入到~/.bashrc尾部:(別忘了改你安裝的對應的版本)

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存退出,輸入source ~/.bashrc
檢查是否安裝成功,輸入命令nvcc --version
在這裏插入圖片描述
如果出現上圖信息,說明cuda安裝成功。

4.安裝cudnn8.0
cudnn8.0下載連接:https://developer.nvidia.com/rdp/cudnn-archive
在這裏插入圖片描述
下載好之後,同樣在文件中打開終端,輸入命令

sudo tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz

解壓後,接着輸入命令

cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include
cd ..
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.0.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so

測試一下是否安裝成功,輸入命令

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

在這裏插入圖片描述
如果出現上圖信息,說明配置成功。
5.安裝opencv
ubuntu安裝caffe之前,必定要安裝opencv,網上很多教程都是說安裝opencv3.1版本,不知道什麼原因,可能是因爲版本舊的原因,怎麼都安裝不上,於是我選擇了opencv3.4.6版本,直接在opencv官網上就能下載。
同樣在下載的文件下打開終端,輸入命令

unzip opencv-3.4.6.zip
sudo mv opencv-3.4.6 opencv
cd ~/opencv
mkdir build
cd build

開始配置

sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

編譯

sudo make -j8 

以上只是編譯,下面開始安裝,輸入命令

sudo make install

檢測是否安裝成功

pkg-config opencv --modversion

如果顯示對應的安裝版本號,則說明安裝成功。

6. 安裝anaconda2
在anaconda官網上下載anaconda2,下載完後,在該文件中右擊,打開終端,輸入命令:

bash Anaconda2-2019.03-Linux-x86_64.sh

一直按enter鍵,在安裝過程中,會問安裝路徑,按回車即可。詢問是否添加到~/.bashrc中,回覆yes即可。
安裝完成後,執行命令如下:

echo 'export PATH="/home/csm/anaconda2/bin:$PATH"' >> ~/.bashrc

其中csm是我電腦用戶名,你得根據你電腦用戶名修改,接着輸入命令

source ~/.bashrc

測試一下是否安裝成功,輸入命令conda --version,如果出現如下圖所示,則說明安裝成功。
在這裏插入圖片描述
如果你看到這裏的話,說明你前面安裝的都很順利,喝杯水冷靜一下,因爲後面還有更大的坑等着我們。
7.安裝caffe
(1)首先最下載安裝包:https://github.com/BVLC/caffe
然後進行解壓unzip caffe-master.zip
(2)然後進入caffe-master文件夾,打開終端,輸入命令,複製Makefile.config文件

sudo cp Makefile.config.example Makefile.config

(3)打開Makefile.config文件sudo gedit Makefile.config
(4)修改Makefile.config文件內容:

  1. 應用 cudnn
#USE_CUDNN := 1
#修改成: 
USE_CUDNN := 1
  1. 應用 opencv 版本
#OPENCV_VERSION := 3 
#修改爲: 
OPENCV_VERSION := 3
  1. 使用 python 接口
#WITH_PYTHON_LAYER := 1 
#修改爲 
WITH_PYTHON_LAYER := 1
  1. 修改 python 路徑

在PYTHON_INCLUDE前面加一個#

#PYTHON_INCLUDE := /usr/include/python2.7 \
		/usr/lib/python2.7/dist-packages/numpy/core/include

將ANACONDA_HOME和PYTHON_INCLUDE前面的#去掉,anaconda修改爲anaconda2

ANACONDA_HOME := $(HOME)/csm/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
		$(ANACONDA_HOME)/include/python2.7 \
		$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include

如下圖所示
在這裏插入圖片描述
5. 重要的一步

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 

保存退出。
6. 在caffe-master文件夾下打雙擊打開Makefile文件

#將:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
#替換爲:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
#將:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
#改爲:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
  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 libatlas-base-dev 
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
conda install protobuf
  1. 編譯make all -j8,這時候你會發現各種各樣的錯,到這我都有點崩潰了,已經研究了好幾天了。
  2. 可能的錯誤
    (1)nvcc fatal : Unsupported gpu architecture ‘compute_20’
    修改方法,在caffe-master/cmake文件夾下,雙擊打開Cuda.cmake文件,將第7行修改爲第8行
  1 if(CPU_ONLY)
  2   return()
  3 endif()
  4 
  5 # Known NVIDIA GPU achitectures Caffe can be compiled for.
  6 # This list will be used for CUDA_ARCH_NAME = All option
  7 #set(Caffe_known_gpu_archs "20 21(20) 30 35 50 52 61")
  8 set(Caffe_known_gpu_archs "30 35 50 52 61")

(2)In file included from /usr/include/boost/python/detail/prefix.hpp:13:0,
from /usr/include/boost/python/args.hpp:8,
from /usr/include/boost/python.hpp:11,
from tools/caffe.cpp:2:
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: 沒有那個文件或目錄

這是因爲當前環境下沒有安裝的Python的開發庫,使用yum安裝一下即可,解決辦法

conda install python-devel

(3)make: *** [.build_release/src/caffe/layer_factory.o] Error 1
解決方案

make clean

export CPLUS_INCLUDE_PATH=/usr/include/python2.7

make all -j8

(4)make: *** [.build_release/lib/libcaffe.so.1.0.0] Error 1

解決方案
進入cuda/include文件夾中,打開終端命令

sudo cp cudnn.h /usr/local/cuda/include/

在這裏插入圖片描述
進入cuda/lib64文件夾中,打開終端命令

sudo cp {libcudnn.so,libcudnn.so.5,libcudnn.so.5.1.10,libcudnn_static.a} /usr/local/cuda/lib64

在這裏插入圖片描述
雖然說無法通過符號鏈接,但是不影響編譯
(5)find /usr/include -name pyconfig.h
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory

解決方案:
注意你的anaconda2的路徑

make clean
export CPLUS_INCLUDE_PATH=/usr/include/python2.7 
make all -j8

(6).build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory
Makefile:542: recipe for target ‘runtest’ failed

解決方案:

sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig

到這我真的無力吐槽了,就算前面出現這些個錯誤,按照百度的一一去解決,但是發現根本不管用,就在我快放棄的時候,第二天我又重新試了一遍,結果莫名其妙的就成功了,裝caffe真的需要靠運氣。
10 . 編譯成功後,即使沒報錯,也別高興的太早,在測試一下

sudo make runtest

如果運行出現下圖所示,表面安裝成功
在這裏插入圖片描述
11. 安裝 pycaffe
我以爲到這總能成功了吧,但是依然想多了,心裏是一萬cnm在崩騰。
輸入命令

sudo make pycaffe -j8

結果又報錯:
Makefile:517: recipe for target ‘python/caffe/_cmakaffe.so’ failed
解決方案:
首先確保Makefile.config中你的anaconda2的路徑是正確的,就是ANACONDA_HOME後面的路徑
然後輸入命令

sudo apt-get install python-numpy

重啓電腦,重新編譯

make clean
make all -j8
sudo make pycaffe -j8

md。終於編譯成功了,測試一下,輸入

python
import caffe

在這裏插入圖片描述
在這花了一個星期的時間終於成功了,真的很心酸

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章