為了使用caffe,特地裝了linux系統,版本:Ubuntu14.04 X64 可參照 http://www.cnblogs.com/platero/p/3993877.html
這個博客寫的更好http://www.haodaima.net/art/2823705
第一步:第一部分 Linux安裝
Linux的安裝,如果不是Linux粉,只是必須,被迫要用它來作作科研什么的,建議安裝成雙系統,網上方法很多,這里我就不詳細寫了,安裝還算是傻瓜式的,和windows的過程類似,至於語言,如果覺得難度還不夠大的話,完全可以裝E文版的,我是裝的簡體中文版,我總共用分出的100G的空間來安裝Ubuntu 14.04,這個版本是最新的版本,有個好處是,可以直接訪問Windows8.1的NTFS分區,不用做額外的操作,而且支持中文,例如:$ cd /media/yourname/分區名字/文件夾名,當然GUI就更方便了
我的分區設置如下:
根分區: \ 50G,
Swap交換分區:16G ,這里,我設置和我的內存一樣,據說小於16G的內存,就設置成內存的1.5-2倍
Home分區:剩余的34G
裝好之后,重啟電腦,有的人會直接進Linux,有的會直接Windows,谷歌或者百度解決方法
PS: 其實到現在感覺空間可能小了, 想想Imagenet 137G的訓練文件,覺得應該把Home設置成300-500G以上,會更合適吧。下次安裝的時候,再改了,現在暫時不想動了。
PS:今天還是重新裝了,把home分區擴大到500G。所以建議真的要大數據實驗的小伙伴,也趁早考慮。
PS: Ubuntu下訪問網頁總是很慢,讓我深感它和Windows的差距,可是為什么還是有那么多人向往它呢?下面的辦法可以解決部分訪問的問題,特別是國外的網站,但是遇到一些調用了被牆的網站的東西,比如google的字體,還是沒辦法,仍然會在哪里轉圈圈。這里似乎是操作系統的機制引起,Windows的瀏覽器會忽略那些錯誤,而Ubuntu下的瀏覽器會不停嘗試。廢話少說,部分問題的解決辦法:
$ sudo apt-get install dnsmasq
$ sudo gedit /etc/dnsmasq.conf
找到 # resolv-file=
修改為:resolv-file=/etc/resolv.dnsmasq.conf
$ sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
$ sudo gedit /etc/resolv.conf
刪除所有域名服務器,保留:nameserver 127.0.0.1
第二部分:nVidia驅動和CUDA Toolkit的安裝和調試
PS:這里其實可以參考nVidia 官方提供的CUDA安裝手冊。https://developer.nvidia.com/rdp/cuda-65-rc-toolkit-download#linux。一般要輸入你的用戶名和密碼,就是下載6.5的那個賬號。
一、Verify You Have a CUDA-Capable GPU
執行下面的操作,然后驗證硬件支持GPU CUDA,只要型號存在於https://developer.nvidia.com/cuda-gpus,就沒問題了
$ lspci | grep -i nvidia
二、Verify You Have a Supported Version of Linux
$ uname -m && cat /etc/*release
重點是“x86_64”這一項,保證是x86架構,64bit系統
三、Verify the System Has gcc Installed
$ gcc --version
沒有的話就先安裝吧,這個是必須的用來編譯CUDA Toolkit,不過Ubuntu 14.04是默認有的
四、Download the NVIDIA CUDA Toolkit
下載地址:https://developer.nvidia.com/cuda-toolkit
驗證地址:https://developer.nvidia.com/rdp/cuda-rc-checksums
$ md5sum
例如:md5sum cuda_6.5.11_rc_linux_64.run ,這個文件的正確 md5 = a47b0be83dea0323fab24ca642346351
這個感覺蠻重要,我第一次安裝的時候md5就沒通過,強制安裝,結果就有問題,后面重新下載了再安裝了一次
五、Handle Conflicting Installation Methods
根據官網介紹,之前安裝的版本都會有沖突的嫌疑,所以,之前安裝的Toolkit和Drievers就得卸載,屏蔽,等等
六、Graphical Interface Shutdown
退出GUI,也就是X-Win界面,操作方法是:同時按:CTRL+ALT+F1(F2-F6),切換到TTY1-6命令行模式。
關閉桌面服務:
$ sudo stop lightdm
七、Interaction with Nouveau
Nouveau是一個開源的顯卡驅動,Ubuntu 14.04 默認安裝了,但是它會影響nVidia驅動的安裝,所以只有請他回老家了,sorry!
-
將nouveau添加到黑名單,防止它啟動
$ cd /etc/modprobe.d
$ sudo vi nvidia-graphics-drivers.conf
寫入:blacklist nouveau
保存並退出: wq!
檢查:$ cat nvidia-graphics-drivers.conf -
對於:/etc/default/grub,添加到末尾。
$ sudo vi /etc/default/grub
末尾寫入:rdblacklist=nouveau nouveau.modeset=0
保存並退出: wq!
檢查:$ cat /etc/default/grub -
官網提供的操作:
$ sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
然后重新生成initrd文件
$ sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)
$ sudo update-initramfs -u
上面那條是nVidia官方提供的命令,不知道為什么在我這里會提示dracut是不存在的命令,也許是版本問題,或者少了什么包,不過無所謂,第二條命令也可以搞定,應該是一樣的功能。(如果我理解錯誤,歡迎小朋友們指教,我會改正)
PS:其實,這一連串的工作,有點沒搞懂,因為有的命令和文件不存在。原理理解了,但是步驟還是有點模糊,不過,我是照上面的操作完成了,后面的也沒出問題,應該應付過去了吧。
八、Installation
鑒於安裝過程中遇到的一些問題和啟示,建議先安裝官方最新版的顯卡驅動,然后再安裝CUDA,這里可能是CUDA內置的驅動不太完整,或者適應性差了一點。GTX顯卡驅動的下載地址如下(Tesla版的驅動,請大家自己去nVidia的官網下載):
下載地址:http://www.geforce.cn/drivers
$ sudo sh ./NVIDIA-Linux-x86_64-340.24.run
切換到cuda_6.5.11_rc_linux_64.run 所在的目錄,然后執行安裝命令:
$ sudo sh cuda_6.5.11_rc_linux_64.run
再次提醒,安裝前一定要執行 md5sum ,我第一次安裝就是執行了,發現不一樣,然后沒有理它直接安裝,導致安裝的Sumary里顯示Driver成功,Toolkit和Samples失敗,第二次在裝就好了。
至於如果發現md5檢測不一致,怎么辦?別逗了,去nVidia重新下載就行了,地球人都知道,別無限循環就好_!
這里會一路問你各種問題,基本上就是Accept-yes-Enter-yes-Enter-yes-Enter, 其實就是讓你接受協議,然后安裝的默認位置確認等等,recruit就別自定義安裝位置了,默認才是天堂。
安裝完會提示丟失了四個庫:libGLU.so, libx11.so, libxmu.so, libxi.so 這個木有關系,下一步就是解決這個問題的。
九、Extra Libraries
安裝一些必要的庫文件,譬如:OpenGL (e.g., Mesa), GLU, GLUT, and X11 (including Xi, Xmu, and GLX).
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
這個可以切換到GUI界面在操作,要不然那些提示信息,都是亂碼,什么都看不懂,不過如果你的系統是E文的,這句話忽略。這里,保證網絡不要中斷就行。
十、驅動裝完了,可以回到GUI界面了,也可以繼續留這里玩文本。。。
$ sudo start lightdm
十一、POST-INSTALLATION ACTIONS
這一步就是驗證一下安裝是否正確,編譯和完成以下CUDA自帶的程序,建議做一下~
-
Environment Setup
$ export PATH=/usr/local/cuda-6.5/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH -
(Optional) Install Writable Samples
$ cuda-install-samples-6.5.sh
安裝到Home下,搞定了之后可以在GUI下調整一下,主要是前面的要求,會有一個Sample的文件夾 NVIDIA_CUDA-6.5_Samples在Home的根目錄下就ok了。因為后面編譯測試各方面什么的方便。其實如果之前安裝CUDA驅動和Toolkit一切正常,這一步基本可以省略,應該會自動建立,但檢查一下無妨。 -
Verify the Installation
a. 驗證驅動的版本,其實主要是保證驅動程序已經安裝正常了
$ cat /proc/driver/nvidia/version
b. Compiling the Examples
$ nvcc -V
不出意外的話應該會提示,nvcc沒有安裝,其實就是,nvidia-cuda-toolkit的編譯器沒有安裝完整,總之,根據提示繼續就好了
$ sudo apt-get install nvidia-cuda-toolkit
我這里還差接近400MB的文件要下載,它是全自動的,所以只要保證網絡暢通,一杯咖啡在手,然后就可以XXX了。可悲的是,我這里天色已晚,隔壁的Wifi也斷了,筆記本的360隨身Wifi連上一會也斷了,只有收東西回宿舍,明天再繼續了。看看表,靠,00:03,今天打卡時間又錯過了。
次日,這里安裝完,就可以編譯了,切換目錄到~/NVIDIA_CUDA-6.5_Samples,記性沒問題的話,應該還記得它是安裝在Home文件夾的,穿越過去就好了,然后執行:
$ cd /home/username/NVIDIA_CUDA-6.5_Samples
$ make
c. Running the Binaries
運行編譯好的文件,看看設備的基本信息和帶寬信息:
$ cd /bin/x86_64/linux/release
$ ./deviceQuery
$ ./bandwidthTest
PS:如果測試的時候出現說運行版驅動和實際驅動不符(英文原文不記得了,沒記下來),原因可能是因為后面安裝的nvidia-cuda-toolkit更新了配置文件,所以和原始的Cuda-Samples的配置或者是驅動程序有變化,所以檢測無法編譯通過。考慮下面的解決方法:
- 卸載現有驅動
$ sudo nvidia-installer --uninstall - 下載合適版本的驅動,並安裝:
下載地址:http://www.geforce.cn/drivers
$ sudo sh ./NVIDIA-Linux-x86_64-340.24.run - 重裝CUDA Toolkit
$ sudo sh cuda_6.5.11_rc_linux_64.run
好了,到這里所有nVidia CUDA的安裝就結束了,下面看看Caffe如何安裝
第二步:
原博主使用的是MKL,但我圖省事,沒有安裝MKL,而是用了atlas,一句命令搞定
sudo apt-get install libatlas-base-dev
第三步:
opencv部分,用了https://github.com/jayrambhia/Install-OpenCV的ubuntu下的opencv-2.4.9的腳本
這里直接執行腳本的話,除了錯誤比較難以定位,所以我是把里面的命令一句一句手動執行的
其中遇到了下面幾個問題:
sudo apt-get -y install libopencv-dev提示需要依賴項,
改用sudo aptitude install libopencv-dev
因為沒有aptitude,先安裝 sudo apt-get install aptitude
sudo apt-get -y install x264 v4l-utils ffmpeg
這一步因為找不到ffmpeg而中斷
一般找不到包,就到下面的網址搜索,看哪個鏡像上有這個源,添加到source里面就可以了
http://packages.ubuntu.com/
搜索ffmpeg,Distribution選any,因為可能是沒有trusty的資源
然后添加鏡像,
sudo gedit /etc/apt/sources.list
在sources.list里面加一行deb http://cn.archive.ubuntu.com/ubuntu vivid main universe
然后更新源
sudo apt-get update
然后sudo apt-get -y install x264 v4l-utils ffmpeg就可以了
搞定這三個比較麻煩的依賴項后,繼續安裝opencv
編譯opencv的時候,腳本原有的代碼是:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
這里我去掉了-D WITH_QT=ON,因為我沒有裝QT,但是需要加上-D BUILD_TIFF=ON,否則編譯caffe的時候會有這樣的錯誤
/usr/lib/libopencv_highgui.so.2.4: undefined reference to TIFFRGBAImageOK@LIBTIFF_4.0' 1>
編譯過程如下:
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D BUILD_TIFF=ON -D WITH_OPENGL=ON..
make -j4
sudo make install
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
第四步:
安裝其他依賴項,沒什么問題
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
第五步:
編譯caffe:
開始出現了這個錯誤:
./include/caffe/util/io.hpp:8:18: fatal error: hdf5.h: 沒有那個文件或目錄
這里是因為沒有按照hdf5庫,因為這個庫在anaconda里面已經有了,需要配置系統路徑。
在~/.bashrc文件里面添加
LD_LIBRARY_PATH=youranacondapath/lib:LD_LIBRARY_PATH
export LD_LIBRARY_PATH
記住啊,youranacondapath替換成你自己的anaconda安裝的路徑,否則就太二了,我自己就犯了一次二.....
然后出現了這個錯誤
/usr/lib/libopencv_highgui.so.2.4: undefined reference to TIFFRGBAImageOK@LIBTIFF_4.0' 1>
/usr/lib/libopencv_highgui.so.2.4: undefined reference toTIFFReadRGBAStrip@LIBTIFF_4.0'
解決方式前面說了,就是編譯opencv的時候要加上 -D BUILD_TIFF=ON
然后又出現了這個錯誤,這個錯誤曾讓我苦惱了兩天,還因此把系統搞崩潰一次....不得不重裝
最后還是多虧了最開頭提到的博客以及熱心網友 _無聲的雨 的幫助,非常感謝,當代活雷鋒啊!
//usr/lib/x86_64-linux-gnu/libx264.so.142:對‘__exp_finite@GLIBC_2.15’未定義的引用
//usr/lib/x86_64-linux-gnu/libx264.so.142:對‘__log10_finite@GLIBC_2.15’未定義的引用
//usr/lib/x86_64-linux-gnu/libxvidcore.so.4:對‘__logf_finite@GLIBC_2.15’未定義的引用
//usr/lib/x86_64-linux-gnu/libvorbis.so.0:對‘__acosf_finite@GLIBC_2.15’未定義的引用
解決方法:如果你裝了anaconda包的話,刪除anaconda/lib/下面的 libm
sudo rm -rf libm*
最后編譯成功,哈哈。
make all
make test
最后一步
make runtest
有錯誤
.build_release/test/test_all.testbin 0 --gtest_shuffle --gtest_filter="-GPU"
.build_release/test/test_all.testbin: error while loading shared libraries: libhdf5_hl.so.8: cannot open shared object file: No such file or directory
make: *** [runtest] 錯誤 127
這里按照開頭提到的博客中紅字的兩段就能搞定
其實就是在LD_LIBRARY_PATH里面添加anaconda的路徑,前面已經做過了。但因為我編譯caffe時候用的是自己的用戶,后來make runtest的時候用了root用戶,兩個用戶從~/.bashrc不是一個,所以我索性兩個都添上了。
好了,折騰了一周,裝了兩次系統,終於把caffe安裝好了,接下來就是學習怎么使用了。
最后還是要謝謝這位博主:普兒,以及這位熱心網友:_無聲的雨
是你們讓我感受的社會的溫暖,一次又一次把我崩潰的心靈拯救回來,讓我體會到了人間有真情。
要是哪位讀者去這個博客看看,就能看到我在留言里問的各種小白問題了,哈哈。
