ubuntu16.04+gtx1060+cuda8.0+caffe安裝、測試經歷

CopperDong發表於2017-10-17

首先說明,這是在桌上型電腦上的安裝測試經歷,首先安裝的win10,然後安裝ubuntu16.04雙系統,顯示卡為GTX1060 
桌上型電腦顯示器接的是GTX1060 HDMI口,win10上首先安裝了最新的GTX1060驅動372.54


廢話不多說,上車吧,少年

一、首先安裝nvidia顯示卡驅動

  1. 我是1080P的顯示器,在沒有安裝顯示卡驅動前,ubuntu解析度很低,可以手動修改一下grub檔案,提高解析度,在終端輸入

    sudo vim /etc/default/grub 
    找到以下行 
    # The resolution used on graphical terminal 
    # note that you can use only modes which your graphic card supports via VBE 
    # you can see them in real GRUB with the command 'vbeinfo' 
    # GRUB_GFXMODE=640×480 
    按a進入插入模式,增加下面一行 
    GRUB_GFXMODE=1920×1080 #這裡解析度自行設定 
    按esc退出插入模式,按:wq儲存退出 
    在終端編輯 
    sudo update-grub 
    更新grub 
    重新啟動ubuntu使之生效 

  2. 進入ubuntu系統設定-軟體與更新-ubuntu軟體,使用的是中科大的源:http://mirrors.ustc.edu.cn/ubuntu,如下所示

    這裡寫圖片描述 

    更新Ubuntu16.04源,終端輸入 
    cd /etc/apt/ 
    sudo cp sources.list sources.list.bak 
    sudo vi sources.list 
    把下面的這些源新增到source.list中: 
    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse 
    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse 
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
    最後更新源和更新已安裝的包: 
    終端輸入 
    sudo apt-get update 
    sudo apt-get upgrade 

  3. 安裝nvidia驅動,終端輸入

    sudo add-apt-repository ppa:graphics-drivers/ppa 
    回車後繼續 
    sudo apt-get update 
    sudo apt-get install nvidia-367 
    sudo apt-get install mesa-common-dev 
    sudo apt-get install freeglut3-dev 
    之後重啟系統讓GTX1060顯示卡驅動生效 

  4. 測試

    終端輸入 
    nvidia-smi 
    顯示效果如下圖表示安裝成功 
    這裡寫圖片描述



二、cuda安裝

  1. 下載cuda_8.0.27_linux.run和cudnn-8.0-linux-x64-v5.1.tgz

    這裡我提供了百度網盤,這兩個檔案我先在win10下下載好,並用u盤拷貝到ubuntu的下載目錄下 

  2. 安裝cuda8.0

    終端輸入 
    cd 下載/ 
    sh cuda_8.0.27_linux.run --override 
    啟動安裝程式,一直按空格到最後,輸入accept接受條款 
    輸入n不安裝nvidia影象驅動,之前已經安裝過了 
    輸入y安裝cuda 8.0工具 
    回車確認cuda預設安裝路徑:/usr/local/cuda-8.0 
    輸入y用sudo許可權執行安裝,輸入密碼 
    輸入y或者n安裝或者不安裝指向/usr/local/cuda的符號連結 
    輸入y安裝CUDA 8.0 Samples,以便後面測試 
    回車確認CUDA 8.0 Samples預設安裝路徑:/home/pawn(pawn是我的使用者名稱),該安裝路徑測試完可以刪除 
    安裝完顯示如下圖 
    這裡寫圖片描述

  3. 安裝cudnn v5.1

    終端輸入 
    cd 下載/ 
    tar zxvf cudnn-8.0-linux-x64-v5.1.tgz 
    解壓在下載目錄下產生一個cuda目錄 
    cd cuda/include/ 
    sudo cp cudnn.h /usr/local/cuda/include/ 複製標頭檔案 
    cd ../lib64 開啟lib64目錄 
    sudo cp lib* /usr/local/cuda/lib64/ 複製庫檔案 
    sudo chmod a+r /usr/local/cuda/include/cudnn.h/usr/local/cuda/lib64/libcudnn*給所有使用者增加這些檔案的讀許可權 

  4. 建立軟連結

    終端輸入 
    cd /usr/local/cuda/lib64/ 
    sudo rm -rf libcudnn.so libcudnn.so.5 
    sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 
    sudo ln -s libcudnn.so.5 libcudnn.so 
    設定環境變數,終端輸入 
    sudo gedit /etc/profile 
    在末尾加入 
    PATH=/usr/local/cuda/bin:$PATH 
    export PATH 
    儲存後,建立連結檔案 
    sudo vim /etc/ld.so.conf.d/cuda.conf 
    按a進入插入模式,增加下面一行 
    /usr/local/cuda/lib64 
    按esc退出插入模式,按:wq儲存退出 
    最後在終端輸入sudo ldconfig使連結生效 

  5. cuda Samples測試

    開啟CUDA 8.0 Samples預設安裝路徑,終端輸入 
    cd /home/pawn/NVIDIA_CUDA-8.0_Samples (pawn是我的使用者名稱) 
    sudo make all -j4 (4核) 
    出現“unsupported GNU version! gcc versions later than 5.3 are not supported!”的錯誤,這是由於GCC版本過高,在終端輸入 
    cd /usr/local/cuda-8.0/include 
    sudo cp host_config.h host_config.h.bak 
    sudo gedit host_config.h 
    ctrl+f尋找有“5.3”的地方,只有一處,如下 
    # if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3) 
    #error -- unsupported GNU version! gcc versions later than 5.3 are not supported! 
    將兩個5改成6,即 
    #if __GNUC__ > 6 || (__GNUC__ == 6 && __GNUC_MINOR__ > 3) 
    儲存退出,繼續在終端輸入 
    cd /home/pawn/NVIDIA_CUDA-8.0_Samples (pawn是我的使用者名稱) 
    sudo make all -j4 (4核) 
    完成後繼續向終端輸入 
    cd bin/x86_64/linux/release 
    ./deviceQuery 
    完成之後出現如下圖所示,表示成功安裝cuda 
    這裡寫圖片描述



三、依賴包安裝

  1. sudo apt-get install build-essential #必要的編譯工具依賴

  2. sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

  3. sudo apt-get install --no-install-recommends libboost-all-dev

  4. sudo apt-get install libatlas-base-dev

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



  1. 安裝python的pip和easy_install,方便安裝軟體包

    終端輸入 
    cd 
    wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py 
    sudo python ez_setup.py --insecure 
    wget https://bootstrap.pypa.io/get-pip.py 
    sudo python get-pip.py



  1. 安裝科學計算和python所需的部分庫

    終端輸入 
    sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran python-numpy



  1. 安裝git,拉取原始碼

    終端輸入 
    sudo apt-get install git 
    git clone https://github.com/BVLC/caffe.git



  1. 安裝python依賴

    終端輸入 
    sudo apt-get install python-pip 安裝pip 
    sudo su 
    for req in $(cat "requirements.txt"); do pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done
    按Ctrl+D退出sudo su模式



八、編譯caffe(暫不對matlab說明)

  1. 終端輸入 
    cd /home/pawn/caffe 
    cp Makefile.config.example Makefile.config 
    gedit Makefile.config

    ①將USE_CUDNN := 1取消註釋,

    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include後面打上一個空格 然後新增/usr/include/hdf5/serial如果沒有這一句可能會報一個找不到hdf5.h的錯誤

  2. 終端輸入 
    make all -j4 
    make過程中出現找不到lhdf5_hl和lhdf5的錯誤, 
    解決方案: 
    在計算機中搜尋libhdf5_serial.so.10.1.0,找到後右鍵點選開啟專案位置 
    該目錄下空白處右鍵點選在終端開啟,開啟新終端輸入 
    sudo ln libhdf5_serial.so.10.1.0 libhdf5.so 
    sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so 
    最後在終端輸入sudo ldconfig使連結生效 
    原終端中輸入make clean清除第一次編譯結果 
    再次輸入make all -j4重新編譯

  3. 終端輸入 
    make test -j4 
    make runtest -j4 
    make pycaffe -j4 
    make distribute 生成釋出安裝包

  4. 測試python,終端輸入 
    cd /home/pawn/caffe/python 
    python 
    import caffe 
    如果不報錯就說明編譯成功

使用caffe時編譯出錯

include and lib

使用自己機器編譯的include和lib (caffe/build/lib, caffe/include)

caffe.pb.h丟失問題:

/home/wuliwei/caffe/include/caffe/blob.hpp:9:34: fatal error: caffe/proto/caffe.pb.h: No such file or directory
 #include "caffe/proto/caffe.pb.h"
  • 1
  • 2

解決方法: 用protoc從caffe/src/caffe/proto/caffe.proto生成caffe.pb.h和caffe.pb.cc

wuliwei@wulw:~/caffe/src/caffe/proto$ protoc --cpp_out=/home/wuliwei/caffe/include/caffe/ caffe.proto 
  • 1

stdc++

linker error:

/usr/bin/ld: caffe_cnn_handler.o: undefined reference to symbol '_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4'
//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
  • 1
  • 2
  • 3

是找不到libstdc++.so.6,解決方法是在Makefile中加入:

LIBS += -L/usr/lib/x86_64-linux-gnu -lstdc++



九、mnist測試

  1. 下載mnist資料集,終端輸入 
    cd /home/pawn/caffe/data/mnist/ 
    ./get_mnist.sh 獲取mnist資料集 
    /home/pawn/caffe/data/mnist/目錄下會多出訓練集圖片、訓練集標籤、測試集圖片和測試集標籤等4個檔案

  2. mnist資料格式轉換,終端輸入 
    cd /home/pawn/caffe/ 
    ./examples/mnist/create_mnist.sh 
    必須要在第一行之後執行第二行,即必須要在caffe根目錄下執行create_mnist.sh 
    此時在/caffe/examples/mnist/目錄下生成mnist_test_lmdb和mnist_train_lmdb兩個LMDB格式的訓練集和測試集

  3. LeNet-5模型描述在/caffe/examples/mnist/lenet_train_test.prototxt

  4. Solver配置檔案在/caffe/examples/mnist/lenet_solver.prototxt

  5. 訓練mnist,執行檔案在/caffe/examples/mnist/train_lenet.sh 
    終端輸入 
    cd /home/pawn/caffe/ 
    ./examples/mnist/train_lenet.sh 
    測試結果如下 
    這裡寫圖片描述

相關文章