Ubuntu14.04 64bit下Caffe + CUDA 6.5安裝詳細步驟

 

 

  很少說,直接上乾貨!html

 

  筆者花了很長時間才裝完,主要是cuda安裝和opencv安裝比較費勁,cuda找不到32位的安裝包只好重裝64位的ubuntu系統,opencv 也是嘗試了好久才解決,這裏建議用2.4.9版本。其實若是沒用GPU的話不須要安裝cuda,不過爲了後續兼容性的考慮,系統強烈建議64位的。下面是 對本身的安裝過程記錄備忘,有些主要參考網上的文章,因此有些過程就直接用了原來文章中的內容。python


caffe在git上的源碼:https://github.com/BVLC/caffelinux


環境:
    ubuntu 14.04 64位
    無GPUgit

 


準備工做:
  *首先驗證你是否有nvidia的顯卡(http://developer.nvidia.com/cuda-gpus這個網站查看你是否有支持gpu的顯卡):
lspci | grep -i nvidia    *查看linux發行版本 uname -m && cat /etc/*release 看第一行  *看gcc版本lspci | grep -i nvidia    *查看linux發行版本 uname -m && cat /etc/*release 看第一行  *看gcc版本 gcc --version 

Step一、安裝cuda(無GPU安裝能夠直接跳過這一步,因此這裏直接跳過。要說明的是cuda 32位還沒有找到合適的安裝包,因此這裏的linux要64位的)
  *在cuda官網(https://developer.nvidia.com/cuda-downloads#linux)下載對應版本.

  *下載完成以後可使用以下命令安裝它,注意文件名修改成cuda-repo-ubuntu1404_6.5-14_amd64.deb
sudodpkgicudarepo<distro><version><architecture>.deb(deb)NetworkInstallLocalInstallQ:WhatisthedifferencebetweentheNetworkInstallerandtheLocalInstaller?A:TheLocalInstallerhasallofthecomponentsembeddedintoit(toolkit,driver,samples).Thismakestheinstallerverylarge,butoncedownloaded,itcanbeinstalledwithoutaninternetconnection.TheNetworkInstallerisasmallexecutablethatwillonlydownloadthenecessarycomponentsdynamicallyduringtheinstallationsoaninternetconnectionisrequired.sudodpkg−icuda−repo−<distro><version><architecture>.deb(或者在圖形界面下直接雙擊下載的deb文件)NetworkInstall和LocalInstall的區別:一個是文件小,在線更新;一個是文件大,能夠離線安裝。(Q:WhatisthedifferencebetweentheNetworkInstallerandtheLocalInstaller?A:TheLocalInstallerhasallofthecomponentsembeddedintoit(toolkit,driver,samples).Thismakestheinstallerverylarge,butoncedownloaded,itcanbeinstalledwithoutaninternetconnection.TheNetworkInstallerisasmallexecutablethatwillonlydownloadthenecessarycomponentsdynamicallyduringtheinstallationsoaninternetconnectionisrequired.)安裝好倉庫文件後,更新本地倉庫:sudo apt-get update
最後開始安裝cuda以及顯卡驅動(安裝cuda的同時就會把顯卡驅動也所有安裝好,這個真的很方便。可是下載的時間有點長。)
sudoaptgetinstallcudasudoapt−getinstallcuda安裝完以後你須要設置環境變量: export PATH=/usr/local/cuda-6.5/bin:PATHPATH export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:LDLIBRARYPATHcuda<dir><dir> LDLIBRARYPATH設置完畢以後,你還能夠選擇是否安裝cuda附帶的示例代碼(<dir>表示你要安裝的位置,你能夠將<dir>替換成 ): cuda-install-samples-6.5.sh <dir>  

  接下來作一些驗證工做(個人電腦沒有GPU,因此驗證跳過):
查看顯卡的驅動版本
    cat /proc/driver/nvidia/version  
查看nvcc編譯器的版本
    nvcc -V i  
編譯cuda的示例代碼:
    cd ~/NVIDIA_CUDA-6.5_Samples  

而後make一下編譯代碼。
進入bin路徑運行devicequery
    cd ~/NVIDIA_CUDA-6.5_Samples/bin  
    ./ deviceQuery  


Step二、預裝依賴準備
Caffe has several dependencies.

    CUDA is required for GPU mode.
        library version 7.0 and the latest driver version are recommended, but 6.* is fine too
        5.5, and 5.0 are compatible but considered legacy
    BLAS via ATLAS, MKL, or OpenBLAS.
    Boost >= 1.55
    OpenCV >= 2.4 including 3.0
    protobuf, glog, gflags
    IO libraries hdf5, leveldb, snappy, lmdb

Pycaffe and Matcaffe interfaces have their own natural needs.

    For Python Caffe: Python 2.7 or Python 3.3+, numpy (>= 1.7), boost-provided boost.python
    For MATLAB Caffe: MATLAB with the mex compiler.

cuDNN Caffe: for fastest operation Caffe is accelerated by drop-in integration of NVIDIA cuDNN. To speed up your Caffe models, install cuDNN then uncomment the USE_CUDNN := 1 flag in Makefile.config when installing Caffe. Acceleration is automatic. For now cuDNN v1 is integrated but see PR #1731 for v2.

CPU-only Caffe: for cold-brewed CPU-only Caffe uncomment the CPU_ONLY := 1 flag in Makefile.config to configure and build Caffe without CUDA. This is helpful for cloud or cluster deployment.
(最後一步在編譯caffe前會說明)

具體操做:
下面3個應該在build-essential裏了,不過這裏保險起見,我先裝上了。
    sudo apt-get install g++
    sudo apt-get install git
    sudo apt-get install freeglut3-dev
build-essential:
    sudo apt-get install build-essential
    sudo apt-get update
安裝ATLAS for Ubuntu:
     # sudo apt-get install libatlas-base-dev
     # sudo apt-get install libprotobuf-dev
     # sudo apt-get install libleveldb-dev
     # sudo apt-get install libsnappy-dev
     # sudo apt-get install libopencv-dev
     # sudo apt-get install libboost-all-dev
     # sudo apt-get install libhdf5-serial-dev
     # sudo apt-get install libgflags-dev
     # sudo apt-get install libgoogle-glog-dev
     # sudo apt-get install liblmdb-dev
     # sudo apt-get install protobuf-compiler

安裝Opencv:
     # cd ~/caffe
     # git clone https://github.com/jayrambhia/Install-OpenCV
     # cd Install-OpenCV/Ubuntu
     # sudo ./dependencies.sh
     # cd 2.4
     # sudo sh ./opencv2_4_9.sh
*這裏有幾點要注意的,也是花了很長時間解決的一個坑:
    首先2.4.8的源找不到了,因此不要用2.4.8
    其次2.4.10編譯有問題,不過能夠嘗試解決下,這裏沒用
這裏最好不要本身直接裝,由於有不少的依賴,去
git clone https://github.com/jayrambhia/Install-OpenCV
或者https://github.com/jayrambhia/Install-OpenCV均可如下載腳本。
這裏最新的就是2.4.9,若是要裝2.4.10的話把腳本拷貝一份作對應修改就好了。
    *因爲wget opencv2.4.9.zip源文件很是慢,這裏的辦法是去sourceforge對應下載頁面,選擇其餘服務器下載鏡像,能夠下載到本地,注意同時修改相應腳本,把wget註釋掉。
    make opencv的時候會報錯,這裏將腳本的cmake替換爲以下:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=OFF -D WITH_CUDA=OFF -D WITH_CUFFT=OFF ..
即加上最後3個,編譯ok,而後繼續。
github


Step3:編譯Caffe
下載caffe安裝包,下載地址:https://github.com/BVLC/caffe
    解壓該壓縮包,解壓縮命令:
    unzip /home/liuxiabing/下載/caffe-master.zip  
    注:若是解壓位置出錯了,可使用如下命令刪除該目錄及全部的子目錄:
    sudo rm -rf caffe-master  

    進入caffe根目錄, 首先複製一份Makefile.config,命令:
    cp Makefile.config.example Makefile.config  

    而後修改裏面的內容,主要須要修改的參數包括:
    CPU_ONLY 是否只使用CPU模式,因爲我沒有NVIDIA的顯卡,就沒有安裝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,也能夠不添加這個參數,直接使用「make all」,這樣速度可能會慢一點兒。
shell


Step4:利用mnist數據集進行測試
*運行下載數據的腳本的時候發現mnist數據網站打不開,幸虧以前在ufldl實驗中保存了一份mnist的數據集,放到data/mnist目錄下重命名了一下最後直接運行ok。
使用MNIST數據集進行測試
    Caffe默認狀況會安裝在CAFFEROOTCAFFEROOT,就是解壓到的那個目錄,例如: home/username/caffe-master,因此下面的工做,
默認已經切換到了該工做目錄。下面的工做主要是測試Caffe是否工做正常,不作詳細評估。具體設置請參考官網:
http://caffe.berkeleyvision.org/gathered/examples/mnist.html
    (1)數據預處理
    能夠用下載好的數據集,也能夠從新下載,直接下載的具體操做以下:
    cddata/mnistcddata/mnist sudo sh ./get_mnist.sh  

    (2)重建LDB文件,就是處理二進制數據集爲Caffe識別的數據集,之後全部的數據,包括jpe文件都要處理成這個格式,執行命令以下: 
    sudo sh ./examples/mnist/create_mnist.sh        生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夾,這裏包含了LDB格式的數據集     注:新版caffe都須要從根目錄上執行,若是使用下列命令執行:     # cd examples/mnist       # sudo sh ./create_mnist.sh        可能會遇到這個錯誤:./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found     (3)訓練mnist     若是沒有GPU,只有CPU的話,須要先修改examples/mnist目錄下lenet_solver.prototxt文件,將solver_mode:GPU改成      solver_mode:CPU,修改後結果以下所示:     # solver mode: CPU or GPU       solver_mode: CPU        修改時可使用vi編輯命令,若是是隻讀文件,不能編輯,能夠用sudo命令,好比:     sudo vi lenet_solver.prototxt         先進入命令模式,使用a進入編輯模式,修改完以後,使用esc退出編輯模式,進入末行模式,再使用「:wq」保存修改並退出(「:q!」爲退出但不保存修改)    修改完成後,再執行下面的命令進行訓練:sudo sh ./examples/mnist/create_mnist.sh        生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夾,這裏包含了LDB格式的數據集     注:新版caffe都須要從根目錄上執行,若是使用下列命令執行:     # cd examples/mnist       # sudo sh ./create_mnist.sh        可能會遇到這個錯誤:./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found     (3)訓練mnist     若是沒有GPU,只有CPU的話,須要先修改examples/mnist目錄下lenet_solver.prototxt文件,將solver_mode:GPU改成      solver_mode:CPU,修改後結果以下所示:     # solver mode: CPU or GPU       solver_mode: CPU        修改時可使用vi編輯命令,若是是隻讀文件,不能編輯,能夠用sudo命令,好比:     sudo vi lenet_solver.prototxt         先進入命令模式,使用a進入編輯模式,修改完以後,使用esc退出編輯模式,進入末行模式,再使用「:wq」保存修改並退出(「:q!」爲退出但不保存修改)    修改完成後,再執行下面的命令進行訓練:cd examples/mnist  
    $ sudo sh ./train_lenet.sh  

最終訓練完的模型存儲爲一個二進制的protobuf文件,CPU模式下訓練這樣的數據集大概須要20分鐘,比較慢。至此,Caffe安裝的全部步驟完結。
ubuntu

 

 

 

 

 

 

1. 安裝build-essentials

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

sudo apt-get install build-essential

2. 安裝NVIDIA驅動 (3.4.0)

2.1 準備工做(2014-12-03更新)

在關閉桌面管理 lightdm 的狀況下安裝驅動彷佛能夠實現Intel 核芯顯卡 來顯示 + NVIDIA 顯卡來計算。具體步驟以下:服務器

1. 首先在BIOS設置裏選擇用Intel顯卡來顯示或做爲主要顯示設備app

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

解決方法在此:http://code.opencv.org/issues/3814  下載 NCVPixelOperations.hpp 替換掉opencv2.4.9內的文件, 從新build。

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。 安裝教程請自行搜索。 

安裝完成後添加圖標 http://www.linuxidc.com/Linux/2011-01/31632.htm

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 安裝說明

相關文章
相關標籤/搜索