操作系統:Ubuntu14.04 64bits
處理器:Intel core i7-4790k 8核4GHz
GPU:GTX TITAN X
cuda:cuda7.0
NVIDIA驅動:NVIDIA346.72
blas:mkl
安裝過程:
(一)Ubuntu系統安裝
最好安裝Ubuntu14.04,對caffe的支持最好,另外,安裝完Ubuntu之后不要更新系統。
(二)caffe依賴項
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 sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
注意,這里安裝的都是一些必要的庫文件,必須安裝。
(三)NVIDIA驅動安裝
從NVIDIA官網下載英文版驅動,有.run與.deb兩種格式,前者可自選組件進行安裝,后者則等效於一鍵安裝。注意要選擇與自己gpu想匹配的驅動,沒試過中文版驅動,不知道是否可行,不過在官網上下載中文驅動的時候會出現亂碼。下載完驅動之后(我下的.run文件)按照官網的安裝說明進行安裝,大體步驟如下:
1、利用sudo gedit /etc/modprobe.d/blacklist-nouveau.conf新建blacklist-nouveau.conf文件,輸入命令
blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off
保存並退出。這一步是為了禁掉Ubuntu自帶開源驅動nouveau。之后sudo reboot重啟系統。在終端執行命令
lsmod | grep nouveau
可以查看nouveau模塊是否被加載。如果什么都沒輸出,則執行下一步。
2、重啟后屏幕分辨率變低,不用管。進入tty1文件模式,輸入用戶名密碼后登陸,輸入命令
sudo /etc/init.d/lightdm stop
關閉xserver。注意,安裝NVIDIA驅動需要以root用戶登陸,所以利用命令sudo su進入root。輸入命令
bash NVIDIA-LINUX-X86_64-346.72.run --kernel-source-path=/usr/src/linux-headers-3.*.*
進行安裝。這里的linux-headers-3.*.*是Linux系統源文件名。安裝過程中有一些提示問題讓你回答,注意,當提示
The distribution-provided pre-install script failed!Are you sure you want to continue?
的時候不用管,繼續安裝就行了,這個問題我至今沒明白是什么原因導致的,但這不影響后續安裝及使用。當提示
Would you like to register the kernel module sources with DKMS?This will allow DKMS to auomatically build a new module,if you install a different kernel later
的時候,回答No。
3、最好再執行命令
sudo apt-get install linux-image-extra-virtual
否則后續可能會出現如下錯誤提示:
modprobe: ERROR: could not insert'nvidia':Unknown symbolinmodule,or unknown parameter(see dmesg)
4、執行sudo /etc/init.d/lightdm start並重啟電腦。重啟后可能會產生分辨率問題,只需要更改/etc/X11/xorg.conf文件如下:
Section 'Monitor' ** ** HorizSync 31.5 - 61.0 VertRefresh 50.0 - 75.0 ** ** Section 'Screen' Modes "800x600@72" "800x600@75" "800x600@56" "800x600@60" "640x480@75" "832x624@75" "640x480@72" "1024x768@75" "640x480@60" "1024x768@70" "1024x768@60" "1280x960@60" EndSubSection
(四)cuda7.0安裝
注意,caffe推薦安裝最新版NVIDIA驅動,所以cuda內置的驅動我們就不需要安裝了,cuda的安裝完全按照官網教程進行,過程比較簡單,這里不再贅述,如有問題可以留言我們相互討論。但注意一點是安裝完成之后需要修改環境變量,只需在/etc/ld.so.conf.d/下新建一個cuda.conf文件,將cuda庫路徑(默認是/usr/local/cuda-7.0/lib64)加入之后保存即可。
(五)MKL的安裝
caffe所需要的blas我們安裝mkl,雖然mkl的下載稍微有點麻煩,但安裝起來還是很快的。下載的時候只需要在官網申請學生免費版,用你的郵箱注冊之后會自動收到下載指南以及一個lic注冊文件,按照指示下載即可,安裝也較為簡單,這里只提幾點注意事項:
1、一個mkl安裝文件可以同時被幾個用戶使用,所以不必重復下載。
2、安裝的時候必須將安裝包放置在Ubuntu能夠識別的文件系統中,推薦~/,否則無法執行.sh腳本文件。
3、安裝之后需要把mkl庫路徑(/opt/intel/lib以及/opt/intel/mkl/lib/intel64)加入環境變量。
(六)如果要使用Python接口,那么還需要另外安裝一些Python庫文件(Ubuntu自帶Python不能滿足我們的需要)
sudo apt-get install python-numpy python-scipy python-dev
(七)如果需要使用matlab接口,那么推薦新版本的matlab比如R2013a/b,R2014a/b等,我安裝的R2014b,沒任何問題。
(八)編譯配置caffe
下載caffe文件並解壓至某一目錄caffe-root,注意修改makefile文件當中的一些路徑。執行一下命令
cd caffe-root/caffe-master
cp Makefile.config.example Makefile.config
make all
make test
make runtest
在make編譯過程中會遇到一些問題,可能是由caffe本身文件兼容性問題造成的,比如:
1、提示make:protoc:命令未找到,這是因為protoc未安裝,只需安裝就行。
sudo apt-get install protobuf-c-compiler protobuf-compiler
2、提示“src/caffe/util/math_functions.cu(140):errot:calling a host function("std::signbit")from a globalfunction("caffe::sgnbit kernel")is not allowed”,
修改./include/caffe/util/math_functions.hpp 224行
刪除(注釋):using std::signbit
修改:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = signbit(x[i]));
這是Yangqing Jia給出的解決方案,目前只有這一種方法。
我在編譯的時候只對於某些版本的caffe會遇到情況2,對於第一個問題只要你按照前面的步驟做了應該不會出現的。雖然裝這個花了好幾天,不過總算是自己的努力換來了回報,希望caffe以后能優化的更完美,不要再在編譯的時候遇上這么多麻煩,對於初學者是很不利的。希望大家共同學習,共同進步吧!