Ubuntu16.04+Nvidia Driver+Nvidia Cuda8.0+Cudnn7.0.5+tensorflow-gpu+opencv3.0.4

第一步

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 libopenblas-dev liblapack-dev libatlas-base-dev

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

sudo apt-get install git cmake build-essential

第二步

在設置裏面安裝 nvidia 驅動



然後重啓。

完畢。

驗證:在終端中輸入nvidia-smi

出來一堆,成功安裝nvidia driver

第三步

安裝 cuda

1)官網

https://developer.nvidia.com/cuda-downloads(最新版cuda地址)

https://developer.nvidia.com/cuda-toolkit-archive(舊版 cuda 地址)

我下載的是.run 格式的

2)cd 到下載目錄,然後sudo sh 下載的 cuda.run 運行

一堆回車然後accept,n,y,y,y(第一個 n 其他都是 y或者回車)

然後環境變量(終端下)

sudo gedit ~/.bashrc

打開後在末尾加上

exportPATH=/usr/local/cuda-8.0/bin:$PATH

exportLD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

保存

source ~/.bashrc

完畢。

驗證:(命令行)

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

./deviceQuery


最後是Result = PASS 就對了(一半)

然後命令行下 nvcc -V 出現當前 cuda 版本說明全對!


第四部安裝 cudnn

官網https://developer.nvidia.com/rdp/cudnn-download

注意下載正確的包



然後終端 cd 到下載文件下

然後根據http://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#axzz4qYJp45J2

安裝,簡單說就是


sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.0.3.11-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb 按照這個格式安裝剛纔下的3個包
驗證:命令行下
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd  $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
Test passed!
若 test passed 就恭喜安裝 cudnn 成功。

下一步安裝 tensorlfow 

首先官網https://www.tensorflow.org/install/install_linux

然後

sudo apt-get install cuda-command-line-tools (沒有我也不清楚我錯在哪裏)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
sudo apt-get install python-pip python-dev 
pip install tensorflow-gpu
然後 python
import tensorflow 果然不行 庫沒連接對
然後退出來
然後找到地方,連接下
sudo ln -s <path>libcudnn.so.7.* <path>libcudnn.so.6
前面的是自己的後面的他缺的。
最後 import 驗證。

接着Opencv

首先環境

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install --assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
 sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb

然後git

git clone https://github.com/opencv/opencv.git

cd opencv

mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

修改/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp 文件

其中

//#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000) 

修改如上即可

回到build

make -j8

sudo make install

驗證:

首先終端中:

pkg-config --modversion opencv 

出現opencv版本,成功一半

然後python 

import cv2

不抱錯 ,恭喜,成功安裝opencv

安裝 caffe

首先 git

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

cd caffe 把他給的 example 複製

sudo cp Makefile.config.example Makefile.config

編輯

sudo gedit Makefile.config

其中

#USE_CUDNN := 1修改成: USE_CUDNN := 1

#OPENCV_VERSION := 3 修改爲: OPENCV_VERSION := 3

#WITH_PYTHON_LAYER := 1 修改爲 WITH_PYTHON_LAYER := 1

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/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 文件

將:NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替換爲:NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

將:LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

改爲:LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

然後修改 /usr/local/cuda/include/host_config.h 文件 :

#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

改爲//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

然後回到caffe 文件

make all -j8

然後出現了什麼鏈接庫 問題(libopencv_core.so.3.4: cannot open shared object file: No such file or directory)的

sudo vim /etc/ld.so.conf  

加入/usr/local/lib

sudo ldconfig  

然後 run 一下