1. 程式人生 > >ubuntu16.04+cuda8.0+cudnn+opencv3.0+caffe

ubuntu16.04+cuda8.0+cudnn+opencv3.0+caffe

一.ubuntu16.04安裝

開機F12進入BIOS的裝置啟動選單,選擇U盤啟動。 安裝型別,選擇其他選項,進行分割槽。 在這裡插入圖片描述 Swap:邏輯分割槽,20GB 空間起始位置 交換空間 /boot(引導分割槽):10G 邏輯分割槽 空間起始位置 Ext4日誌檔案系統 /boot /.(主分割槽):100GB 主分割槽,用於存放系統. /home(使用者儲存資料用):邏輯分割槽,剩下的440GB全部留給了/home。

其餘全部一下步即可。

BUG:直接進入win7系統,沒有選擇ubuntu系統的選項。 Solution:EasyBCD

二.cuda8.0

1.檢查自己的GPU是否支援CUDA

lspci | grep -i nvidia

2.安裝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

執行完上述後,重啟:sudo reboot 輸入:nvidia-smi 如果出現了你的GPU列表,則說明驅動安裝成功了。

3.禁止ubuntu系統自帶的nouveau顯示卡驅動。 檢視自己的驅動狀態:lsmod | grep nouveau

如果有顯示就要執行下面的操作了,一般新系統都是有輸出的。 建立blacklist-nouveau.conf:sudo gedit /etc/modprobe.d/blacklist-nouveau.conf 在新建的檔案裡新增如下內容:

blacklist nouveau
options nouveau modeset=0

更新:sudo update-initramfs -u 執行完上述後,重啟:sudo reboot 再一次檢查是否禁用成功lsmod | grep nouveau 沒有東西輸出變是成功啦。

4.安裝run檔案 A. [https://developer.nvidia.com/cuda-downloads

]官網下載適合自己的run安裝包 B.重啟系統後,不要進入登陸介面(!!!否則可能會安裝失敗),直接按 Ctrl+Alt+F1進入文字模式(命令列介面),輸入使用者名稱和密碼,登入賬戶。 C.關閉圖形化介面

sudo service lightdm stop

D.使用cd 命令切換到cuda_8.0.61_375.26_linux.run的目錄,執行

sudo sh cuda_8.0.27_linux.run

安裝的時候,要讓你先看一堆文字(EULA),我們直接不停的按##空格鍵到100%;不要選擇安裝驅動,遇到提示是否安裝openGL ,選擇no,其他的可以一路accept, yes或回車,不建議安裝samples.以及x-config。

E.重啟圖形化介面

sudo service lightdm start

F.如果出現迴圈登入,按 F2 進入 boot 介面,確定secure boot 選項是 disable。

5.配置環境

sudo gedit /etc/profile

開啟“profile”檔案,在末尾處新增(注意不要有空格,不然會報錯):

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

重啟電腦:sudo reboot

6.檢查是否成功

cat /proc/driver/nvidia/version
nvcc -V
nvidia-smi

有輸出

ls /dev/nvidia*

顯示三個或四個

三.cudnn

1.下載cudnn-8.0-linux-x64-v5.1.tgz 2. 解壓檔案tar zxvf cudnn-8.0-linux-x64-v5.1.tgz,解壓後,得到cuda資料夾,內有include和lib64兩個資料夾。 3. 進入include資料夾,執行如下命令複製標頭檔案:

sudo cp cudnn.h /usr/local/cuda/include/

4.進入lib64資料夾,執行如下命令複製動態連結庫:

sudo cp lib* /usr/local/cuda/lib64/

5.進入複製後的動態連結庫進行新的連結 先進入目錄:cd /usr/local/cuda/lib64/ 檢視已有連結:ls -al | grep libcudnn 顯示四個 刪除原有動態檔案:sudo rm -rf libcudnn.so libcudnn.so.5 再次檢視:ls -al | grep libcudnn 顯示兩個,說明已刪除,現在建立新的連結:

sudo ln -s libcudnn.so.5 libcudnn.so
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 #生成軟銜接

(上面那一條也有可能是sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 這裡需要先檢視一下自己應該連結的是 libcudnn.so.5.1.10 還是 libcudnn.so.5.1.5 ,檢視方法為下:

locate libcudnn.so

執行完後顯示如下:

/home/yxy/.local/share/Trash/files/libcudnn.so
/home/yxy/.local/share/Trash/files/libcudnn.so.5 	
/home/yxy/.local/share/Trash/files/libcudnn.so.5.1.10 	
/home/yxy/.local/share/Trash/files/cuda/lib64/libcudnn.so 	
/home/yxy/.local/share/Trash/files/cuda/lib64/libcudnn.so.5 	
/home/yxy/.local/share/Trash/files/cuda/lib64/libcudnn.so.5.1.10 	
/home/yxy/.local/share/Trash/info/libcudnn.so.5.1.10.trashinfo 	
/home/yxy/.local/share/Trash/info/libcudnn.so.5.trashinfo 	
/home/yxy/.local/share/Trash/info/libcudnn.so.trashinfo 	
/home/yxy/cuda/lib64/libcudnn.so 	
/home/yxy/cuda/lib64/libcudnn.so.5 	
/home/yxy/cuda/lib64/libcudnn.so.5.1.10 /usr/local/lib/libcudnn.so 	
/usr/local/lib/libcudnn.so.5

可以看到我的檔案是 libcudnn.so.5.1.10 ,並沒有 libcudnn.so.5.1.5,所以第三行命令我連結的是 libcudnn.so.5.1.10 ,這裡第三行連結命令視你的檢視結果而定。) 再次檢視:

 ls -al | grep libcudnn

顯示四個,已連結好! 然後設定環境變數和動態連結庫:

sudo gedit /etc/profile

然後再開啟的檔案末尾加上(“=”前後不要有空格)

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

儲存之後建立連結檔案:

sudo vi /etc/ld.so.conf.d/cuda.conf

這是一個空白檔案,新增:

/usr/local/cuda/lib64

按下esc鍵,輸入(:wq)儲存並退出 輸入如下命令使連結生效

sudo ldconfig

四.opencv3.0

1.安裝OpenCV的一些依賴庫。(可以寫一個指令碼,直接全部執行)

sudo apt-get -qq remove ffmpeg x264 libx264-dev
sudo apt-get -y install libopencv-dev
sudo apt-get -y install build-essential
sudo apt-get -y install cmake
sudo apt-get -y install pkg-config
sudo apt-get -y install yasm
sudo apt-get -y install libjasper-dev
sudo apt-get -y install libavcodec-dev
sudo apt-get -y install libavformat-dev
sudo apt-get -y install libswscale-dev
sudo apt-get -y install libdc1394-22-dev
sudo apt-get -y install libxine-dev
sudo apt-get -y install libgstreamer0.10-dev
sudo apt-get -y install libgstreamer-plugins-base0.10-dev
sudo apt-get -y install libv4l-dev
sudo apt-get -y install python-dev
sudo apt-get -y install python-numpy
sudo apt-get -y install python-scipy
sudo apt-get -y install  python-sphinx
sudo apt-get -y install libtbb-dev
sudo apt-get -y install libqt4-dev
sudo apt-get -y install libgtk2.0-dev
sudo apt-get -y install libfaac-dev
sudo apt-get -y install libmp3lame-dev
sudo apt-get -y install libopencore-amrnb-dev
sudo apt-get -y install libopencore-amrwb-dev
sudo apt-get -y install libtheora-dev
sudo apt-get -y install libvorbis-dev
sudo apt-get -y install libxvidcore-dev
sudo apt-get -y install x264
sudo apt-get -y install v4l-utils
sudo apt-get -y install unzip
sudo apt-get -y install libgtk2.0-0
sudo apt-get -y install libjpeg-dev
sudo apt-get -y install libjpeg62 
sudo apt-get -y install libtiff4-dev
sudo apt-get -y install libtiff5-dev
sudo apt-get -y install qt5-default

2.下載一個安裝包,為後面編譯安裝做準備。

wget http://www.linuxtv.org/downloads/v4l-utils/v4l-utils-0.8.5.tar.bz2
wget http://ffmpeg.org/releases/ffmpeg-2.8.tar.bz2
wget -O opencv-3.0.0.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.0.0/opencv-3.0.0.zip/download

3.安裝mmfpeg

sudo apt-get install -y libx264-dev libxext-dev libxfixes-dev
tar -xf ffmpeg-2.8.tar.bz2
cd ffmpeg-2.8
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis
make -j
make install
cd ..

4.安裝v4l

tar -xvf v4l-utils-0.8.5.tar.bz2
cd v4l-utils-0.8.5
make -j
sudo make install
cd ..

5.安裝opencv

sudo unzip opencv-3.0.0.zip
cd opencv-3.0.0
sudo mkdir build
cd build
# 注意根據自己的顯示卡,修改 CUDA_GENERATION。如果是Fermi架構,就需要將Kepler修改成Fermi
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON CUDA_GENERATION=Kepler ..
sudo make -j
sudo make install
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

6.BUG 執行sudo make時,可能出現

make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o]
Error 1 make[1]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all]
Error 2 make: *** [all] Error 2的錯誤。

那是因為 cuda-8.0與OpenCV 3.0發生了衝突。解決方法:修改openCV 3.0原始碼,使其相容cuda-8.0

sudo gedit opencv-3.0.0/modules/cudalegacy/src/graphcuts.cpp

將第四十五行位置的

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

改為

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

然後重新

sudo make -j4 

五.caffe

1.安裝caffe相關依賴

sudo apt-get install git libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev python-dev libgflags-dev libgoogle-glog-dev liblmdb-dev

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

安裝python依賴庫

sudo apt-get install cython python-numpy python-scipy python-skimage python-scikits-learn python-matplotlib ipython python-h5py python-leveldb python-networkx python-nose python-pandas python-dateutil python-protobuf python-gflags python-yaml python-pil

安裝矩陣加速器

sudo apt-get install libopenblas-dev

2.從官網下載caffe-master壓縮包,解壓到自己想要的目錄,進入主目錄下

cp Makefile.config.example Makefile.config

3.sudo gedit Makefile.config 修改BLAS:=openuse_cudnn :=1的備註取消

修改下面配置:

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/hdf5/serial/ 

應用 opencv 版本 將 #OPENCV_VERSION := 3取消註釋 使用 python 介面 將 #WITH_PYTHON_LAYER := 1 取消註釋

4.可以開始編譯了

make all -j8 make test -j8 make runtest -j8 make pycaffe