本次安裝caffe是在新的筆記本上,感覺與之前在臺式機(jī)上的安裝還是有一定的區(qū)別岖沛。加之是在新的ubuntu16.04系統(tǒng)上安裝的鲜滩,可參考教程較少。而且其中添加了不少庫鸿市,修改的一些錯誤锯梁,難免會有遺漏。如果發(fā)現(xiàn)本文未提及錯誤灸芳,歡迎一起討論學(xué)習(xí)涝桅。另外,看到有的人說安裝了半個多月烙样,多次重裝冯遂,希望有問題還是先把問題查清楚,不要盲目重裝系統(tǒng);其次谒获,安裝的時候最好記錄自己安裝的過程和內(nèi)容蛤肌,避免遺漏和重復(fù)壁却,出問題了也可以與別人的教程相對比。
首先介紹安裝條件和軟件準(zhǔn)備:
- 聯(lián)想筆記本電腦Y700-15ISK裸准,雙顯卡nvidia的GTX960M展东,內(nèi)存16G
- Ubuntu16.04系統(tǒng),選擇該系統(tǒng)主要是能夠完美支持新筆記本的所有硬件
- cuda7.5安裝與配置炒俱,cudnn5.0安裝與配置
- BLAS安裝與配置
- OpenCV3.1.0安裝與配置
- Python安裝與配置盐肃,選擇的是anaconda2-4.0,即python2.7
- matlab2014a下載與安裝权悟,下載鏈接http://pan.baidu.com/s/1c2I6UTM ,密碼jdit
- caffe官網(wǎng)下載與安裝
參考博客與文章:
ubuntu16.04系統(tǒng)cuda7.5安裝教程:https://www.pugetsystems.com/labs/hpc/NVIDIA-CUDA-with-Ubuntu-16-04-beta-on-a-laptop-if-you-just-cannot-wait-775/
caffe官網(wǎng)教程:http://caffe.berkeleyvision.org/installation.html
ubuntu16.04系統(tǒng)cuda7.5配置與caffe安裝教程:http://blog.csdn.net/g0m3e/article/details/51420565
ubuntu14.04系統(tǒng)上caffe安裝:http://www.cnblogs.com/platero/p/3993877.html
一砸王、Ubuntu16.04系統(tǒng)安裝
這一部分接觸過ubuntu系統(tǒng)的應(yīng)該比較熟悉,網(wǎng)上也有很多可以參考的例子峦阁,就不再贅述谦铃。另外,我是在一個SSD固態(tài)硬盤上單獨(dú)安裝的系統(tǒng)榔昔,之前在臺式機(jī)上也是這么實現(xiàn)的驹闰,感覺這樣和windows雙系統(tǒng)故障會少些。
二撒会、顯卡驅(qū)動與cuda安裝
1嘹朗、顯卡驅(qū)動安裝
安裝完ubuntu16.04系統(tǒng)之后,直接更新系統(tǒng)并重啟诵肛。在多顯卡的筆記本中骡显,可能需要在BIOS系統(tǒng)里選擇”自由選擇顯卡“,這樣系統(tǒng)才能識別nvidia的顯卡曾掂,并進(jìn)行驅(qū)動更新。我這里是運(yùn)用ppa更新的最新驅(qū)動壁顶,使用起來能夠得到挺好的體驗珠洗,并能夠?qū)崿F(xiàn)雙顯卡的自由切換。
首先若专,通過快捷鍵Ctrl+Alt+T打開終端许蓖,然后加入官方ppa源:
$ sudo add-apt-repository ppa:graphics-drivers/ppa
需要輸入用戶密碼,并確認(rèn)鏈接源调衰。之后刷新軟件庫并安裝最新的驅(qū)動膊爪,在命令行輸入:
$ sudo apt-get update
$ sudo apt-get install nvidia-367 nvidia-settings nvidia-prime
由于聯(lián)想筆記本的UEFI保護(hù),會拒絕第三方的驅(qū)動嚎莉,因此需要關(guān)閉該保護(hù)米酬,關(guān)閉之后重啟能夠正常驅(qū)動nvidia,并能夠進(jìn)行雙顯卡的切換趋箩。
安裝完成之后赃额,可以通過系查看系統(tǒng)屬性加派,看是否是nvidia的顯卡。另外跳芳,也可以通過下面命令看是否安裝成功:
$ nvidia-settings
如果出現(xiàn)的nvidia設(shè)置界面不是這樣芍锦,驅(qū)動可能還是有問題。此處我出現(xiàn)的錯誤主要是是UEFI保護(hù)沒注意到飞盆,導(dǎo)致重復(fù)安裝了幾遍娄琉。
2、cuda7.5 安裝與配置
首先下載cuda7.5.run文件吓歇,如下圖所示:
可以看到當(dāng)前cuda7.5還不支持ubuntu16.04孽水。參考別人的教程,主要是gcc版本的問題照瘾,實際是可以編譯通過的匈棘。下載完15.04版本的run文件之后,一定要進(jìn)行進(jìn)行md5檢驗析命,校驗碼不對會出現(xiàn)安裝之后重啟不能進(jìn)入界面的問題主卫。
下載完成之后,cd進(jìn)入文件所在目錄鹃愤,在終端進(jìn)行如下操作
$ chmod 777 cuda_7.5.18_linux.run #獲取文件權(quán)限
$ sudo ./cuda_7.5.18_linux.run --override #執(zhí)行文件安裝
注意后面的override是必須的簇搅,這樣才能保證安裝的過程中,不會出現(xiàn)編譯器不支持的錯誤软吐。另外瘩将,在選擇條件的過程中,一定不要再次安裝nvidia驅(qū)動凹耙,雖然cuda.run文件本身是包含又nvidia驅(qū)動的姿现,但是本處直接安裝會出錯。下圖是安裝.run文件的配置:
安裝完成之后會出現(xiàn)
============ Summary ============
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-7.5
Samples: Installed in /usr/local/cuda-7.5
之后更換cudnn動態(tài)庫肖抱,可以獲得更快的計算效率备典。下載完cudnn5.0之后進(jìn)行解壓,cd進(jìn)入cudnn5.0解壓之后的include目錄意述,在命令行進(jìn)行如下操作:
$ sudo cp cudnn.h /usr/local/cuda/include/ #復(fù)制頭文件
再將lib64目錄下的動態(tài)文件進(jìn)行復(fù)制和鏈接:
$ sudo cp lib* /usr/local/cuda/lib64/ #復(fù)制動態(tài)鏈接庫
$ cd /usr/local/cuda/lib64/
$ sudo rm -rf libcudnn.so libcudnn.so.5 #刪除原有動態(tài)文件
$ sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5
$ sudo ln -s libcudnn.so.5 libcudnn.so
然后設(shè)置環(huán)境變量和動態(tài)鏈接庫提佣,在命令行輸入:
$ sudo gedit /etc/profile
在打開的文件末尾加入:
export PATH = /usr/local/cuda/bin:$PATH
保存之后,創(chuàng)建鏈接文件:
$ sudo vim /etc/ld.so.conf.d/cuda.conf
按下鍵盤i進(jìn)行編輯荤崇,輸入鏈接庫位置:
/usr/local/cuda/lib64
然后按esc拌屏,輸入:wq保存退出。并在終端輸入:
$ sudo ldconfig
使鏈接立即生效术荤。
3倚喂、cuda用例安裝與測試
在安裝cuda.run文件時,我們已經(jīng)選擇安裝了samples用例喜每,還需要編譯务唐。因為當(dāng)前的cuda還不支持gcc5.0以上的版本雳攘,在編譯之前,我們需要修改配置文件枫笛,否則無法編譯成功吨灭。在終端輸入:
$ cd /usr/local/cuda-7.5/include
$ cp host_config.h host_config.h.bak #備份編譯頭文件
$ sudo gedit host_config.h
然后在115行修改編譯其支持的版本:
# if GNUC > 4 || (GNUC == 4 && GNUC_MINOR > 9)
# error -- unsupported GNU version! gcc versions later than 4.9 are not supported!
# endif /* GNUC > 4 || (GNUC == 4 && GNUC_MINOR > 9) */
將if后面連續(xù)兩個4改為5即可,然后進(jìn)入用例文件進(jìn)行編譯:
$ cd /usr/local/cuda/samples
$ sudo make all -j4
$ cd /usr/local/cuda/samples/bin/x86_64/linux/release
$ sudo ./deviceQuery
成功之后會出現(xiàn)下列信息:
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 960M"
CUDA Driver Version / Runtime Version 8.0 / 7.5
CUDA Capability Major/Minor version number: 5.0
Total amount of global memory: 4044 MBytes (4240375808 bytes)
( 5) Multiprocessors, (128) CUDA Cores/MP: 640 CUDA Cores
GPU Max Clock rate: 1176 MHz (1.18 GHz)
Memory Clock rate: 2505 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 2097152 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
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: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
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): (2147483647, 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: Yes
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 = 8.0, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 960M
Result = PASS
通過上述用例測試刑巧,就表明顯卡驅(qū)動安裝和cuda安裝完全成功了喧兄。
二、BLAS安裝與配置
BLAS(基礎(chǔ)線性代數(shù)集合)是一個應(yīng)用程序接口的標(biāo)準(zhǔn)啊楚。caffe官網(wǎng)上推薦了三種實現(xiàn):ATLAS, MKL, or OpenBLAS吠冤。其中atlas可以直接通過命令行安裝,在此不再介紹恭理。我采用的是intel的mkl庫拯辙,首先,通過上面鏈接在intel官網(wǎng)申請學(xué)生版的**Parallel Studio XE Cluster Edition **颜价,下載完成之后cd到下載目錄進(jìn)行安裝:
$ tar zxvf parallel_studio_xe_2016_update3.tgz #解壓下載文件
$ chmod 777 parallel_studio_xe_2016_update3 -R #獲取文件權(quán)限
$ cd parallel_studio_xe_2016_update3/
$ sudo ./install_GUI.sh
安裝完成之后涯保,進(jìn)行相關(guān)文件的鏈接:
$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
在打開的文件中添加庫文件:
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
添加完成之后,編譯鏈接時lib文件立即生效:
$ sudo ldconfig
三周伦、OpenCV3.1.0安裝與配置
首先安裝必要的庫夕春,有的依賴庫我是已經(jīng)安裝過的,具體安裝的先后關(guān)系已經(jīng)忘了专挪。如果出現(xiàn)有些依賴關(guān)系不滿足的錯誤及志,可以再安裝庫:
$ sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev # 必要的基本庫
根據(jù)上面的鏈接下載OpenCV3.1.0版本,并進(jìn)行解壓寨腔,解壓之后進(jìn)入安裝文件目錄:
$ cd opencv-3.1.0
$ mkdir build #創(chuàng)建build文件夾
$ cd opencv-3.1.0/build
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ #生成的文件在bulid中速侈,而生成的CMakeList.txt文件在上一級文件中
在configure過程中過程中,可能會出現(xiàn)下面的錯誤:
-- ICV: Downloading ippicv_linux_20151201.tgz...
在直接下載該文件的過程中迫卢,會因為超時而失敗锌畸,可以下載http://download.csdn.net/detail/yehuohan/9511463, 并替換掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,然后再次cmake即可靖避。生成編譯文件之后,在opencv-3.1.0/build目錄下比默,終端輸入:
$ make -j4 #四核運(yùn)算
$ sudo make install
此時幻捏,可能會出現(xiàn)另外一個錯誤:
/usr/include/string.h: In function ‘void* __mempcpy_inline(void, const void, size_t)’: /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope return (char *) memcpy (__dest, __src, __n) + __n;
這也是因為ubuntu16.04的個個g++版本太高的造成的,只需要在opencv-3.1.0目錄下的CMakeList.txt 文件的開頭加入:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")
添加之后再次進(jìn)行編譯鏈接即可命咐。
4篡九、python安裝與配置
python的安裝有兩種方式:一種是系統(tǒng)自帶的python,只需再安裝相應(yīng)的庫即可醋奠;第二種是直接安裝anaconda榛臼,很多相應(yīng)的庫已經(jīng)包含了伊佃。第一種直接安裝庫文件比較簡單,不需要修改相應(yīng)的包含路徑和庫文件沛善。本人因為習(xí)慣了anaconda航揉,因此選擇的是anaconda linux64 2.7版本(3.5版本我也試過,裝caffe的時候可能會比較麻煩)金刁。下載完成之后帅涂,最好也要進(jìn)行md5sum的檢驗。完成之后尤蛮,cd進(jìn)入下載文件所在的目錄媳友,在命令行輸入:
$ bash Anaconda2-4.0.0-Linux-x86_64.sh
安裝完成之后,在.bashrc中添加Anaconda的庫文件产捞,一定不要在/etc/profile文件中添加醇锚。因為anaconda有幾個鏈接庫和系統(tǒng)鏈接庫文件類似,如果添加到/etc/profile文件中坯临,會出現(xiàn)電腦重啟之后不能進(jìn)入界面的情況
$ sudo gedit ~/.bashrc
然后加入庫文件:
export PATH="/home/lyndon/anaconda2/bin:$PATH"
export LD_LIBRARY_PATH="/home/lyndon/anaconda2/lib:$LD_LIBRARY_PATH"
重啟電腦之后焊唬,在命令行輸入:
$ ipython
就可以看到python的版本,并進(jìn)行運(yùn)用了尿扯。
5求晶、matlab的安裝與配置
在網(wǎng)盤上下載安裝包及Crack破解文件之后,解壓兩個壓縮文件衷笋,并用Crack文件中的install替換matlab2014安裝目錄下/java/jar/下的install文件芳杏。然后在命令行cd進(jìn)入matlab2014目錄,輸入:
$ sudo ./install
1辟宗、選擇“不聯(lián)網(wǎng)安裝”爵赵;
2、當(dāng)出現(xiàn)密鑰時泊脐,隨意輸入20個數(shù)字12345-67890-12345-67890即可空幻;
3、選擇自己需要安裝的工具容客;
4秕铛、需要激活時選擇不要聯(lián)網(wǎng)激活,運(yùn)用Crack目錄下的“l(fā)icense_405329_R2014a.lic”文件作為激活文件
安裝完成之后缩挑,還要將Crack/linux目錄下的libmwservices.so文件拷貝到/usr/local/MATLAB/R2014a/bin/glnxa64但两。在Crack/linux目錄下的命令行輸入:
$ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64
安裝完成之后,直接在命令行輸入matlab供置,就能過進(jìn)行使用了
6谨湘、caffe的安裝與配置
首先,安裝caffe必要的庫文件:protobuf, glog, gflags, hdf5
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
安裝之后,anaconda應(yīng)用時還是會出現(xiàn)錯誤紧阔。此時用anaconda的安裝工具conda 再安裝必要文件就行了坊罢,我安裝了以下文件,后續(xù)ipython中就能夠用caffe了擅耽。
$ conda install libprotobuf-dev libleveldb-dev
安裝完成之后活孩,進(jìn)入caffe下載的文件目錄,在命令行輸入:
$ sudo cp Makefile.config.example Makefile.config # 備份配置文件
$ gedit Makefile.config # 修改編譯文件
配置文件主要修改:
USE_CUDNN := 1 #取消注釋秫筏,應(yīng)用cudnn
OPENCV_VERSION := 3 #取消注釋诱鞠,應(yīng)用opencv3
BLAS := mkl #BLAS庫應(yīng)用英特爾的mkl
ANACONDA_HOME := /home/lyndon/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include
$(ANACONDA_HOME)/include/python2.7
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \ #選用anaconda作為python工具
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial #加入了 /usr/include/hdf5/serial,防止找不到hdf5.h錯誤
在make過程中可能 string.h ‘memcy’ was not declared in this scope的錯誤是这敬,這也是因為ubuntu中g(shù)cc編譯器版本太新航夺,解決方法是打開Makefile文件,搜索并修改:
改 NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
為 NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
還可能出現(xiàn):/usr/lib/x86_64-linux-gnu/libunwind.so.8: undefined reference to `lzma_index_size@XZ_5.0'崔涂,解決改問題只需要添加庫文件路徑就行阳掐,在home目錄下的命令行輸入:
$ sudo gedit ~/.bashrc
在文件中加入:
export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
在命令行輸入:
$ sudo ldconfig #編譯立即生效,然后進(jìn)入caffe所在目錄
$ cd /home/lyndon/lyndon/caffe/caffe-master
$ make all -j4 #編譯文件
$ make test -j4 #編譯測試文件
$ make runtest
$ make pycaffe
$ make matcaffe
如果編譯都沒報錯冷蚂,則表示基本成功缭保,能夠通過用例進(jìn)行測試了。在運(yùn)用anaconda和matlab時都需要修改相應(yīng)的內(nèi)容蝙茶。
anaconda需要將caffe頭文件進(jìn)行鏈接:
$ sudo gedit ~/.bashrc
export PYTHONPATH="/home/lyndon/lyndon/caffe/caffe-master/python:$PYTHONPATH"
之后編譯鏈接庫艺骂,打開ipython,輸入:
$ import caffe
即可調(diào)用caffe相應(yīng)模塊了隆夯。matlab模塊可以直接測試caffe/matlab/+caffe的用例钳恕。
7、總結(jié)
至此蹄衷,ubuntu16.0下的caffe等相關(guān)文件全部安裝完畢忧额,其中問題最多的應(yīng)該是雙顯卡問題中的nvidia驅(qū)動安裝的問題,很有可能會驅(qū)動不起來愧口,最好弄明白自己出錯的原因睦番,不然重裝系統(tǒng)也沒用。其次耍属,在安裝anaconda過程中托嚣,有些教程建議把庫文件加入到/etc/profile環(huán)境中,這可能會造成電腦重啟沒法進(jìn)入桌面的問題厚骗。其余的問題都應(yīng)該不會造成電腦不能重啟不能進(jìn)入桌面的情況注益,可以直接google和百度解決。