首先,官方的參考文獻為:http://caffe.berkeleyvision.org/installation.html。
現在開始:
安裝一些依賴包(對於gcc與g++編譯器,就不多說了,可以apt-get install build-essentital),命令如下:
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf- compiler sudo apt-get install --no-install-recommends libboost-all-dev
現在安裝cuda,官方網站:https://developer.nvidia.com/cuda-zone:
點擊downloads,然后出現下圖,我選擇的為linux下的x86_64架構下的ubuntu的14.04的runfile(local)安裝包:
安裝時,參考官方文檔http://developer.download.nvidia.com/compute/cuda/7.5/Prod/docs/sidebar/CUDA_Installation_Guide_Linux.pdf,下面說安裝步驟(官方一些沒有必要的驟沒寫):
1.確認有一個CUDA-Capable的顯卡,可以輸入以面命令,會出來一些信息,說明你的顯卡符合條件。
lspci | grep -i nvidia
此外,還可以通過官方網站 http://developer.nvidia.com/cuda-gpus 來查看你的顯卡是否符合。
2,確認系統有正確的內核頭文坐件與開發包,直接輸入以下命令安裝就好啦(系統不一樣,命令也不一樣,具體看官方文檔)
sudo apt-get install linux-headers-$(uname -r)3,我采用的是runfile方式安裝:
首先,禁掉linux系統本身自帶的顯卡驅動 nouveau,方法為在 /etc/modprobe.d/目錄下建一個文件名為:blacklist-nouveau.conf,寫入一些內容,具體如下:
vim /etc/modprobe.d/blacklist-nouveau.conf
寫入:
blacklist nouveau options nouveau modeset=0
執行:
sudo update-initramfs –u
其次,以命令行模式重啟電腦,對於debian8,進入命令行模式的方法為,輸入:
systemctl set-default multi-user.target
進入窗口方式的方法為,輸入:
systemctl set-default graphical.target
好,現在我們用命令行重啟電腦了,確認nouveau驅動沒有啟動,輸入以下命令,不出現任何東西哦
lsmod | grep nouveau
好,現在找到我們下載的cuda_7.5.18.linux.run文件,給它可執行權限,安裝它(記得用sudo,給它一些安裝包寫入的權限):cd 〈cuda_7.5.18 .linux.run文件所在的目錄下〉 chmod +x cuda_7.5.18 .linux.run sudo ./cuda_7.5.18.linux.run
在這個過程中,分問你安裝路徑,我直接默就好,還會問你是否安裝一些包,我除了openGL沒有安裝,其余都安裝了,因為,筆記本有核心顯卡,屏幕顯示會用核心顯卡,如果安裝了openGL,可能會出現顯示不正常的現像;台式機沒事。
下面是device node verification,看看是是否存在 /dec/nvidia*之類的文件和是否有讀寫權限,如果沒有文件,我們自己添加,沒有權限,自己改就好,添加方法,看這個腳本文件:
#!/bin/ bash /sbin/modprobe nvidia if [ "$?" -eq 0 ]; then# Count the number of NVIDIA controllers found. NVDEVS
=`lspci | grep - i NVIDIA` N3D=`echo "$NVDEVS" | grep "3D controller" | wc - l` NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc - l` N=`expr $N3D + $NVGA - 1 ` for i in `seq 0 $N`; do mknod -m 666 /dev/nvidia$i c 195 $i done mknod -m 666 /dev/nvidiactl c 195 255 elseexit
1 fi /sbin/modprobe nvidia- uvm if [ "$?" -eq 0 ]; then# Find out the major device number used by the nvidia
- uvm driver D=`grep nvidia-uvm /proc/devices | awk '{print $1}' ` mknod -m 666 /dev/nvidia-uvm c $D 0 elseexit
1 fi現在我們回到圖形桌面,方法如上面已說。設置環境變量,我的辦法是在.bashrc里添加如下(我的是64位系統,完成后關):
export PATH=/usr/local/cuda-7.5/ bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
如果32位的話,這樣寫:
export PATH=/usr/local/cuda-7.5/ bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib:$LD_LIBRARY_PATH到此安裝基本完成,現在一些確認安裝成功的驗證步驟:
查看安裝的驅動信息(注意,對於iGPU/dGPU沒作用):
cat /proc/driver/nvidia/version查看CUDA Toolkit的版本,可以輸入:
nvcc –V現在,我們運行一下自帶的examples,由於我是默認的安裝路徑,所以,進入~/~/NVIDIA_CUDA-7.5_Samples下,make.命令如下:
cd ~/NVIDIA_CUDA-7 .5_Samples make完成以后,在~/NVIDIA_CUDA-7.5_Samples/bin/86_64/linux/release路徑下(我的是這樣的路徑),分別運行deviceQuery與
bandwidthTest文件,會分別出現這樣的結果(不一定一樣,類似):
CUDA Driver Version
/ Runtime Version 7.5 / 7.5
CUDA Capability Major
/Minor version number: 2.1
Total amount of global memory:
1024 MBytes (1073479680
bytes) ( 2) Multiprocessors, ( 48) CUDA Cores/MP: 96
CUDA Cores GPU Max Clock rate: 1250 MHz (1.25
GHz) Memory Clock rate: 900
Mhz Memory Bus Width: 64-
bit L2 Cache Size: 131072
bytes Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65535), 3D=(2048, 2048, 2048
) Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048
layers Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 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: 32768
Warp size: 32 Maximum number of threads per multiprocessor: 1536 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): (65535, 65535, 65535 ) Maximum memory pitch: 2147483647 bytes Texture alignment: 512 bytes Concurrent copy and kernel execution: Yes with 1 copy engine(s) Run time limit on kernels: No 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 = 7.5, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 =
GeForce GT 620M Result = PASS
Device to Host Bandwidth, 1Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/ s) 33554432 3316.7
Device to Device Bandwidth, 1Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/ s) 33554432 13068.0
Result
=
PASS NOTE: The CUDA Samples are not meant for
performance measurements. Results may vary when GPU Boost is enabled. yinheyi@yinheyi-Aspire-V5-471
好啦,cuda安裝完成啦。
現在再安裝一下GPU Deployment Kit,下載地址:http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_352_79_gdk_linux.run ,安裝方法與上面一樣,直接運行它就可以啦,不多說啦。
安裝BLAS:對於BLAS的依賴,我選擇安裝ATLAS(還可以通過安裝MKL, or OpenBLAS),方法為:
安裝Python以及依賴的庫:一般我們的系統都自帶我python, 我的版本為2.7.
雖然安裝我python,但是很多需要的庫並沒有,我們可以進入我們下載的caffe包(可以在這里下載)里面,打開 caffe包里面的 /python/requirements.txt文件,這里面就是它的依賴的庫,在該目錄下,可以通過下面命令下載(如果直接輸入命令不管用,可以把它寫入到一個腳本里面):
for req in $(cat requirements.txt); do pip install $req; done如果提示找不到 pip 命令,則說明沒有 pip 這個工具,那么下載它: https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz,然后解壓,里面有一個setup.py的文件,執行這個文件就可以安裝pip了。
sudo python setup.py install有些電腦可能會提示 no moudle name setuptools 的錯誤,這是沒有安裝setuptools的原因。那就需要先安裝一下setuptools, 到https://pypi.python.org/packages/source/s/setuptools/setuptools-19.2.tar.gz 下載安裝包setuptools-19.2.tar.gz,然后解壓執行:
sudo python setup.py install當我用pip下載相關的庫文件時,發現下載的速度好慢,老是失敗,后來想改一下鏡像源(豆瓣),方法如下:在
~
目錄下建立.pip
文件夾,cd .pip
后使用vi pip.conf
建立pip的配置文件,輸入如下內容:[global] timeout = 6000然后,可以下載啦,速度還不錯。index
-url = http://pypi.douban.com/simple/ [install ] use-mirrors = truemirrors
= http://pypi.douban.com/simple/ trusted-host = pypi.douban.com另外還有個辦法,那就是安裝anaconda,我就是用的這個方法,anaconda里面已經包括了很多的庫文件。
anaconda的下載安裝:
我們可以查看anaconda的安裝包里都包括什么:https://docs.continuum.io/anaconda/pkg-docs
下載地址:https://www.continuum.io/downloads#linux (這里有 anaconda的所有版本:https://repo.continuum.io/archive/)
安裝時,參考官方文檔:https://docs.continuum.io/anaconda/install
找到下載好的文件,我的為Anaconda2-4.1.1-linux-x86_64.sh文件,給它可執行權限,直接運行就好啦,在安裝過程中,最好選擇默認的安裝路徑,即~/anaconda2,最后安裝完成后會出現“Installation finished.” and “Thank you for installing Anaconda!”信息。
安裝以后,它會自動的在 ~/.bashrc文件中加入PTAH變量,打開確認一下,如果沒有,自己添加如下內容:
#下面的路徑對應自己安裝的anaconda的路徑,下面是我的路徑: export PATH="${HOME}/anaconda2/bin:$PATH"下面, 我們再加一下它的動態庫的路徑:
#下面是我的路徑,根據自己的具體路徑自己修改一下就好: export LD_LIBRARY_PATH="${HOME}/anaconda2/lib:$LD_LIBRARY_PATH"好啦,現在安裝完成啦。
最后,To import the
caffe
Python module after completing the installation, add the module directory to your$PYTHONPATH
byexport PYTHONPATH=caffe的路經/python:$PYTHONPATH
.我的做法就是在.bashrc中加入PYTHONPATH經路經。我加的是:PYTHONPATH=”~/home/yinheyi/caffe/python:$PYTHONPATH"
可能還需要安裝一些相關依賴,運行如下命令安裝:
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
安裝OpenCV:我是在官網上http://opencv.org/下載的,然后自己編譯(也可以通過apt-get install來安裝,具體方法自己google),可以參才考http://docs.opencv.org/2.4.13/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation.
1,首先下載opencv for linux,然后unpack.
2,然后解決安裝之前的依賴問題:
以上第一個是需要的編譯器,第二個是需要的依賴包,第三個是可選擇的包。
3,進入我們 opencv-2.4.13目錄下,創建一個 新的目錄,比如名字為release,然后進入release下,cmake就好啦(cmake需要一些參數的,不會用cmake的,自己百度或google學),具體命令如下(我的文件在用戶目錄下,即~/,第):
上面最后行的參數可以改的。
進入release目錄下,執行:
make sudo make install配置openCV參數設置
在/etc/ld.so.conf.d/opencv.conf文件中加入一行:/usr/local/lib ,(加入動態庫,不明白的可以自己百度一下ldconfig)
可能會沒有opencv.conf這個文件,那我們就自己創建一個:
sudo touch /etc/ld.so.conf.d/opencv.conf,然后寫入 /usr/local/lib就可以啦。
使用下面這條命令:
sudo ldconfig最后,在~/.bashrc文件里,加入這么一行。
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
安裝:cudnn,下載地址:https://developer.nvidia.com/cudnn(如果你的GPU的compute capability的能力小於3.0,就不需要cudnn來加速,否則后面安裝caffe時會出錯,下面已經提到)
cudnn是專門針對Deep Learning框架設計的一套GPU計算加速方案,目前支持的DL庫包括Caffe,ConvNet, Torch7等。安裝的基本原理是把解壓后的相關文件復制到CUDA工具箱的相關目錄下(官方文檔:http://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html)。操作如下:
$ tar -xzvf cudnn-9.0-linux-x64-v7.tgz$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include $ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 $ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*在復制的過程中,或許需要注意軟鏈接的問題。
現在OK啦。
安裝caffe:
先進入caffe包里,然后復制一份名為Makefile.config.example的文件為Makefile.config.根據自己的情況配置一下Makefile.config. 下面是我自己的配置文件。然后,執行:
make all make test make runtestOK,完成啦。
在make runtest時,因為用的是anaconda,如果出現了這樣的錯誤:
解決方法:try to remove readline in anaconda lib so as to use the default system one.
進入到 anaconda的 lib 路徑下(可以不用進入這個路徑的),運行如下代碼:
在make runtest時,出現了這樣的類似的錯誤:
[ RUN ] CuDNNConvolutionLayerTest
/1
.TestSimpleConvolutionGroupCuDNN F1014 08:55:30.083176 23568 cudnn_conv_layer.cpp:30] Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0
) CUDNN_STATUS_ARCH_MISMATCH *** Check failure stack trace: ***
@ 0x2b082d0a8daa(unknown) @ 0x2b082d0a8ce4 (unknown) @ 0x2b082d0a86e6 (unknown) @ 0x2b082d0ab687 (unknown) @ 0x739689 caffe::CuDNNConvolutionLayer<> ::LayerSetUp() @ 0x42c1f0 caffe::Layer<> ::SetUp() @ 0x49d776 caffe::CuDNNConvolutionLayerTest_TestSimpleConvolutionGroupCuDNN_Test<> ::TestBody() @ 0x68d613 testing::internal::HandleExceptionsInMethodIfSupported<> () @ 0x6840b7 testing::Test::Run() @ 0x68415e testing::TestInfo::Run() @ 0x684265 testing::TestCase::Run() @ 0x6875a8 testing::internal::UnitTestImpl::RunAllTests() @ 0x687837 testing::UnitTest::Run() @ 0x41e9d0 main @ 0x2b0831cf1ec5 (unknown) @ 0x4261c7 (unknown) @ (nil) (unknown) make: *** [runtest] Aborted (core dumped) caffe::NetTest_TestReshape_Test<> ::TestBody() @ 0x68d613 testing::internal::HandleExceptionsInMethodIfSupported<> () @ 0x6840b7 testing::Test::Run() @ 0x68415e testing::TestInfo::Run() @ 0x684265 testing::TestCase::Run() @ 0x6875a8 testing::internal::UnitTestImpl::RunAllTests() @ 0x687837 testing::UnitTest::Run() @ 0x41e9d0 main @ 0x2b2a9f778ec5 (unknown) @ 0x4261c7 (unknown) @ (nil) (unknown) make: *** [runtest] Aborted (core dumped)
原因在於,我的顯卡為GT620M,它的compute capability為2.1,而cuDNN requires a GPU with CUDA compute capability 3.x or higher ,所以呢,我要把Makefile.config中的 USE_CUDNN:=1注釋掉,重新編譯,執行如下:
make clean
make all -
j4 make test -
j4 make runtest -j4
具體看的自己的顯卡的compute capability,可以在官網看:https://developer.nvidia.com/cuda-gpus。
最后,如果用python 接口,請執行:
make pycaffe
打開python, import caffe成功。
如果出現:ImportError: No module named google.protobuf.internal
那就直接在終端中安裝protobuf就好,執行:
pip install protobuf
現在再試,OK,可以啦。
最最后,如果py-faster-rcnn就不能正常導入caffe,把~/.bashrc中的anaconda的PATH路徑去掉。(這是我看到的,我也不知道什么意思,寫進去吧, 萬一如果出現了可以作為參考)
終結!