1. 程式人生 > >Ubuntu16.04+CUDA9.0+cuDNN7+python2.7+Tensorflow12+opencv3.4.0+Matlab2015b+Caffe(GPU)

Ubuntu16.04+CUDA9.0+cuDNN7+python2.7+Tensorflow12+opencv3.4.0+Matlab2015b+Caffe(GPU)

所用安裝包連結等稽核通過了我貼上,收了一個金幣,包含cuda9.0+cuDNN7.4.1+Matlab2015b+opencv3.4.0+caffe原始碼

1 禁用nouveau

重啟系統,在選擇系統的介面安鍵盤“e”,將倒數第二行的quiet splash --  改為 quiet splash acpi=off
進入Ubuntu系統後輸入lsmod | grep nouveau ,沒有任何輸出就是禁用成功。

2 安裝NVIDIA顯示卡驅動

解除安裝老版本

sudo apt-get remove --purge nvidia*

檢視推薦版本

ubuntu-drivers devices

官網下載推薦的版本之一

#我是從官網下載的390的。
sudo dpkg -i NVIDIA-Linux-x86_64-390.87.run 

#將下載好的run檔案拷貝至home目錄下

在ubuntu下按ctrl+alt+f1進入命令列介面,登入帳號和密碼後。然後在命令列介面下輸入:

$ sudo service lightdm stop      //這個是關閉圖形介面,不執行會出錯


$ sudo chmod  a+x NVIDIA-Linux-x86_64-390.87.run  //賦予執行許可權

$  sudo ./NVIDIA-Linux-x86_64-390.87.run -no-x-check  -no-opengl-files 
//只有禁用opengl這樣安裝才不會出現迴圈登陸的問題

//-no-x-check:安裝驅動時關閉X服務

//-no-nouveau-check:安裝驅動時禁用nouveau.我們前邊已經禁用了這一步可以省略

//-no-opengl-files:只安裝驅動檔案,不安裝OpenGL檔案

檢視驅動是否安裝成功

#檢視驅動是否安裝成功.如果沒有顯示,重啟後再輸入檢視
$ nvidia-smi

#重啟指令
$ reboot

3 安裝CUDA9.0及補丁

官網下載相應的cuda9.0版本及補丁

$ sudo sh cuda_9.0.176_384.81_linux.run
#注意:不要安裝這裡推薦的驅動。因為上邊安裝過了。然後根據提示填寫cuda的路徑和samples的路徑。

#配置環境變數
sudo emacs  /etc/profile

#開啟檔案後在檔案末尾新增路徑,也就是安裝目錄,命令如下:

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

    export  LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64$LD_LIBRARY_PATH  

#儲存,然後重啟電腦

$ sudo reboot


#安裝補丁,和上邊的步驟一樣.這裡不用配置環境變量了
$ sudo sh cuda_9.0.176.1_linux.run
$ sudo sh cuda_9.0.176.2_linux.run
$ sudo sh cuda_9.0.176.3_linux.run
$ sudo sh cuda_9.0.176.4_linux.run

4 安裝cuDNN

下載cuDNN, 進入cuDNN官網註冊下載,我下載的是7.4.1 for cuda9.0的,等會貼連線。

cuDNN的官方安裝方式網址, 網址裡講的很詳細。不過也可以看我的:

首先解壓安裝包,然後將所需檔案copy至CUDA,並改變檔案訪問許可權:

   

 $ tar -xzvf cudnn-9.0-linux-x64-v7.4.1.5.tgz
     
 $ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
 $ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
 $ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

到這裡cuDNN就安裝完成了。

  檢視CUDA和CUDNN是否安裝成功及相應的版本號:

   

cat  /usr/local/cuda/version.txt
     
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
     
     
nvcc -V

5 安裝python2.7

Ubuntu16.04自帶python2.7但是庫較為簡單,具體的安裝了配置見我的部落格 ,

那裡有很詳細完善的步驟。python2.7配置caffe的Makefile.config檔案時更簡單,更容易通過。

6 安裝Tensorflow

  我的python2.7主要用來配置caffe使用。Tensorflow是在python3.6下執行的,所以通過pip3直接安裝

#用於python3
pip3 install tensorflow-gpu

#用於python2.7
pip install tensorflow-gpu

7安裝Opencv-3.4.0 和Matlab2015b

詳細的過程見我的部落格 。

8 安裝Caffe

下載原始碼

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

安裝

#安裝依賴
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev 
$ libhdf5-serial-dev protobuf-compiler
$ sudo apt-get install --no-install-recommends libboost-all-dev

$ sudo apt-get install protobuf-c-compiler protobuf-compiler
$ sudo apt-get install libgoogle-glog-dev

$ cd caffe
$ cp Makefile.config.example Makefile.config

 更改Makefile.config

#這是我的修改的地方
USE_CUDNN := 1


OPENCV_VERSION := 3

CUDA_DIR := /usr/local/cuda

CUDA_ARCH :=
#-gencode arch=compute_20,code=sm_20 \
#		-gencode arch=compute_20,code=sm_21 \
		-gencode arch=compute_30,code=sm_30 \
		-gencode arch=compute_35,code=sm_35 \
		-gencode arch=compute_50,code=sm_50 \
		-gencode arch=compute_52,code=sm_52 \
		-gencode arch=compute_60,code=sm_60 \
		-gencode arch=compute_61,code=sm_61 \
		-gencode arch=compute_61,code=compute_61

BLAS := atlas

MATLAB_DIR := /usr/local/MATLAB/R2015b

PYTHON_INCLUDE := /usr/include/python2.7 \
		/usr/lib/python2.7/dist-packages/numpy/core/include

PYTHON_LIB := /usr/lib

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

更改Makefile

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

更改GCC版本許可權

sudo eamcs /usr/local/cuda/include/crt/host_config.h

#error-- unsupported GNU version! gcc versionslater than 6 are not supported!

使用雙斜槓註釋掉,改為:

//#error-- unsupported GNU version! gcc versionslater than 6 are not supported!

編譯

#編譯 測試
sudo make all -j16

sudo test -j16
sudo runtest -j16

如果再編譯的過程中,遇到問題,建議檢視這篇部落格