注:linux+caffe小白,以下文檔僅記錄學習點滴。網上有很多教程,一定要根據自己硬件條件選擇各個安裝包的版本,這一點非常重要。
1.NVIDIA顯卡安裝
主要參考:https://blog.csdn.net/luteresa/article/details/79555356
百試不爽的顯卡安裝教程,根據我自己的顯卡,安裝了NVIDIA-340驅動。
2.CUDA-6.5安裝
下載cuda6.5版本安裝包cuda_6.5.14_linux_64.run(建議所有安裝包都放在home目錄下,使用文本界面安裝,Ctrl+Alt+F1進入,--sudo service lightdm stop關閉圖形界面)。
(1)解壓:sudo sh cuda_6.5.14_linux_64.run --extract=extract_path (extract_path爲自己的解壓路徑)。
解壓出來有三個文件:
- CUDA安裝包: cuda-linux64-rel-6.5.14-18749181.run
- NVIDIA驅動: NVIDIA-Linux-x86_64-340.29.run
- SAMPLE包: cuda-samples-linux-6.5.14-18745345.run
安裝*.run文件,sudo ./cuda_6.5.14_linux_64.run,默認安裝即可,accept+y+回車搞定。
(2)添加環境變量,cuda默認安裝在/usr/local/cuda-6.5中,所以
sudo vi /etc/profile
a 或 i編輯,
PATH=/usr/local/cuda-6.5/bin:$PATH
export PATH
Esc+:wq 保存退出
source /etc/profile 是環境變量立即生效。
添加lib庫路徑:
sudo vi /etc/ld.so.conf.d/cuda.conf
在添加的cuda.conf文件中添加如下內容:/usr/local/cuda-6.5/lib64。保存退出
執行 sudo ldconfig 使之立即生效。
(3)在安裝sample之前,安裝一些依賴庫。
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa-dev
(4)安裝*.sample文件
sudo ./cuda-samples-linux-6.5.14-18745345.run,同樣默認安裝。
之後編譯sample,cd /usr/local/cuda-6.5/samples 執行sudo make
大概會編譯一會,完成以後,進入 cd samples/bin/x86_64/linux/release,執行 sudo ./deviceQuery。
會出現顯卡的信息,即安裝成功。
大致效果如上圖。顯卡驅動已經安裝過了,不用重複安裝。
3.安裝ATLAS
有MKL、OpenBLAS、ATLAS可以選擇,我安裝的是ATLAS:sudo apt-get install libatlas-base-dev
4.安裝Opencv2.4.9
我是在官網下載的source安裝的。首先下載依賴包:
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config python-numpy python3.2-dev
媒體包可選擇安裝:
sudo apt-get install libavcodec-dev libavformat-devlibswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev
解壓壓縮包:unzip opencv-2.4.9.zip
cd opencv-2.4.9
mkdir release
cmake -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
添加環境變量與lib庫路徑:
sudo gedit /etc/ld.so.conf
添加: /usr/local/lib
sudo ldconfig -v
sudo gedit /etc/profile
添加:export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
在home目錄下編寫一個hello world的程序,包含#include<opencv2/core/core.hpp>頭文件
編譯:g++ -L /usr/local/cuda-6.5/lib64 `pkg-config --cflags --libs opencv` hello.cpp -o hello
編譯運行成功,證明安裝成功。
可能會報錯:
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization
下載 NCVPixelOperations.hpp 替換opencv-2.4.9/modules/gpu/src/nvidia/core中的NCVPixelOperations.hpp即可
5.安裝其他依賴項
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
6.安裝Caffe所需要python環境
我安裝的Anaconda
sudo bash ./Anaconda2-5.1.0-Linux-x86_64.sh
默認安裝之後,添加環境變量&lib路徑:
sudo gedit etc/ld.so.conf
添加:/usr/usrname/anaconda2/bin (usrname是自己的賬號名)
sudo ldconfig
sudo gedit ~/.bashrc
添加:export LD_LIBRARY_PATH="/home/usrname/anaconda2/lib:$LD_LIBRARY_PATH"
測試:在終端輸入python,沒報錯即成功。
7.安裝Caffe的Python依賴庫
cd ~/caffe-master/python/
$for req in $(cat requirements.txt); do pip install $req; done
注:如果提示差什麼動態庫,apt-get install 安裝即可。
8.安裝Cudnn
(1)下載cudnn-6.5-linux-x64-v2,然後安裝:
解壓:sudo tar -zxvf cudnn-6.5-linux-x64-v2.tgz
cd cudnn-6.5-linux-x64-v2
將頭文件&動態庫拷貝到對應文件夾:
sudo cp lib* /usr/local/cuda-6.5/lib64/
sudo cp cudnn.h /usr/local/cuda-6.5/include/
(2)更新軟連接:
cd /usr/local/cuda-6.5/lib64/
sudo chmod +r libcudnn.so.6.5.48
sudo ln -s libcudnn.so.6.5.48 libcudnn.so.6.5
sudo ln -s libcudnn.so.6.5 libcudnn.so
9.編譯Caffe
cd ~/caffe-mater
sudo cp Makefile.config.emamples Makefile.config
修改該文件中幾個地方:
USE_CUDNN=1;
添加:-gencode arch=compute_50,code=compute_50 刪除50之後的東西。
PYTHON_LIB=$(ANACONDA_HOME)/lib
WITH_PYTHON_LIB:=1
這裏要根據自己安裝的環境更改,例如Python版本有2、3可以選擇,matlab安裝與否等等。
編譯命令:
make all
make test
make runtest
測試:python,import caffe,沒報錯就編譯成功了。以後就可以測試一下demo,然後開始編程了。
安裝caffe主要參考以下兩個博客:
https://www.cnblogs.com/YiXiaoZhou/p/6396674.html
http://www.cnblogs.com/platero/p/4118139.html
安裝時的疑問:
1. *-dev依賴包的下載,linux中有大量的*-devel與*-dev依賴包。*-devel開發包中主要包括一些頭文件和靜態鏈接庫。*-dev或者其他*.devel軟件一般都是C語言編寫的一些頭文件或cpp文件,往往是其他模塊或這我們自己寫的模塊在編譯時,需要依賴這些*-devel軟件包。
2. 在安裝cuda的時候,由於涉及到NVIDIA驅動的安裝,使得nouveau驅動與NVIDIA驅動衝突,爲了能夠繼續安裝,必須禁用此驅動。