Ubuntu16.04 + cuda8.0 + GTX1080 + matlab14.04a + Opencv3.0 + caffe 安裝教程

注意:本教程只針對以下配置而言,其他配置可能會出現其他問題,不承擔任何責任。

配置說明:

雙硬盤雙系統,250G固態硬盤裝了win10,4T機械硬盤裝了Ubuntu16.04

雙顯卡:集顯加獨顯(GTX1080

先按照了win10,再裝Ubuntu16.04,都是製作了U盤引導盤安裝,沒什麼好說


說明

1、1080裝機只能使用DVI接口的顯示器,無法使用VGA或者轉接頭之類的。或者先使用集顯連顯示器。當然當你把顯卡驅動安好之後,是能用VGA接口的,不過在那之前,VGA不識別。
2、1080需要使用自己的顯卡驅動,不能使用cuda 自帶的驅動。
3、Ubuntu16.04 系統的默認GCC版本爲5.4, 而編譯caffe最高只支持5.3.
4、Opencv不能直接安裝,因爲cuda8是新出的,opencv 無法識別。

一、安裝Ubuntu16.04

1、先上官網下載Ubuntu16.04的鏡像iso
2、再用UltraISO製作引導盤
3、U盤按照Ubuntu16.04

在這裏發現如果顯示器接的是獨顯1080的話,會出現分辨率問題而無法進行安裝界面,屏幕顯示“輸入不支持”。

在這裏卡了很久,也谷歌了好久,網上都說需要手動添加顯卡選項: nomodeset,使其支持Nvidia系列顯卡。

(參考: 安裝ubuntu黑屏問題的解決 or How do I set ‘nomodeset’ after I’ve already installed Ubuntu?

但發現還是沒能解決問題。後來是把視頻線接到集顯輸出後,就能正常進入安裝界面,在安裝完後,我也是手動修改了grub文件,順便改改分辨率:

sudo vim /etc/default/grub

找到這一行:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"修改爲:GRUB_CMDLINE_LINUX_DEFAULT="quiet splashnomodeset"

然後順便改分辨率

# The resolution used on graphical terminal 
# note that you can use only modes which your graphic card supports via VBE 
# you can see them in real GRUB with the command `vbeinfo’ 
#GRUB_GFXMODE=640×480 
# 這裏分辨率自行設置 
GRUB_GFXMODE=1920×1080

更新GRUB:

sudo update-grub

二、安裝nvidia顯卡驅動

在這裏附上一下關於查看顯卡信息的命令

(1)檢查你的電腦有哪些顯卡

lspci -k | grep -A 2 -i "VGA"
(2)查看哪一個專有驅動是推薦安裝的
sudo ubuntu-drivers devices
有個recommended 的那個驅動就是推薦的。

也可以上官網查自己顯卡型號推薦的驅動(http://www.nvidia.cn/Download/index.aspx?lang=cn
安裝驅動有三種方法:(1)run文件;(2)deb文件;(3)第三方安裝

各種嘗試後發現第三種方法是最簡便安全的。試過第一種,要各種配置,裝完後還在圖形界面那裏無限循環了,反正就各種問題

下面是第三種方法:

sudo add-apt-repository ppa:graphics-drivers

第一次運行出現如下的警告:
Fresh drivers from upstream, currently shipping Nvidia.
## Current StatusWe currently recommend: nvidia−361nvidia-361, Nvidia’s current long lived branch. 
For GeForce 8 and 9 series GPUs use nvidia−340nvidia-340 For GeForce 6 and 7 series GPUs use nvidia−304nvidia-304
## What we’re working on right now:– Normal driver updates– Investigating how to bring this goodness to distro on a cadence.
## WARNINGS:This PPA is currently in testing, you should be experienced with packaging before you dive in here. 

Give us a few days to sort out the kinks.Volunteers welcome! See also: https://github.com/mamarley/nvidia-graphics-drivers/http://www.ubuntu.com/download/desktop/contribute
更多信息: https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa 

按回車繼續或者 Ctrl+c 取消添加

回車後繼續:

sudo apt-get update 
sudo apt-get install nvidia-367 
sudo apt-get install mesa-common-dev 
sudo apt-get install freeglut3-dev

把上面的顯卡驅動型號改成你匹配的型號

之後重啓系統讓GTX1080顯卡驅動生效 

測試

終端輸入:

nvidia-smi

出現類似上述界面說明安裝成功了

三、安裝cuda-8.0

在安裝 CUDA 之前,google了一下,發現在Ubuntu16.04下安裝CUDA7.5問題多多,幸好CUDA8已出,支持GTX1080:

從上圖也可以看出,CUDA 也有好幾種安裝方法,

但不推薦用deb方法,因爲deb包裏自帶了一箇舊的顯卡驅動,不支持1080,安裝完後需要重新安裝367版本的顯卡驅動。

參考文章【3】是按deb方法安裝的,可作參考

下面介紹run方法:

1、官網下載“cuda_8.0.27_linux.run”(建議先在windows下載再拷過去),或者從我給的百度網盤裏也有下載;
2、sudo sh cuda_8.0.27_linux.run 

有可能要加 --override 參數:

這個參數會覆蓋原來的驅動,如果沒出現問題可以不需要這個參數。

sh cuda_8.0.27_linux.run --override 
啓動安裝程序,一直按空格到最後,輸入accept接受條款 
輸入n不安裝nvidia圖像驅動,之前已經安裝過了 
輸入y安裝cuda 8.0工具 
回車確認cuda默認安裝路徑:/usr/local/cuda-8.0 
輸入y用sudo權限運行安裝,輸入密碼 
輸入y或者n安裝或者不安裝指向/usr/local/cuda的符號鏈接 
輸入y安裝CUDA 8.0 Samples,以便後面測試 
回車確認CUDA 8.0 Samples默認安裝路徑:/home/pawn(pawn是我的用戶名),該安裝路徑測試完可以刪除 

3、添加環境變量
sudo gedit ~/.bashrc
export CUDA_HOME=/usr/local/cuda-8.0  
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH 
export PATH=/usr/local/cuda-8.0/bin:$PATH
保存退出後使其立刻生效
source ~/.bashrc 

4、安裝例程測試

(1)查看cuda版本

nvcc --version

(2)最後進入cuda自帶的例子中看cuda是否已正確配置 

cd ~/NVIDIA_CUDA-8.0_Samples/
make -j16
這裏可能出現gcc、g++版本過高的問題。

兩種方法:

a、直接下載低版本的gcc、g++替換之

ubuntu16.04 默認安裝的gcc版本爲gcc-5.4,(可用gcc --version查看)有時可能需要低版本的,所以我們先安裝gcc-4.8.5  

sudo apt-get install -y gcc-4.8 g++-4.8  
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20 
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20 
cd /usr/bin  
sudo cp gcc gcc_backup 
sudo cp g++ g++_backup 
sudo rm gcc g++ 
sudo ln -s gcc-4.8 gcc 
sudo ln -s g++-4.8 g++
這樣再用gcc --version查看就是4.8.5了,如果想切換爲系統默認的版本: 
sudo rm gcc g++ 
sudo ln -s gcc-5 gcc 
sudo ln -s g++-5 g++

b、修改源碼,使其支持更高版本的gcc和g++

cd /usr/local/cuda/include/ #進入到頭文件目錄 
sudo gedit host_config.h #編輯頭文件

Ctrl + F 搜索GNUC,找到一段類似於  “if _GNUC_>5 || (_GNUC_ == 5 &&_GNUC_MINOR_> 3)”
,就是最大支持gcc-5.3,可自己取消該限制。建議改爲使其支持gcc-5.4,或者直接把兩個5改成6

(3)進入例程

cd ~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
./deviceQuery
得到:

./deviceQuery Starting…CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)Device 0: “GeForce GTX 1080” CUDA Driver Version / Runtime Version 8.0 / 8.0 CUDA Capability Major/Minor version number: 6.1 Total amount of global memory: 8112 MBytes (8506179584 bytes) (20) Multiprocessors, (128) CUDA Cores/MP: 2560 CUDA Cores GPU Max Clock rate: 1835 MHz (1.84 GHz) Memory Clock rate: 5005 Mhz Memory Bus Width: 256-bit L2 Cache Size: 2097152 bytes Maximum Texture Dimension Size (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384) Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 49152 bytes Total number of registers available per block: 65536 Warp size: 32 Maximum number of threads per multiprocessor: 2048 Maximum number of threads per block: 1024 Max dimension size of a thread block (x,y,z): (1024, 1024, 64) Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535) Maximum memory pitch: 2147483647 bytes Texture alignment: 512 bytes Concurrent copy and kernel execution: Yes with 2 copy engine(s) Run time limit on kernels: Yes Integrated GPU sharing Host Memory: No Support host page-locked memory mapping: Yes Alignment requirement for Surfaces: Yes Device has ECC support: Disabled Device supports Unified Addressing (UVA): Yes Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0 Compute Mode: <Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GTX 1080Result = PASS

說明cuda已經安裝成功!

四、安裝opencv3.0

網上有opencv3,0的安裝腳本,非常方便,如果你還提前下載了對應版本的安裝包,那就更省時間了

1、提供一個百度雲,裏面有安裝包。百度雲盤鏈接: http://pan.baidu.com/s/1qX1uFHa 密碼:wysa

2、在Install-OpenCV-master文件夾中包含安裝各個版本opencv腳本

3、切換到目錄執行,安裝依賴項: 

sudo sh Ubuntu/dependencies.sh

4、執行opencv3.0安裝腳本 

sudo sh Ubuntu/3.0/opencv3_0_0.sh
等待安裝完成即可

期間可能會卡在ippcv的下載中,Ctrl + c中斷後,可以自行從http://sourceforge.net/projects/opencvlibrary/files/3rdparty/ippicv這裏下載,解壓到opencv-master —> 3rdparty —> ippicv —> downloads —> linux-xxxxxxxxxxxxxxxx 下面
再把選項-D WITH_IPP=OFF添加到上面的cmake命令中,重新cmake即可。即

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 -D WITH_IPP=OFF ..

提醒一下,這時候要把opencv3_0_0.sh這個文件稍微修改一下啊,比如註釋掉mkdir build 等,還可以把後面的make -j4改到make -j16

最後就只需要等待安裝完就好,過程要挺久的,慢慢等!

問題1、 cuda8.0新出,opencv3.0.0或者2.4.10不支持。報錯:

/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared
     typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppStat
                                                      ^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:135:18: error: ‘NppiGraphcutState’ does not name a type
         operator NppiGraphcutState*()
                  ^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:141:9: error: ‘NppiGraphcutState’ does not name a type
         NppiGraphcutState* pState;
解決方案:需要修改一處源碼:
在OpenCV/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)
問題2、opencv可編譯成功,但運行時始終遇到問題:

Invalid device function
這是因爲編譯的opencv計算能力與電腦顯卡的實際計算能力不匹配導致的。一般而言直接添加一下2個cmake編譯選項即可解決

-D CUDA_ARCH_BIN=6.1 -D CUDA_ARCH_PTX=6.1
#Note:6.1爲GTX1080的計算能力,不同顯卡需要根據自己的計算能力進行修改
#查詢顯卡計算能力,可以通過運行cuda samples中的deviceQuery得知。
#(文件夾NVIDIA_CUDA-*_Samples下編譯示例, *爲版本號)
但如果運氣不佳,添加編譯選項並不能解決問題。這時候我們需要修改opencv中關於CUDA計算能力這部分的配置文件./cmake/OpenCVDetectCUDA.cmake。

在
set(CUDA_ARCH_BIN ${__cuda_arch_bin} CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported")
  set(CUDA_ARCH_PTX ${__cuda_arch_ptx} CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for")
之前添加
set(__cuda_arch_bin "6.1")
set(__cuda_arch_ptx "6.1")

五、安裝cudnn

NVIDIA官網下載cudnn v5.0 for cuda8.0rc:
 cudnn-8.0-linux-x64-v5.0-ga.tgz 

還有v3,v4,v5.1版本的,可以都先下下來,之後編譯或者以後可能會出現cudnn版本不適應的問題,這時候就要一個版本一個版本的去試了

安裝過程很簡單,直接解壓拷貝就可以了:  

tar xvzf cudnn-8.0-linux-x64-v5.0-ga.tgz 
sudo cp cuda/include/cudnn.h /usr/local/cuda/include 
sudo cp cuda/lib64/*.* /usr/local/cuda/lib64  
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
建立軟鏈接:
cd /usr/local/cuda/lib64/ 
sudo rm -rf libcudnn.so libcudnn.so.5 
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 
sudo ln -s libcudnn.so.5 libcudnn.so

以後需要更換cudnn版本的時候就把原來的libcudnn*替換掉,再重新軟鏈接就好(建議把重複的步驟做個腳本就方便了)

最後更新一下鏈接庫就可以:

sudo ldconfig

六、安裝matlab14.04a

1.下載 

由於該軟件爲商業軟件,僅提供百度雲安裝學習,並確保不使用做商業目的,下載24小時刪除…… 
下載鏈接 http://pan.baidu.com/s/1hsucG3E  提取密碼 nvb6

2.預準備 

將part1.rar壓縮文件解壓,如果無法解壓,可以先安裝unrar

sudo apt-get install unrar
將Mathworks.iso - 右鍵 - 使用磁盤映像掛載器打開”,進入裝載的虛擬光盤,拷貝全部文件至home/Matlab 文件夾(想要安裝的路徑)(PS:取名不要有空格)
複製Crack/install.jar至 home/Matlab/Java/jar/ 並覆蓋源文件

sudo cp install.jar /home/Matlab/java/jar/
#給安裝路徑及其子文件夾賦予執行權限
chmod a+x Matlab -R

3.安裝

#cd 到安裝文件夾下
sudo ./install 

接着會出現一個類似window的安裝窗口,按以下步驟操作

選項:不使用Internet安裝 
序列號: 12345-67890-12345-67890 (隨意20位數據)
默認路徑:/usr/local/MATLAB/R2014a 
建議全選安裝
勾選從默認啓動路徑創建符號鏈接(實現在任意位置運行matlab啓動程序) 
激活文件:Crack/license_405329_R2014a.lic 

拷貝 Crack/linux目錄下的libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64

sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/

4.解決編譯器gcc/g++版本問題

因爲Ubuntu 16.04的gcc/g++版本是5.4,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla調用mex文件的時候,基本上都會報錯,根據報錯信息,考慮如下兩步解決方案。 

A. 降級安裝gcc/g++版本爲4.7.x

sudo apt-get install -y gcc-4.7 g++-4.7
cd /usr/bin
sudo mv gcc gcc-4.9.2  #備份
sudo ln -s gcc-4.7 gcc
sudo mv g++ g++-4.9.2
sudo ln -s g++-4.7 g++

B. 暴力引用新版本GLIBCXX_3.4.21

sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.21
cd /usr/local/MATLAB/R2014a/sys/os/glnxa64
sudo mv libstdc++.so.6 libstdc++.so.6.backup
sudo ln -s libstdc++.so.6.0.21 libstdc++.so.6
sudo ldconfig -v

通過命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已經成功包含了GLIBCXX_3.4.21,如果已經存在,基本上就成功了。

建議用方法B,試過方法A,4.7版本的gcc在make all 時都會出錯,應該前面cuda編譯時用的就是5.4的,除非重裝系統,把cuda也用4.7編譯。

5.建立桌面快捷方式

 在/usr/share/applications 中創建Matlab2014.desktop 文檔,並輸入以下內容
[Desktop Entry]
Name  =Matlab2014
GenericName = Matlab R2014a
Comment = Matlab R2014a: The Language of the Techinical Computing
Exec = sh /usr/local/MATLAB/R2014a/bin/matlab -desktop
Icon = /usr/local/MATLAB/R2014a/toolbox/nnet/nnresource/icon16/matlab.png    
StartupNotify =true
Terminal = false
Type=Application
#添加該命令後,快捷方式會出現在 Applications/Programming/中
<p>Categories = Development;Matlab </p>

七、安裝caffe

1、安裝基本依賴庫

sudo apt-get update  
sudo apt-get install -y build-essential cmake git pkg-config 
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler  
sudo apt-get install -y libatlas-base-dev   
sudo apt-get install -y --no-install-recommends libboost-all-dev 
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev 
sudo apt-get install -y python-pip python-dev python-numpy python-scipy # (Python general) 
sudo apt-get install -y libopencv-dev # (OpenCV 2.4)

2、安裝科學計算庫BLAS(Basic Linear Algebra Subprograms 基本線性代數子程序)

常用的BLAS實現有:Intel MKL、atlas、OpenBLAS等。可以選擇其中一種,其中atlas的安裝最簡單,而MKL最快,本人選擇的是MKL。

1)安裝atlas

sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran

2)安裝MKL

a、下載與安裝
首先下載並安裝英特爾® 數學內核庫 Linux* 版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下載鏈接是:https://software.intel.com/en-us/qualify-for-free-software/student, 使用學生身份(郵件 + 學校)下載Student版,填好各種信息,可以直接下載,同時會給你一個郵件告知序列號。下載完之後,要把文件解壓到home文件夾(注意任何一級文件夾不能包含空格,否則安裝會失敗)

tar zxvf parallel_studio_xe_2016.tar.gz (如果你是直接拷貝壓縮文件過來的)
chmod a+x parallel_studio_xe_2016 -R
sh install_GUI.sh

輸入第三條命令後會打開圖形安裝界面,會有同意協議,輸入序列號,選擇安裝庫等,按照流程應該沒問題。
PS: 安裝的時候,建議使用root權限安裝,過程中會要求輸入Linux的root口令。(設置方法:命令行:$ sudo passwd)

b、MKL與CUDA的環境設置 
1.新建intel_mkl.conf, 並編輯之:

$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
2.新建cuda.conf,並編輯之:
$ sudo gedit /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
/lib
3.完成lib文件的鏈接操作,執行:
$ sudo ldconfig -v

完成!

3、安裝python的pip和easy_install,方便安裝軟件包 

cd ~
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py 
sudo python ez_setup.py --insecure 
wget https://bootstrap.pypa.io/get-pip.py 
sudo python get-pip.py

安裝python依賴

cd python #裏面有requirements.tx文件
sudo apt-get install python-pip
sudo su
for req in $(cat "requirements.txt"); do pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done

按Ctrl+D退出sudo su模式

4、 編譯

1)下載caffe

https://github.com/BVLC/caffe下載.zip安裝包,放在某路徑Caffe_Path下解壓。

2)修改Makefile.config配置文件

進入caffe根目錄:  

cp Makefile.config.example Makefile.config 
gedit Makefile.config

設置以下內容:  

USE_CUDNN := 1 #取消該句註釋  
OPENCV_VERSION := 3 #取消該句註釋
PYTHON_INCLUDE := /usr/include/python2.7 \   
/usr/lib/python2.7/dist-packages/numpy/core/include  
WITH_PYTHON_LAYER := 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 /usr/lib/x86_64-linux-gnu/hdf5/serial

保存退出。

3)編譯caffe

繼續在Caffe-master文件夾目錄下:

make all -j4
make test -j4
make runtest -j4
"-j4"是使用CPU的多核進行編譯,可以極大地加速編譯的速度,建議使用。
必須根據自己CPU情況選擇4或8或16,選擇過大的數字編譯時會出錯!!!

編譯過程中可能還會有各種問題,大多數都是cudnn的問題,還可能是一些庫沒安裝好,cudnn的問題就換不同版本的cudnn試試。

如果出現問題:

.build_release/tools/extract_features.o:在函數‘std::string* google::MakeCheckOpString<int, int>(int const&, int const&, char const*)’中:
extract_features.cpp:(.text._ZN6google17MakeCheckOpStringIiiEEPSsRKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIiiEEPSsRKT_RKT0_PKc]+0x50):對‘google::base::CheckOpMessageBuilder::NewString()’未定義的引用
可能是gcc版本問題,改回ubuntu16.04自帶的gcc-5.4版本即可,居然方法請回去看“三、安裝cuda-8.0”時的介紹。

有些是因爲電腦問題,支持不了太低版本的cudnn,可能就用不了cudnn了。例如筆記本上顯卡是GT540M,它的CUDA Capability是2.1,而官方的cudnn加速是不支持3.0以下的版本的,因此只能在Makefile.config中註釋掉USE_CUDNN這行。

=================================================================

簡單講就是GPU的加速性能不夠,CUDNN只支持CUDA Capability 3.0以上的GPU加速

==================================================================

如果是一些庫的問題,那就手動編譯,再在配置文件里加入庫路徑就好,有問題多百度谷歌,一步步排除,可以先註釋cudnn,甚至是註釋掉cuda,只是CPU_ONLY,一步步找出是在哪裏出問題!

出錯了就在原終端中輸入make clean清除第一次編譯結果 
再次輸入make all -j4重新編譯

4)編譯python-caffe接口

make pycaffe
編譯完在終端輸入python,再import caffe,如果沒報錯說明成功了
報錯的話應該就是路徑問題,只需要在~/.bashrc文件下export PYTHONPATH即可

sudo gedit ~/.bashrc
#CAFFE_ROOT是caffe的安裝路徑
export PYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH
再嘗試import caffe ,應該沒問題。

5)編譯matlab-caffe接口

打開Makefile.config文件,註釋掉MATLAB_DIR,並將MATLAB_DIR換成自己的MATLAB安裝路徑
# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
 MATLAB_DIR := /usr/local
 MATLAB_DIR := /usr/local/MATLAB/R2014a # 該路徑下應該有bin文件夾
make matcaffe

雖然會有警告說gcc版本不一致,但最後還是編譯成功了。
可以用matlab自帶的一個demo檢驗一下,打開matlab,在matlab窗口敲入:

cd $CAFFE_ROOT/matlab/demo/
im = imread('../../examples/images/cat.jpg');
[scores, maxlabel] = classification_demo(im, 1);
PS,還要先下一個cifar10裏要用到的model:bvlc_reference_caffenet.caffemodel 纔可以運行哦!
得到下面的結果即成功!


八、mnist測試

1、獲取mnist數據集 

下載mnist數據集,終端輸入 

cd /home/pawn/caffe/data/mnist/ 
./get_mnist.sh

在/home/pawn/caffe/data/mnist/目錄下會多出訓練集圖片、訓練集標籤、測試集圖片和測試集標籤等4個文件

2、mnist數據格式轉換 

cd /home/pawn/caffe/ 
./examples/mnist/create_mnist.sh
必須要在第一行之後運行第二行,即必須要在caffe根目錄下運行create_mnist.sh 
此時在/caffe/examples/mnist/目錄下生成mnist_test_lmdb和mnist_train_lmdb兩個LMDB格式的訓練集和測試集
3、訓練mnist
LeNet-5模型描述在/caffe/examples/mnist/lenet_train_test.prototxt
Solver配置文件在/caffe/examples/mnist/lenet_solver.prototxt
執行文件在/caffe/examples/mnist/train的lenet.sh 
終端輸入 
cd /home/pawn/caffe/ 
./examples/mnist/train_lenet.sh
即可開始訓練,準確率一般都有0.99以上

最後想說的是1080太新了,可能caffe還有其他一些環境跟不上的話很容易出現一些意想不到的錯誤,希望大家都能順利搭建成功吧!
最後再附上之前寫的一篇裝ubuntu後推薦安裝的軟件博文: Ubuntu14.04安裝與安裝後的軟件的安裝

九、備份系統

好不容易配好系統了,萬一腦殘不知動了哪給搞壞了怎麼辦?先備份個系統吧。 

9.1 系統備份  

系統設置(system setting)裏有Backups,但只能備份還原home文件夾。 

首先打開終端進入根目錄並獲取root權限 

cd / 
sudo su  
tar cvpzf Ubuntu_backup.tgz --exclude=/Ubuntu_backup.tgz --exclude=/mnt --exclude=/home --exclude=/proc --exclude=/sys --exclude=/lost+found / 
其中 Ubuntu_backup.tgz爲備份系統的名字,exclude參數用於設定忽略的文件夾,最後那個/是指示需要備份的目錄。

備份完後就可以拷貝到其他盤裏保存了。 

9.2 系統恢復  

在 Ubuntu_backup.tgz 所在文件夾下打開終端獲取root權限,將 Ubuntu_backup.tgz拷貝到根目錄下 

sudo su  
cp Ubuntu_backup.tgz / 
cd /  
tar xvpfz Ubuntu.tgz -C /  

新建備份時忽略的文件夾,如

mkdir /proc /lost+found /mnt /sys


參考文章:

1、Ubuntu16.04 + cuda8.0 + GTX1080安裝教程

2、ubuntu16.04+gtx1060+cuda8.0+caffe安裝、測試經歷

3、GTX1070+Ubuntu16+cuda8+Deeplearning配置

4、Caffe + Ubuntu 15.04(16.04) + CUDA 7.5(8) 新手安裝配置指南

5、ubuntu(gtx1080)安裝caffe


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章