歡迎使用CSDN-markdown編輯器

deepin15.4.1安裝caffe


此安裝僅僅針對intel核顯及NVIDIA獨顯用戶

cpu:intel core i7 6700Q

顯卡:NVIDIA gt960m

操作系統: deepin15.4.1 x64


步驟

  1. cuda及cudnn安裝
  2. opencv3.2編譯安裝
  3. caffe安裝

1.安裝nvidia-bumblebee,實現雙顯卡切換

對於筆記本用戶來說,一直開着獨顯的話發熱量會明顯增大,並且耗電也會變快,所以需要安裝bumblebee來切換顯卡,平時只用核顯就足夠了,需要運行cuda或者玩遊戲的話纔開啓獨顯。

2.安裝cuda開發工具

cuda在linux下的開發工具基本上夠用了,有基於eclipse 的nsight,有visual profiler性能分析工具,還有pycuda庫實現對python運算的加速。但是我以前在deepin上面嘗試安裝官方的.run包,均以失敗告終,很容易把電腦搞崩潰。最近終於找到了從軟件源直接安裝cuda的方法。

具體安裝方法:

1.安裝nvidia-bumblebee

sudo apt update
sudo apt install bumblebee bumblebee-nvidia nvidia-smi

一行命令搞定nvidia驅動、bumblebee切換程序、和顯卡狀態監控程序。

不用管nouveau驅動,系統會自己屏蔽掉。

然後重啓

sudo reboot

重啓後測試

nvidia-smi

optirun nvidia-smi

這裏寫圖片描述

2.cuda開發工具

首先安裝配置g++,gcc

因爲cuda版本原因,cuda8之前都只支持g++-4.8,gcc-4.8

所以gcc需要降級

sudo apt install g++-4.8 gcc-4.8

然後更改軟連接

cd /usr/bin
sudo rm gcc g++
sudo ln -s g++-4.8 g++
sudo ln -s gcc-4.8 gcc

然後下載開發工具

sudo apt install nvidia-cuda-dev nvidia-cuda-toolkit nvidia-nsight nvidia-visual-profiler

使用nsight的方法爲:在終端下輸入

optirun nsight

這裏寫圖片描述

3.安裝pycuda擴展

有的同學有使用python 寫cuda的需求,推薦pycuda,能夠自定義核函數,並且裏面帶的GpuArray這個數據結構很好用安裝方法爲:

sudo apt install python-pycuda

寫一個簡單的測試代碼

from __future__ import print_function
from __future__ import absolute_import
import pycuda.autoinit
import pycuda.gpuarray as gpuarray
import pycuda.driver as cuda
import numpy
import time

free_bytes, total_bytes = cuda.mem_get_info()
exp = 10
while True:
   fill_floats = free_bytes / 4 - (1<<exp)
   if fill_floats < 0:
       raise RuntimeError("couldn't find allocatable size")
   try:
       print("alloc", fill_floats)
       ary = gpuarray.empty((fill_floats,), dtype=numpy.float32)
       break
   except:
       pass

   exp += 1

ary.fill(float("nan"))

print("filled %d out of %d bytes with NaNs" % (fill_floats*4, free_bytes))

time.sleep(10)

另存爲cuda_test.py

然後

optirun python python cuda_test.py

這裏寫圖片描述

至此cuda的安裝完成,爲了用NVIDIA顯卡加速深度學習,還需要安裝cudnn

cudnn詳細安裝步驟

1、從官網上下載cudnn的安裝包。

2、將安裝包解壓,將此安裝包放在常用的放遠嗎路徑下即可,並在當前路徑下進行解壓,解壓後的文件夾名爲cuda。

3、在終端上編輯如下代碼:

cd ./cuda/include
sudo cp *.h /usr/include (這裏是你安裝cuda的地址,由於使用apt安裝,系統講cuda直接安裝在/usr目錄)
cd ./cuda/lib64
sudo cp libcudnn.so.7.0.1 /usr/lib
sudo cp libcudnn_static.a /usr/lib
sudo ln -s /usr/libcudnn.so.7.0.1 /usr/libcudnn.so.7
sudo ln -s /usr/libcudnn.so.7 /usr/libcudnn.so

至此cudnn安裝完畢,第一步完成。


opencv的編譯安裝過程用到cmake,cmake命令行參數配置太複雜,這裏採用他的圖形化工具

1.安裝OpenCV所需要的庫

sudo apt-get install build-essential (如果按照之前的流程一路走下來,此步驟省略,因爲會造成gcc/g++從4.8升級到當前最新版本,後面的cuda及cudnn加速程序編譯報錯)
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libglu1-mesa-dev (OpenGL相關的依賴項)

2.從github上下載OpenCV源代碼

git clone https://github.com/opencv/opencv.git

3.安裝cmake的GUI工具,方便配置

sudo apt-get install cmake-gui

然後打開該軟件,輸入OpenCV源碼在本地的路徑,已經編譯配置過程產生的中間文件保存在本地的路徑

這裏寫圖片描述

× 路徑配置完之後,澱積左下角的Configure按鈕,開始執行依賴檢查等環境配置

× 成功之後,會在上面產生一個列表,是將來編譯時需要的一些環境配置,一般默認即可,這裏我們稍作修改,修改CMAKE_BUILD_TYPE爲Release,修改CMAKE_INSTALL_PREFIX爲/usr/local,選中WITH-OPENGL

× 完了之後,澱積左下角的Generate按鈕,將會根據上面的配置生成Makefile文件

這裏寫圖片描述

在build路徑下執行命令

make -j8 (多線程編譯,注意散熱,這裏的數字8根據自己計算機cpu核心的個數自行調整)

編譯過程耗時很久,大概一個半小時左右,編譯完成之後安裝即可

sudo make install
sudo ldconfig

測試opencv安裝是否成功,opencv完全編譯安裝會安裝對應的python接口,在終端中簡單測試即可
這裏寫圖片描述
至此opencv3.2安裝完成


終於來到重頭戲了,caffe的安裝

1.依賴庫安裝

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler  
sudo apt-get install --no-install-recommends libboost-all-dev 

安裝ATLAS,輸入下述命令:

sudo apt-get install libatlas-base-dev 

安裝剩餘依賴項

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2.刪除deepin軟件源中太新的庫,這些庫採用比gcc/g++4.8.5更新的編譯器編譯,有不兼容部分,後續的caffe編譯中會出現找不到對應函數的情況

sudo apt-get remove libleveldb-dev
sudo apt-get remove libprotobuf-dev
sudo apt-get remove libgflags-dev
sudo apt-get remove libgoogle-glog-dev

3.重新編譯安裝上述庫

leveldb

git clone https://github.com/google/leveldb.git
cd ./leveldb/
make -j8

安裝leveldb

sudo cp -r /leveldb/include/ /usr/include/
sudo cp /leveldb/out-shared/libleveldb.so.1.20 /usr/lib/
sudo ln -s /usr/lib/libleveldb.so.1.20 /usr/lib/libleveldb.so.1
sudo ln -s /usr/lib/libleveldb.so.1.20 /usr/lib/libleveldb.so
sudo ldconfig

查看安裝是否成功

ls /usr/lib/libleveldb.so*
# 顯示下面 3 個文件即安裝成功
/usr/lib/libleveldb.so.1.20
/usr/lib/libleveldb.so.1
/usr/lib/libleveldb.so

protobuf編譯安裝

deepin庫中默認採用的是protobuf-3.0x,而caffe的github代碼中兼容protobuf2.5

protobuf2.5在其官方的github中已經沒法提供下載,這裏提供一個鏈接https://code.google.com/p/protobuf/downloads/list,網絡不行的話,可以去簡單檢索一下,到csdn下載即可

tar -zxvf protobuf-2.5.0
cd protobuf-2.5.0
./autogen.sh
./configure --prefix=/usr/
make -j8
make check -j8
sudo make install
sudo ldconfig

查看版本

這裏寫圖片描述

gflags安裝

git clone https://github.com/gflags/gflags.git
cd gflags
mkdir build
cd build
export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
make -j8
sudo make install

glog安裝

git clone https://github.com/golang/glog.git
cd glog
./configure
make
sudo make install

下載caffe源碼

git clone https://github.com/BVLC/caffe.git  

修改Makefile.config

cp Makefile.config.example Makefile.config  
vim Makefile.config 

根據個人情況修改

#USE_CUDNN := 1
改爲
USE_CUDNN := 1

opencv3版本

#OPENCV_VERSION := 3 
改爲
OPENCV_VERSION := 3 

使用python layer

#WITH_PYTHON_LAYER := 1 
改爲
WITH_PYTHON_LAYER := 1 

最重要的一項

1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

修改爲

1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial /usr/liclude /usr/include/leveldb /usr/local/include/gflags /usr/include/google/protobuf
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr /usr/lib/x86_64-linux-gnu/hdf5/serial

修改Makefile

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

至此準備工作結束,開始編譯

make all -j8
make test -j8

編譯完成,以最簡單的MNIST手寫體數據集做一個簡單測測試

# 下載MNIST數據
./data/mnist/get_mnist.sh

這裏寫圖片描述

# 數據格式轉換
./examples/mnist/create_mnist.sh

這裏寫圖片描述

# 訓練LeNet-5超參數(hyperparameters)
optirun ./examples/mnist/train_lenet.sh

這裏寫圖片描述

這裏寫圖片描述

# 測試集上做預測測試
optirun ./build/tools/caffe.bin test \
-model examples/mnist/lenet_train_test.prototxt \
-weights examples/mnist/lenet_iter_10000.caffemodel \
-iterations 100

這裏寫圖片描述

這裏寫圖片描述

至此,全部教程結束。


參考文獻

1.http://blog.csdn.net/liaodong2010/article/details/71482304

2.https://jingyan.baidu.com/article/36d6ed1f95e0b91bcf4883a6.html

3.http://caffe.berkeleyvision.org/installation.html

發佈了32 篇原創文章 · 獲贊 18 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章