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
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
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:=open
將use_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