Centos 6.5 install caffe+Nvidia driver+cuda 6.5

Centos 6.5安裝caffe全紀錄

前不久,在一臺新機器上安裝了caffe,用於深度學習。其實本人小白一個,在安裝caffe的過程當中走了不少彎路。在遇到問題時,還好有google,能夠得帶、哦一些解答。可是悲劇的是,有一些問題還真是搜不到答案。好比:php

NVCC src/caffe/layers/relu_layer.cu
src/caffe/layers/prelu_layer.cu(58): error: a host function call cannot be configured
detected during instantiation of "void caffe::PReLULayer::Forward_gpu(const std::vectorcaffe::Blob<Dtype *, std::allocatorcaffe::Blob<Dtype *>> &, const std::vectorcaffe::Blob<Dtype *, std::allocatorcaffe::Blob<Dtype *>> &) [with Dtype=float]" (127): here

當時google一下這個報錯,居然有人和我遇到了一樣的錯誤。簡直開心得不行不行的,但這並無什麼卵用,由於沒有人解答。 固然後來我解決了這個問題,由於以前大部分caffe所依賴的庫都是我手動編譯的,頗有可能問題出在這點上。但具體爲何會有這樣的問題我也不太清楚,其中涉及到各個庫的版本兼容問題,不行,頭疼。望大神指點。html

說了這麼多廢話,也該開始步入正題了。安裝caffe能夠分紅兩步走。python

  • 安裝CPU only caffe
  • 再安裝GPU加速 caffe

這樣方便咱們在出現錯誤時可以快速定位問題,解決問題。linux


1. 安裝CPU only caffe

在寫這一小節前有必要,交代一下linux系統的基本信息。git

$ lsb_release -a
LSB Version:	:base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:	CentOS
Description:	CentOS release 6.5 (Final)
Release:	6.5
Codename:	Final

$ uname -r
2.6.32-431.el6.x86_64

安裝caffe的大蝦們,確定已經閱讀過RHEL / Fedora / CentOS Installation章節。github

1.1 基本庫安裝
  • 基本開發工具
sudo yum -y groupinstall "Development Tools"
  • 添加EPEL repositories

sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmbootstrap

而後就能夠愉快的安裝庫了。vim

sudo yum install protobuf-devel leveldb-devel snappy-devel hdf5-develcentos

  • 安裝boost-devel

rpm -qa boost 查看CentOS是否已有boost, 若是有會顯示版本,個人自帶版本是1.44.1, 版本過低,bash

$ wget -O boost_1_55_0.tar.bz2 http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost%2Ffiles%2Fboost%2F1.55.0%2F&ts=1385953406&use_mirror=softlayer-ams

$ tar jxvf  boost_1_55_0.tar.bz2
$ cd boost_1_55_0
$ ./bootstrap.sh
$ ./b2
$ sudo ./b2 install
  • 安裝opencv-devel
$ sudo yum -y install cmake pkgconfig gtk2-devel python-devel numpy tbb-devel libpng-devel
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.10/opencv-2.4.10.zip
$ unzip opencv-2.4.10.zip
$ cd opencv-2.4.10
$ mkdir build
$ cd build
$ cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_EXAMPLES=ON -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ON
$ make -j 2
$ sudo make install
1.2 os的依賴

上來就敲下面的命令 sudo yum install gflags-devel glog-devel lmdb-devel,發現glog-devel找不到。這個時候只能上Github上下一個glog.zip

$ unzip glog-master.zip
$ cd glog-master
$ ./configure
$ make -j4
$ sudo make install
1.3 BLAS

sudo yum install atlas-devel

1.4 編譯
$ cp Makefile.config.example Makefile.config
# Adjust Makefile.config (for example, if using Anaconda Python)
$ make all
$ make test
$ make runtest
  • For cuDNN acceleration, you should uncomment the USE_CUDNN := 1 switch in Makefile.config.
  • For CPU-only Caffe, uncomment CPU_ONLY := 1 in Makefile.config.

若無心外caffe.so應該就會誕生了。若make runtest過程當中,若出現關於protobuf相關的錯誤,應該卸載protobuf-devel,手動下載protobuf源碼,手動編譯。

$ wget -O protobuf.zip https://github.com/google/protobuf/archive/master.zip

$ unzip protobuf.zip
$ cd protobuf-master
$ ./autogen.sh
$ make && make check
$ sudo make install

2. 再安裝GPU加速 caffe

這一階段,咱們又分紅兩步走。:( 受不了,真當咱們是小白呀<-_->

2.1 安裝Nvidia顯卡驅動
  • 首先得知道本身的顯卡型號。
    樓主是電腦顯卡型號 GTX 970,怎麼感受不是土豪版。而後去Nvidia官網下載最新的驅動。趁着下載驅動的時候,咱們來作一些羞羞的事情。
$ lspci -nn | grep VGA
  • 禁止默認顯卡驅動
    打開**/etc/modprobe.d/blacklist.conf**(centos7 /usr/lib/modprobe.d/dist-blacklist.conf)文件,添加blacklist nouveau禁止centos默認安裝的顯卡驅動。阻止kernel加載nouveau模塊(非必要操做)修改**/boot/grub/grub.conf**,【#vim /boot/grub/grub.conf】,在kernel行的末尾加上 rdblacklist=nouveau
blacklist nouveau
  • 安裝 kernel-develDKMSkernel-headers
    若你使用yum安裝,就會發現安裝的內核源碼版本是2.6.32-504.el6.x86_64,什麼鬼?若你不知不覺的往下作,毫無疑問,在編譯內核時會給你一個大大的錯。若聰明的你繞過了找不到源碼的錯無,成功編譯出新內核,那只有恭喜你。由於,會在某個風和日麗的早上,你打開電腦發現本身的系統怎麼成了centos 6.6了。什麼?你能忍受。但是做爲人送誠信小郎君的我,不能忍呀。解決方法以下: 上這個網站,找到kernel-devel-2.6.32-431.29.2.el6.x86_64.rpmkernel-devel-2.6.32-431.29.2.el6.x86_64.rpm下載到本地。
$ sudo yum install kernel-devel-2.6.32-431.29.2.el6.x86_64.rpm kernel-devel-2.6.32-431.29.2.el6.x86_64.rpm

而後你就能夠在**/usr/src/kernels/下找到源碼了。還需一步,安裝dkms**,讓它幫助咱們編譯安裝驅動模塊。

$ yum install dkms
$ sudo cp -r /usr/src/kernels/2.6.32-431.29.2.el6.x86_64/ /usr/src/kernels/2.6.32-431.el6.x86_64/
  • 從新創建initramfs image文件
$ mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
$ dracut /boot/initramfs-$(uname -r).img $(uname -r)
  • 文本模式
    修改**/etc/inittab**,使系統開機進入init 3文本模式:#vim /etc/inittab 將最後一行「id:5:initdefault:」修改爲「id:3:initdefault:」(不包含引號)。等安裝驅動文件下載完成以後
$ reboot
  • 安裝
    啓動後,會進入文本界面。而後cd進入驅動程序所在目錄,開始安裝
$ chmod +x NVIDIA-Linux-XXXX.run
$ ./NVIDIA-Linux-XXXX.run

在一番贊成,肯定以後,驅動就安裝好了。修改**/etc/inittab**,改回圖形界面。

$ reboot

安裝成功,登錄後在系統- 首選項裏能夠看到NVIDIA X Server Settings菜單,能夠查看基本信息及進行一些設置。

2.1 安裝CUDA
$ chmod +x cuda_6.5_XXXX.run
$ ./cuda_6.5_XXXX.run

跳過第一項的驅動安裝,後面要麼yes要麼默認就能夠了。注意最後將

  • /usr/local/cuda/bin加入PATH

  • /usr/local/cuda/lib64加入**/etc/ld.so.conf**

  • 安裝
    而後就是回安裝caffe的流程上了。註釋 CPU_ONLY := 1,再次編譯。當作到這一步時,你的小臉上是否出現了笑容。

相關文章
相關標籤/搜索