1. 程式人生 > >時隔半年,重新在linux 上配置 Cuda+Cudnn+Pytorch+Caffe+Opencv

時隔半年,重新在linux 上配置 Cuda+Cudnn+Pytorch+Caffe+Opencv

此次重灌的原因:因為實驗需要,我需要在Linux系統上安裝Caffe和Opencv,但是在我安裝的過程中,會發生包之間的依賴問題:

libsdl1.2debian (= 1.2.15-10) 但是 1.2.15-10+rpi1 正要被安裝

                 依賴: libasound2-dev 但是它將不會被安裝  1.0.28-1+rpi1 

                 依賴: libglu1-mesa-dev 但是它將不會被安裝  libglu-dev

通過一系列的嘗試後,我搜到的可行的方法有一個,那就是手動刪除當前的包,然後按照error裡的需求將新的包依次安裝所需求的版本。因為害怕我這樣做後,原有的pytorch和cuda會因為包被改變,而再次出現依賴問題,我決定重新安裝。
首先明確安裝的順序:1.Ubuntu16.04的系統(不可以是虛擬機器,因為虛擬機器無法訪問顯示卡,這會導致你無法安裝顯示卡驅動!!!)2.nvidia顯示卡驅動(跟你的顯示卡型號相同的驅動)3.Cuda8.0安裝(建議安裝8.0版本!)4.Cudnn配置 5.OpenCV3.1.0安裝 (3.0.0安裝會有問題,親測!比3.1.0更高的版本沒有安裝過,不一定可以安裝成功!)6.pytorch安裝/Caffe安裝(按順序安裝完步驟1到步驟5後,你就可以隨意安裝其他的深度學習框架了,但是步驟1,2,3,4,5一定需要按順序來

一.ubuntu 16.04系統的安裝 

裝系統請靠自己,linux安裝真的是點一下玩一年裝備不花一分錢(一鍵到位),你需要注意的是在分配磁碟空間的時候找一下教程,看看應該怎麼分配空間。

二.nvidia顯示卡驅動安裝

首先明確自己的顯示卡是什麼型號,如果你是雙系統的話,你可以在windows系統上看下配置,或者你可以直接在linux的命令列裡輸入

lspci | grep -i vga

我本人的顯示卡是Nvidia GTX 960m,所以在官網下載:http://www.nvidia.com/Download/index.aspx?lang=en-us


下載完成後:

在terminal輸入:

sudo gedit /etc/modprobe.d/blacklist.conf

在開啟的文件內的最後一行輸入:

blacklist nouveau

接著在終端輸入:

sudo update-initramfs -u

重啟系統,然後按 Ctrl+Alt+F1,進入文字頁面

在中斷輸入:

sudo service lightdm stop

然後進入你下載顯示卡驅動的目錄,我的目錄是Documents裡,所以我cd進入這個目錄,然後執行:

sudo ./NVIDIA-Linux-x86_64-xxx.xx.run -no-x-check -no-nouveau-check -no-opengl-files 

注意注意注意,一定要輸入上面的-no-x-check -no-nouveau-check -no-opengl-files,很多部落格沒有加,

可能會導致編譯出錯,所以建議一定要像我說的這麼寫!

安裝完成後重啟電腦: 

reboot

至此如果沒有出錯,那麼恭喜你,你的驅動安裝成功了!

三.安裝CUDA

https://developer.nvidia.com/cuda-toolkit-archive在這裡下載CUDA8.0的版本


下載成功後進行cuda的安裝

首先更改許可權:

sudo chmod 777 cuda_8.0.xx_linux.run

然後編譯:

sudo  ./cuda_8.0.xx_linux.run

注意!!!在安裝過程中,它會問你是否安裝nvidia的顯示卡驅動,一定要選擇no!其他的全選yes即可。切記切記,不然你上一步安裝的nvidia顯示卡驅動就會被覆蓋了。

接著輸入:sudo gedit ~/.bashrc,開啟配置檔案

在最後加入下列程式碼

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

至此,配置成功!

四.CudNN下載與配置

首先去官網進行下載 https://developer.nvidia.com/cudnn

下載後解壓,解壓後文件夾的名字預設是cuda


執行以下命令,進入cuda 下的include目錄:

cd cuda/include

然後進行復制貼上: 

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

接著回到cuda目錄:cd ..
進入lib64目錄:cd lib64

繼續複製貼上:

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

完成!你會發現cudNN的配置僅僅需要做的就是複製檔案和貼上檔案。

五.Opencv安裝

進入官網下載3.1.0版本的sources檔案 :https://opencv.org/releases.html


下載完成後進行解壓,進入解壓的資料夾,接著輸入:

mkdir build
cd build
sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

然後開始編譯:  

sudo make

可能的錯誤:hdf5.h: No such file or directory

解決方法:參考這篇文章,你需要修改一些配置檔案http://blog.csdn.net/xue_wenyuan/article/details/52037121

上面的編譯成功後,安裝:

sudo make install

六.安裝pytorch

最愛pytorch了,安裝一直很簡單很輕便: 

git clone --recursive https://github.com/pytorch/pytorch
python setup.py install
pip install torchvision

你可以測試一下是否成功安裝:

python

import torch

如果沒報錯,則成功!注意,請退出torch的資料夾再進行測試,不然會報錯!(官方回覆)

七.安裝caffe

去github上下載原始碼:https://github.com/BVLC/caffe


解壓後進入caffe資料夾,執行以下的命令:

sudo cp Makefile.config.example Makefile.config

sudo gedit Makefile.config #開啟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 

因為我們是是ubuntu16的系統,所以以上的修改是必要的。

接著,修改makefile檔案
開啟makefile檔案,做如下修改:
將:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替換為:

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

再在終端輸入:

sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.6 /usr/local/lib/libcudnn.so.6 && sudo ldconfig

以上,所有的修改都完成了,我們接著進行編譯:

sudo make all

完成後,我們測試一下

sudo make runtest

如果沒有錯誤,則表示安裝成功!