ubuntu16.04安裝cuda8+opencv3.4+tensorflow

yeffrey發表於2020-12-10

一. ubuntu系統安裝
1. 安裝盤製作
用universal-usb-installer-1.9.7.8.exe在windows下製作ubuntu16.04的安裝盤。
分割槽選擇為FAT32,iso檔案版本ubuntu-16.04.3-desktop-amd64.iso
2. 系統安裝過程
設定為U盤啟動,不要選擇UEFI模式,選擇FAT模式啟動,然後安裝ubuntu。
分割槽建議:/boot 300M      swap 32G       / 200G         /home剩下所有的
不要選擇安裝系統更新

二.cuda8安裝
1. 禁用驅動
$ lsmod | grep nouveau  
如果有顯示就要執行下面的操作了
sudo touch /etc/modprobe.d/blacklist-nouveau.conf   
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf   
新增的內容
blacklist nouveau  
options nouveau modeset=0  
更新一下:
    $ sudo update-initramfs -u  
重新啟動系統,然後再檢查是否禁用成功。
$ lsmod | grep nouveau
沒有輸出就是成功。
如果失敗,百度解決方案
2. 關閉圖形介面
按ctrl+alt+f1 進入tty1
    $ sudo service lightdm stop
3. 先按照顯示卡驅動
sudo sh NVIDIA-Linux-x86_64-375.82.sh
update x: yes
32bit庫: no
4. 再安裝cuda8
    sudo chmod a+x cuda_8.0.61_375.26_linux.run
    sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs  
按q退出閱讀readme,輸入accept接受協議繼續;
是否安裝driver,no
run nvidia-xconfig,選預設的no
32bit庫: no
剩下的y和回車就好,一些安裝和路徑的設定
5.重啟圖形介面
$ sudo service lightdm start
一般來說會直接進系統,不會迴圈登陸。
ubuntu14.04可能會出現迴圈登陸,請嘗試修改BIOS設定換其他顯示器介面,
無法解決只能重新安裝系統。
6.檢查是否成功
nvidia-smi   應該可以看到電腦上的GPU卡
ls /dev/nvidia*  如果沒有輸出,則參考部落格文章解決
http://blog.csdn.net/sinat_19628145/article/details/60475696
7.配置環境變數
sudo gedit  /etc/profile
新增如下程式碼
export PATH=/usr/local/cuda-8.0/bin:$PATH  
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/lib:$LD_LIBRARY_PATH
執行 source /etc/profile
檢查設定是否成功   env
8.編譯cuda的例子
cd到例子存放的路徑,預設路徑是 ~/NVIDIA_CUDA-8.0_Samples
(即 /home/xxx/ NVIDIA_CUDA-8.0_Samples, xxx是你自己的使用者名稱)
然後終端輸入:
    # make  
cd ~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
執行  ./deviceQuery
和 ./bandwidthTest
可以看到GPU顯示卡配置資訊
檢查 NVIDIA Driver
    # cat /proc/driver/nvidia/version  
會有NVIDIA Driver的版本號
檢查 CUDA Toolkit
    # nvcc –V  
會輸出CUDA的版本資訊

三、Ubuntu 16.04 LTS安裝 TeamViewer
https://www.cnblogs.com/aiguona/p/7182876.html
64位Ubuntu 16.04系統需要新增32位架構支援,命令如下。
sudo dpkg --add-architecture i386
sudo apt-get update
現在,安裝TeamViewer的依賴包。
sudo apt-get install libdbus-1-3:i386 libasound2:i386 libexpat1:i386 libfontconfig1:i386 libfreetype6:i386 libjpeg62:i386 libpng12-0:i386 libsm6:i386 libxdamage1:i386 libxext6:i386 libxfixes3:i386 libxinerama1:i386 libxrandr2:i386 libxrender1:i386 libxtst6:i386 zlib1g:i386 libc6:i386
用已經下載好的安裝包安裝
sudo dpkg -i teamviewer_12.0.76279_i386.deb
或者下載安裝TeamViewer。
wget http://download.teamviewer.com/download/teamviewer_i386.deb
sudo dpkg -i teamviewer_i386.deb
安裝完成後就能從Unity的Dash選單裡啟動TeamViewer了。
啟動之後設定teamviewer隨系統啟動,並設定密碼

四、安裝cudnn
$ cd ~/soft
$ tar xvf cudnn-8.0-linux-x64-v6.0.tgz
$ cd cuda/include
$ sudo cp *.h /usr/local/include/
$ sudo cp *.h /usr/local/lib/
$ cd ../lib64
$ sudo cp lib* /usr/local/lib/
$ cd /usr/local/lib
# sudo chmod +r libcudnn.so.6.0.20
$ sudo ln -sf libcudnn.so.6.0.20 libcudnn.so.6
$ sudo ln -sf libcudnn.so.6 libcudnn.so
$ sudo ldconfig

五、編譯安裝opencv
1. 安裝前準備
####for caffe  http://www.jianshu.com/p/69a10d0a24b9
$ sudo apt-get install libatlas-base-dev libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
##for cuda
sudo apt-get install build-essential libx11-dev libxmu-dev libxi-dev
#for opencv, python
sudo apt-get install python-scipy   python-numpy   python-matplotlib

2. 解壓原始碼安裝包
tar xvf opencv3.3-git.tar
mv opencv3.3 ../opencv3.3
cd ../opencv3.3

或者從github上clone:
sudo apt install git
git clone https://github.com/Itseez/opencv.git
當前目錄應該生成了一個opencv的目錄
mv opencv opencv3.3
cd opencv3.3
git clone https://github.com/Itseez/opencv_contrib.git
目錄/opencv3.3/opencv_contrib  為  opencv_contrib 原始碼目錄
git方式可能導致opencv版本大於3.3,建議使用soft目錄的opencv原始碼

3.安裝依賴庫:
$ sudo apt-get install gcc g++ cmake pkg-config build-essential
$ sudo apt-get install  libgtk2.0-dev libavcodec-dev libavformat-dev libtiff5-dev  libswscale-dev libjasper-dev
ubuntu14.04的系統為 libtiff4-dev

4.到程式碼目錄編譯opencv原始碼
$ cd opencv3.3/
$ mkdir build
$ cd build
執行
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules PYTHON2_EXECUTABLE=/usr/bin/python2 PYTHON_INCLUDE_DIR=/usr/include/python2.7 PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2.7/dist-packages/numpy/core/include/numpy ..
如果執行失敗,請檢查上述的命令中的目錄是否存在。如果不存在,嘗試安裝或更改路徑
sudo make -j4
sudo make install

5.安裝完成後,配置pkg-config,用於管理opencv安裝庫
$ sudo gedit /etc/ld.so.conf
在檔案的最後一行新增 include  /usr/local/lib
$ sudo ldconfig -v
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
使用以下命令檢視pkg-config配置資訊: pkg-config --libs opencv

6.測試安裝是否完成,測試程式採用opencv自帶的sample:
$ cd ~/opencv3.3/samples/
$ cmake .
$ make
$ cd cpp/
裡面就是剛剛make的檔案,可以選擇幾個可執行檔案進行執行,測試opencv是否安裝成功。

7.檢視python-opencv的版本
dell@dell-linux:~/opencv3.3/build$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print cv2.__version__
3.3.1-dev

六、編譯caffe
參考網站 http://www.jianshu.com/p/69a10d0a24b9
1. 解壓原始碼
cd soft
tar xvf caffe_src_171210.tar
mv caffe ../caffe171210
cd ../caffe171210
或者從Github克隆Caffe原始碼,但可能版本不一樣導致編譯失敗
sudo apt install git
git clone https://github.com/BVLC/caffe.git

2. 修改配置檔案makefile
開啟 caffe 所在目錄,找到Makefile.config.example檔案,將其改名為Makefile.config,開啟。
將# USE_CUDNN := 1一行開頭的#刪除,在 MakeFile.config 中開啟 cuDNN模式 。
將# OPENCV_VERSION := 3一行開頭的#刪除,在 MakeFile.config 中開啟 OPENCV3.3 。
執行命令編譯:
make -j4
等待編譯完成即可。
注意:如果出現以下錯誤
   ./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory
解決方法如下:
在Makefile.config檔案的第94行(行數可能會變),新增 /usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行程式碼改為第二行程式碼。
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
在Makefile檔案的第181行(行數可能會變),把 hdf5_hl 和hdf5修改為hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行程式碼改為第二行程式碼。
    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

3. 配置 caffe 環境
caffe 執行時需要呼叫 cuda 的庫,我們在/etc/ld.so.conf.d目錄下新建一個cafe.conf檔案。
終端輸入
$ sudo gedit /etc/ld.so.conf.d/caffe.conf
開啟 gedit 。新增內容:
/usr/local/cuda/lib64
儲存退出。
更新配置
$ sudo ldconfig
所有配置結束。

七、測試caffe
# cd ~/caffe
# sudo sh data/mnist/get_mnist.sh
# sudo sh examples/mnist/create_mnist.sh
# sudo sh examples/mnist/train_lenet.sh
感受1080開啟cuDNN模式的強大吧!


八、安裝tensorflow
https://www.tensorflow.org/install/install_linux

1. 不需要執行下面的命令
#sudo apt-get install libcupti-dev

2. Installing with virtualenv
$ sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7
$ sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n

3. Create a virtualenv environment by issuing one of the following commands:
virtualenv --system-site-packages ~/tensorflow-python2
virtualenv --system-site-packages -p python3 ~/tensorflow-python3
$ virtualenv --system-site-packages targetDirectory # for Python 2.7
$ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n

4. Activate the virtualenv environment by issuing one of the following commands:
$ source ~/tensorflow/bin/activate
The preceding source command should change your prompt to the following:
   (tensorflow)$

5. Ensure pip ≥8.1 is installed:
   (tensorflow)$ easy_install -U pip

6. Issue one of the following commands to install TensorFlow in the active virtualenv environment:
(tensorflow)$ pip install --upgrade tensorflow     # for Python 2.7
(tensorflow)$ pip3 install --upgrade tensorflow    # for Python 3.n
(tensorflow)$ pip install --upgrade tensorflow-gpu  # for Python 2.7 and GPU
(tensorflow)$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU
pip3 install --upgrade tensorflow-gpu==1.4

7. Validate your installation
Start a terminal. Invoke python:
$ python
Enter the following short program inside the python interactive shell:
# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

8. Test tensorflow with GPU
$ python Test.py


9.在選定的GPU上執行
CUDA_VISIBLE_DEVICES=0 python Test.py
或者:
import os  
os.environ['CUDA_VISIBLE_DEVICES']='0'

相關文章