Ubuntu 16.04 + GTX970 + cuda8.0.44安裝配置等問題(轉)

參考:https://blog.csdn.net/u010094199/article/details/54380086python

參考:https://blog.csdn.net/jonms/article/details/79318566linux

參考:https://blog.csdn.net/jonms/article/details/79318566git

cuDnn的配置能夠參考:https://blog.csdn.net/lucifer_zzq/article/details/76675239github

 

首先介紹一下個人電腦配置,個人顯卡是NVIDIA GTX970

1. 安裝雙系統(Ubuntu16.04 + Windows 7)全都是64位的操做系統

          我用U盤製做系統盤安裝Ubuntu16.04的時候,遇到以下問題:沒法將啓動引導正常安裝

                            

            從新安裝了好幾回都是這樣,找不到解決方案,有同窗知道怎麼解決的能夠安利一下我~

             因爲Ubuntu14.04安裝cuda的時候坑太多,看好幾個帖子都這麼說的,我仍是堅決地想裝Ubunt16.04。

             而後參考:從Ubuntu 14.04 LTS版升級到Ubuntu 16.04 LTS。到此,Ubuntu16.04安裝成功!

2. 安裝NVIDIA顯卡驅動

        這裏要引用PPA第三方庫,由於直接從NVIDIA官方安裝,會有顯示器黑屏、進入不了tty1界面等一系列問題,沒辦法,Ubuntu對於NVIDIA顯卡驅動的支持不太好

    sudo add-apt-repository ppa:graphics-drivers/ppa    //引入PPA庫裏的顯卡驅動

        若是引用成功,則會顯示以下圖所示:        

   Fresh drivers from upstream, currently shipping Nvidia.

   ## Current Status

   Current official release: `nvidia-370` (370.28)
   Current long-lived branch release: `nvidia-367` (367.57)

   For GeForce 8 and 9 series GPUs use `nvidia-340` (340.98)
   For GeForce 6 and 7 series GPUs use `nvidia-304` (304.132)

   ## What we're working on right now:

   - Normal driver updates
   - Help Wanted: Mesa Updates for Intel/AMD users, ping us if you want to help do this work, we're shorthanded.

        接下來安裝當前的長期穩定版nvidia-367驅動

     sudo service lightdm stop                    
     sudo apt-get install nvidia-367             
     sudo service lightdm start                
     sudo reboot                                  
     nvidia-smi   

     這裏須要先關閉圖形桌面,若是不關閉,可能會在安裝顯卡驅動的時候提示X server未關閉的錯誤,從而致使安裝失敗

     若是顯卡驅動安裝成功,則在執行完nvidia-smi語句後,輸出以下:

  Sat Jan 14 10:41:03 2017       
  +-----------------------------------------------------------------------------+
  | NVIDIA-SMI 367.57                 Driver Version: 367.57                    |
  |-------------------------------+----------------------+----------------------+
  | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
  | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
  |===============================+======================+======================|
  |   0  GeForce GTX 970     Off  | 0000:01:00.0     Off |                  N/A |
  | 30%   30C    P8    19W / 200W |    121MiB /  4036MiB |      0%      Default |
  +-------------------------------+----------------------+----------------------+
                                                                               
  +-----------------------------------------------------------------------------+
  | Processes:                                                       GPU Memory |
  |  GPU       PID  Type  Process name                               Usage      |
  |=============================================================================|
  |    0      1386    G   /usr/lib/xorg/Xorg                             111MiB |
  |    0      2341    G   compiz                                           8MiB |
  +-----------------------------------------------------------------------------+

   若安裝失敗,卸載未安裝成功的顯卡驅動,再從新安裝

  $ sudo apt-get remove --purge nvidia-*                   #卸載顯卡驅動

3. Cuda安裝

       Cuda官方下載地址:https://developer.nvidia.com/cuda-downloads      我用的是 cuda_8.0.44_linux.run 版本

          

  進入cuda_8.0.44_linux.run 所在目錄,執行下面的語句開始安裝cuda

   $  sudo sh cuda_8.0.44_linux.run

  可能遇到的選項:
        是否接受許可條款:       accept        
        是否安裝NVIDIA driver:no                #由於咱們已經安裝了NVIDIA顯卡驅動
        是否安裝cuda toolkit :   yes
        是否安裝cuda samples:yes
        中間會有提示是否確認選擇默認路徑看成安裝路徑,按Enter鍵便可。

   若安裝失敗,且最後錯誤的提示爲:

   Not enough space on parition mounted at /tmp.Need 5091561472 bytes.
   Disk space check has failed. Installation cannot continue.

  即錯誤提示爲/tmp空間不足,可執行下面的操做:

    ====若是執行$ sudo sh cuda_8.0.44_linux.run 時提示/tmp空間不足,則執行下面的操做===============
    $ sudo mkdir /opt/tmp         #在根目錄下的opt文件夾中新建tmp文件夾,用做安裝文件的臨時文件夾
    $ sudo sh cuda_8.0.44_linux.run --tmpdir=/opt/tmp/  
    ====若是執行$ sudo sh cuda_8.0.44_linux.run 時提示/tmp空間不足,則執行上面的操做================  

   配置環境變量

  $ sudo vim  ~/.bashrc   #打開配置文件,若是沒安裝vim,可執行 $ sudo apt-get install vim  #安裝vim

   按 i 鍵,在文件末尾插入下面兩行,按esc鍵,輸入 :wq ,保存退出。

   export PATH=/usr/local/cuda-8.0/bin:$PATH
   export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

    當即使配置的環境變量生效  

  source ~/.bashrc

 判斷cuda是否安裝成功
      執行:

   $ nvcc --version

      輸出:

  nvcc: NVIDIA (R) Cuda compiler driver
  Copyright (c) 2005-2016 NVIDIA Corporation
  Built on Sun_Sep__4_22:14:01_CDT_2016
  Cuda compilation tools, release 8.0, V8.0.44

    則表示安裝成功。

   ===========若不幸安裝失敗,執行下面的命令卸載cuda,而後從新安裝=========
   $ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl                  

   測試cuda的Samples

   $ cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
   $ make
   $ sudo ./deviceQuery

     輸出的最後兩行相似這樣的信息:

   deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GTX 970
   Result = PASS

4.使用Cudnn加速
        咱們去官網下載與cuda8.0匹配的cudnn,https://developer.nvidia.com/cudnn ,我下載的是cudnn v5.05 for cuda8.0
        直接將文件解壓,拷貝到cuda相應的文件夾下便可

    $ tar xvzf cudnn-8.0-linux-x64-v5.0-ga.tgz
    $ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
    $ sudo cp cuda/lib64/*.* /usr/local/cuda/lib64
    $ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

5. 安裝編譯Caffe
     下載caffe

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

       安裝第三方庫

   $ 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
       當前最新版OpenCV是3.2.0版本的

   $ cd caffe
   $ sudo git clone https://github.com/jayrambhia/Install-OpenCV
   $ cd Install-OpenCV/Ubuntu
   $ sudo chmod +x *
   $ sudo ./opencv_latest.sh

     咱們能夠經過以下命令查看OpenCV安裝版本

   $ pkg-config --modversion opencv

     編譯caffe

   編譯前,先配置變量    

   $ sudo cp Makefile.config.example Makefile.config
   $ sudo vim Makefile.config

設置如下內容:
USE_CUDNN := 1 #取消該句註釋
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
WITH_PYTHON_LAYER := 1 #取消註釋
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
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

保存退出


   $ sudo make clean   #每次須要從新編譯Caffe的時候,在caffe文件夾下清除掉以前的編譯結果
   $ cd build  
   $ sudo cmake ..  
   $ sudo make all  
   $ sudo make install  
   $ sudo make runtest
   $ sudo make -j8
   $ sudo make runtest
   $ sudo make pycaffe

配置環境

caffe運行時須要調用cuda的庫,咱們在/etc/ld.so.conf.d目錄下新建一個caffe.conf文件,將所須要用的庫的目錄寫入

  $ sudo vim /etc/ld.so.conf.d/caffe.conf

添加:  /usr/local/cuda/lib64

保存並退出      :wq

更新配置     $ sudo ldconfig

6.測試caffe

下載mnist數據集

   $ cd ~/caffe        #切換到caffe目錄
   # 注意:執行命令的時候最好在當前的caffe目錄下,不然會報錯,會找不到XXX文件
   $ sudo sh data/mnist/get_mnist.sh  #獲取mnist數據集
   $ sudo sh examples/mnist/create_mnist.sh

開始訓練

 $ sudo sh examples/mnist/train_lenet.sh

訓練結果

 Test net output #0: accuracy = 0.9908  
I0114 13:41:23.117681  4189 solver.cpp:404]     Test net output #1: loss = 0.0286537 (* 1 = 0.0286537 loss)  
I0114 13:41:23.117684  4189 solver.cpp:322] Optimization Done.  
I0114 13:41:23.117687  4189 caffe.cpp:254] Optimization Done.

vim

 

 

 

由於一些緣由仍是須要使用別人基於Caffe的代碼,可是代碼比較老,默認不支持高版本的cuda或者cudnnbash

怎麼辦呢?基本上就是把最新官方Caffe-BVLC的幾個關鍵文件拿過來替換便可。markdown

腳本以下:app

######################################################################### # File Name: xxx.sh # Author: ChrisZZ # mail: imzhuo AT foxmail.com # Created Time: 2018年05月18日 星期五 16時20分20秒 ######################################################################### #!/bin/bash # 先準備用到的別人的老本的caffe,好比放在了~/work/caffe_xxx cd ~/work MY_CAFFE=~/work/caffe_xxx # 下載官方的最新Caffe git clone https://github.com/BVLC/caffe caffe-BVLC --depth=1 BVLC_CAFFE=~/work/caffe-BVLC # 如今執行以下文件替換。直接執行便可。 cp $BVLC_CAFFE/include/caffe/layers/cudnn_relu_layer.hpp $MY_CAFFE/include/caffe/layers/cudnn_relu_layer.hpp cp $BVLC_CAFFE/include/caffe/layers/cudnn_sigmoid_layer.hpp $MY_CAFFE/include/caffe/layers/cudnn_sigmoid_layer.hpp cp $BVLC_CAFFE/include/caffe/layers/cudnn_tanh_layer.hpp $MY_CAFFE/include/caffe/layers/cudnn_tanh_layer.hpp cp $BVLC_CAFFE/include/caffe/util/cudnn.hpp $MY_CAFFE/include/caffe/util/cudnn.hpp cp $BVLC_CAFFE/src/caffe/layers/cudnn_relu_layer.cpp $MY_CAFFE/src/caffe/layers/cudnn_relu_layer.cpp cp $BVLC_CAFFE/src/caffe/layers/cudnn_relu_layer.cu $MY_CAFFE/src/caffe/layers/cudnn_relu_layer.cu cp $BVLC_CAFFE/src/caffe/layers/cudnn_sigmoid_layer.cpp $MY_CAFFE/src/caffe/layers/cudnn_sigmoid_layer.cpp cp $BVLC_CAFFE/src/caffe/layers/cudnn_sigmoid_layer.cu $MY_CAFFE/src/caffe/layers/cudnn_sigmoid_layer.cu cp $BVLC_CAFFE/src/caffe/layers/cudnn_tanh_layer.cpp $MY_CAFFE/src/caffe/layers/cudnn_tanh_layer.cpp cp $BVLC_CAFFE/src/caffe/layers/cudnn_tanh_layer.cu $MY_CAFFE/src/caffe/layers/cudnn_tanh_layer.cu

而後,再編譯你的caffe_xxx時,CUDA和CuDNN都用起來,均可以編譯了。python2.7

相關文章
相關標籤/搜索