標籤:
Centos 6.5安裝caffe全紀錄
前不久,在一台新機器上安裝了caffe,用於深度學習。其實本人小白一個,在安裝caffe的過程中走了很多彎路。在遇到問題時,還好有**google**,可以得帶、哦一些解答。但是悲劇的是,有一些問題還真是搜不到答案。比如:
NVCC src/caffe/layers/relu_layer.cusrc/caffe/layers/prelu_layer.cu(58): error: a host function call cannot be configureddetected 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所依賴的庫都是我手動編譯的,很有可能問題出在這點上。但具體為什麼會有這樣的問題我也不太清楚,其中涉及到各個庫的版本相容問題,不行,頭疼。望大神指點。
說了這麼多廢話,也該開始步入正題了。安裝caffe可以分成兩步走。
- 安裝CPU only caffe
- 再安裝GPU加速 caffe
這樣方便我們在出現錯誤時能夠快速定位問題,解決問題。
—
1. 安裝CPU only caffe
在寫這一小節前有必要,交代一下linux系統的基本資料。
$ lsb_release -aLSB 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-noarchDistributor ID:CentOSDescription:CentOS release 6.5 (Final)Release:6.5Codename:Final$ uname -r2.6.32-431.el6.x86_64
安裝caffe的大蝦們,肯定已經閱讀過 RHEL / Fedora / CentOS Installation章節。
1.1 基本庫安裝
sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
然後就可以愉快的安裝庫了。
sudo yum install protobuf-devel leveldb-devel snappy-devel hdf5-devel
用rpm -qa boost
查看CentOS是否已有boost, 如果有會顯示版本,我的內建版本是1.44.1, 版本太低,
$ 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**檔案,添加**blacklist nouveau**禁止centos預設安裝的顯卡驅動。阻止kernel載入nouveau模組(非必要操作)修改**/boot/grub/grub.conf**,【#vim /boot/grub/grub.conf】,在kernel行的末尾加上 rdblacklist=nouveau
blacklist nouveau
- 安裝 kernel-devel,**DKMS**與 kernel-headers
若你使用*yum*安裝,就會發現安裝的核心源碼版本是*2.6.32-504.el6.x86_64*,什麼鬼?若你不知不覺的往下做,毫無疑問,在編譯核心時會給你一個大大的錯。若聰明的你繞過了找不到源碼的錯無,成功編譯出新核心,那隻有恭喜你。因為,會在某個風和日麗的早上,你開啟電腦發現自己的系統怎麼成了**centos 6.6**了。什嗎?你能忍受。可是作為人送誠信小郎君的我,不能忍呀。解決方案如下:
上這個網站,找到*kernel-devel-2.6.32-431.29.2.el6.x86_64.rpm*與*kernel-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要麼預設就可以了。注意最後將
Centos 6.5 install caffe+Nvidia driver+cuda 6.5