1. 程式人生 > >Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置說明

Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置說明

本文安裝顯示卡驅動的方式已經過時, 最新安裝說明請參考釋出在Gist上的這篇文章如有任何疑問,仍然歡迎在本文下留言 :P

(本文件使用同一塊NVIDIA顯示卡進行顯示與計算, 如分別使用不同的顯示卡進行顯示和計算,則可能不適用。)

1. 安裝build-essentials

安裝開發所需要的一些基本包

sudo apt-get install build-essential

2. 安裝NVIDIA驅動 (3.4.0)

2.1 準備工作(2014-12-03更新

在關閉桌面管理 lightdm 的情況下安裝驅動似乎可以實現Intel 核芯顯示卡 來顯示 + NVIDIA 顯示卡來計算。具體步驟如下:

1. 首先在BIOS設定裡選擇用Intel顯示卡來顯示或作為主要顯示裝置

2. 進入Ubuntu, 按 ctrl+alt+F1 進入tty, 登入tty後輸入如下命令

sudo service lightdm stop

該命令會關閉lightdm。如果你使用 gdm或者其他的desktop manager, 請在安裝NVIDIA驅動前關閉他。

2.2 安裝驅動

輸入下列命令新增驅動源

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update

安裝340版驅動 (CUDA 6.5.14目前最高僅支援340版驅動, 343, 346版驅動暫不支援)

sudo apt-get install nvidia-340

安裝完成後, 繼續安裝下列包 (否則在執行sample時會報錯)

sudo apt-get install nvidia-340-uvm

安裝完成後 reboot.

3. 安裝CUDA 6.5

點選此連結】 下載CUDA 6.5. 

然後通過下列命令, 將下載得到的.run檔案解壓成三個檔案, 分別為

  • CUDA安裝包: cuda-linux64-rel-6.5.14-18749181.run
  • NVIDIA驅動: NVIDIA-Linux-x86_64-340.29.run
  • SAMPLE包: cuda-samples-linux-6.5.14-18745345.run

這裡不安裝NVIDIA驅動

cuda6.5.run --extract=extract_path

注意, 需要通過下面命令給所有.run檔案可執行許可權

chmod +x *.run

3.1 安裝CUDA

通過下列命令安裝CUDA, 按照說明一步一步安裝至完成.

sudo ./cuda-linux64-rel-6.5.14-18749181.run

3.1.1 新增環境變數

安裝完成後需要在/etc/profile中新增環境變數, 在檔案最後新增:

PATH=/usr/local/cuda-6.5/bin:$PATH
export PATH

儲存後, 執行下列命令, 使環境變數立即生效

source /etc/profile

3.1.2 新增lib庫路徑

/etc/ld.so.conf.d/加入檔案 cuda.conf, 內容如下

/usr/local/cuda-6.5/lib64

執行下列命令使之立刻生效

sudo ldconfig

3.2 安裝CUDA SAMPLE

首先安裝下列依賴包

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa-dev

然後用下述命令安裝sample檔案

sudo ./cuda-samples-linux-6.5.14-18745345.run

完成後編譯Sample檔案, 整個過程大概10分鐘左右

cd /usr/local/cuda-6.5/samples
sudo make

 全部編譯完成後, 進入 samples/bin/x86_64/linux/release, sudo下執行deviceQuery

sudo ./deviceQuery

如果出現下列顯示卡資訊, 則驅動及顯示卡安裝成功:

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 670"
  CUDA Driver Version / Runtime Version          6.5 / 6.5
  CUDA Capability Major/Minor version number:    3.0
  Total amount of global memory:                 4095 MBytes (4294246400 bytes)
  ( 7) Multiprocessors, (192) CUDA Cores/MP:     1344 CUDA Cores
  GPU Clock rate:                                1098 MHz (1.10 GHz)
  Memory Clock rate:                             3105 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 524288 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Bus ID / PCI location ID:           1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForce GTX 670
Result = PASS

 4. 安裝Intel MKL 

(如果沒有可以安裝OpenBLAS代替)解壓安裝包,下面有一個install_GUI.sh檔案, 執行該檔案,會出現圖形安裝介面,根據說明一步一步執行即可。

注意: 安裝完成後需要新增library路徑

sudo gedit /etc/ld.so.conf.d/intel_mkl.conf

在檔案中新增內容

/opt/intel/lib
/opt/intel/mkl/lib/intel64

注意把路徑替換成自己的安裝路徑。 編輯完後執行

sudo ldconfig

5. 安裝OpenCV

這個儘量不要手動安裝, Github上有人已經寫好了完整的安裝指令碼:https://github.com/jayrambhia/Install-OpenCV

下載該指令碼,進入Ubuntu/2.4 目錄, 給所有shell指令碼加上可執行許可權

chmod +x *.sh

然後安裝最新版本 (當前為2.4.9)

sudo ./opencv2_4_9.sh

指令碼會自動安裝依賴項,下載安裝包,編譯並安裝OpenCV。整個過程大概半小時左右。 

注意,中途可能會報錯

opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization

6. 安裝其他依賴項

Ubuntu14.04使用者執行

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

其他版本使用者參考官方說明:http://caffe.berkeleyvision.org/installation.html

7. 安裝Caffe所需要的Python環境

首先安裝pip和python-dev (系統預設有python環境的, 不過我們需要的使python-dev)

sudo apt-get install python-dev python-pip

然後執行如下命令安裝編譯caffe python wrapper 所需要的額外包

for req in $(cat requirements.txt); do sudo pip install $req; done

在執行上述命令時, 會報錯導致不能完全安裝所有需要的包。 可以按照官方建議安裝anaconda包。 在anaconda官網下載.sh檔案,執行,最後新增bin目錄到環境變數即可。

2014-12-03更新

建議安裝Anaconda包,這個包能獨立於系統自帶的python庫,並且提供大部分Caffe需要的科學運算Python庫。這裡需要注意,在執行Caffe時,可能會報一些找不到libxxx.so的錯誤,而用 locate libxxx.so命令發現已經安裝在anaconda中,這時首先想到的是在/etc/ld.so.conf.d/ 下面將 $your_anaconda_path/lib 加入 LD_LIBRARY_PATH中。 但是這樣做可能導致登出後無法再進入桌面!!!原因(猜測)可能是anaconda的lib中有些內容於系統自帶的lib產生衝突。

正確的做法是:為了不讓系統在啟動時就將anaconda/lib加入系統庫目錄,可以在使用者自己的~/.bashrc 中新增library path, 比如我就在最後添加了兩行

# add library path
LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

開啟另一個終端後即生效,並且重啟後能夠順利載入lightdm, 進入桌面環境。

8. 安裝MATLAB

Caffe提供了MATLAB介面, 有需要用MATLAB的同學可以額外安裝MATLAB。 安裝教程請自行搜尋。 

sudo vi /usr/share/applications/Matlab.desktop

輸入以下內容

[Desktop Entry]
Type=Application
Name=Matlab
GenericName=Matlab 2010b
Comment=Matlab:The Language of Technical Computing
Exec=sh /usr/local/MATLAB/R2010b/bin/matlab -desktop
Icon=/usr/local/MATLAB/Matlab.png
Terminal=false
Categories=Development;Matlab;

(I use the R2013b patched package. First you should uncompress the .iso file. Then use sudo cp to copy the patch file)

9. 編譯Caffe

終於完成了所有環境的配置,可以愉快的編譯Caffe了! 進入caffe根目錄, 首先複製一份Makefile.config

cp Makefile.config.example Makefile.config

然後修改裡面的內容,主要需要修改的引數包括

CPU_ONLY 是否只使用CPU模式,沒有GPU沒安裝CUDA的同學可以開啟這個選項

BLAS (使用intel mkl還是OpenBLAS)

MATLAB_DIR 如果需要使用MATLAB wrapper的同學需要指定matlab的安裝路徑, 如我的路徑為 /usr/local/MATLAB/R2013b (注意該目錄下需要包含bin資料夾,bin資料夾裡應該包含mex二進位制程式)

DEBUG 是否使用debug模式,開啟此選項則可以在eclipse或者NSight中debug程式

完成設定後, 開始編譯

make all -j4
make test
make runtest

注意 -j4 是指使用幾個執行緒來同時編譯, 可以加快速度, j後面的數字可以根據CPU core的個數來決定, 我的CPU使4核, 所以-j4.

然後去尿個尿,喝杯茶, 回來就差不多編譯好了..

9.1. 編譯Matlab wrapper

執行如下命令

make matcaffe

然後就可以跑官方的matlab demo啦。

9.2. 編譯Python wrapper

 make pycaffe 

然後基本就全部安裝完拉.

接下來大家盡情地跑demo吧~

----------------------------------

10. 安裝cuDNN

為了加速Caffe,可以安裝cuDNN,參見這篇文章:NVIDIA CuDNN 安裝說明