本次安裝caffe是在新的筆記本上,感覺與之前在臺式機上的安裝還是有1定的區分。加上是在新的ubuntu16.04系統上安裝的,可參考教程較少。而且其中添加了很多庫,修改的1些毛病,難免會有遺漏。如果發現本文未提及毛病,歡迎1起討論學習。另外,看到有的人說安裝了半個多月,屢次重裝,希望有問題還是先把問題查清楚,不要盲目重裝系統;其次,安裝的時候最好記錄自己安裝的進程和內容,避免遺漏和重復,出問題了也能夠與他人的教程相對照。
首先介紹安裝條件和軟件準備:
- 聯想筆記本電腦Y700⑴5ISK,雙顯卡nvidia的GTX960M,內存16G
- Ubuntu16.04系統,選擇該系統主要是能夠完善支持新筆記本的所有硬件
- cuda7.5安裝與配置,cudnn5.0安裝與配置
- BLAS安裝與配置
- OpenCV3.1.0安裝與配置
- Python安裝與配置,選擇的是anaconda2⑷.0,即python2.7
- matlab2014a下載與安裝,下載鏈接http://pan.baidu.com/s/1c2I6UTM ,密碼jdit
- caffe官網下載與安裝
參考博客與文章:
ubuntu16.04系統cuda7.5安裝教程:https://www.pugetsystems.com/labs/hpc/NVIDIA-CUDA-with-Ubuntu⑴6-04-beta-on-a-laptop-if-you-just-cannot-wait⑺75/
caffe官網教程:http://caffe.berkeleyvision.org/installation.html
ubuntu16.04系統cuda7.5配置與caffe安裝教程:http://blog.csdn.net/g0m3e/article/details/51420565
ubuntu14.04系統上caffe安裝:http://www.cnblogs.com/platero/p/3993877.html
這1部份接觸過ubuntu系統的應當比較熟習,網上也有很多可以參考的例子,就不再贅述。另外,我是在1個SSD固態硬盤上單獨安裝的系統,之前在臺式機上也是這么實現的,感覺這樣和windows雙系統故障會少些。
安裝完ubuntu16.04系統以后,直接更新系統并重啟。在多顯卡的筆記本中,可能需要在BIOS系統里選擇”自由選擇顯卡“,這樣系統才能辨認nvidia的顯卡,并進行驅動更新。我這里是應用ppa更新的最新驅動,使用起來能夠得到挺好的體驗,并能夠實現雙顯卡的自由切換。
首先,通過快捷鍵Ctrl+Alt+T打開終端,然后加入官方ppa源:
$ sudo add-apt-repository ppa:graphics-drivers/ppa
需要輸入用戶密碼,并確認鏈接源。以后刷新軟件庫并安裝最新的驅動,在命令行輸入:
$ sudo apt-get update
$ sudo apt-get install nvidia⑶67 nvidia-settings nvidia-prime
由于聯想筆記本的UEFI保護,會謝絕第3方的驅動,因此需要關閉該保護,關閉以后重啟能夠正常驅動nvidia,并能夠進行雙顯卡的切換。
安裝完成以后,可以通過系查看系統屬性,看是不是是nvidia的顯卡。另外,也能夠通過下面命令看是不是安裝成功:
$ nvidia-settings
如果出現的nvidia設置界面不是這樣,驅動可能還是有問題。此處我出現的毛病主要是是UEFI保護沒注意到,致使重復安裝了幾遍。
首先下載cuda7.5.run文件,以下圖所示:
可以看到當前cuda7.5還不支持ubuntu16.04。參考他人的教程,主要是gcc版本的問題,實際是可以編譯通過的。下載完15.04版本的run文件以后,1定要進行進行md5檢驗,校驗碼不對會出現安裝以后重啟不能進入界面的問題。
下載完成以后,cd進入文件所在目錄,在終端進行以下操作
$ chmod 777 cuda_7.5.18_linux.run #獲得文件權限
$ sudo ./cuda_7.5.18_linux.run --override #履行文件安裝
注意后面的override是必須的,這樣才能保證安裝的進程中,不會出現編譯器不支持的毛病。另外,在選擇條件的進程中,1定不要再次安裝nvidia驅動,雖然cuda.run文件本身是包括又nvidia驅動的,但是本處直接安裝會出錯。下圖是安裝.run文件的配置:
安裝完成以后會出現
============ Summary ============
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda⑺.5
Samples: Installed in /usr/local/cuda⑺.5
以后更換cudnn動態庫,可以取得更快的計算效力。下載完cudnn5.0以后進行解壓,cd進入cudnn5.0解壓以后的include目錄,在命令行進行以下操作:
$ sudo cp cudnn.h /usr/local/cuda/include/ #復制頭文件
再將lib64目錄下的動態文件進行復制和鏈接:
$ sudo cp lib* /usr/local/cuda/lib64/ #復制動態鏈接庫
$ cd /usr/local/cuda/lib64/
$ sudo rm -rf libcudnn.so libcudnn.so.5 #刪除原有動態文件
$ sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5
$ sudo ln -s libcudnn.so.5 libcudnn.so
然后設置環境變量和動態鏈接庫,在命令行輸入:
$ sudo gedit /etc/profile
在打開的文件末尾加入:
export PATH = /usr/local/cuda/bin:$PATH
保存以后,創建鏈接文件:
$ sudo vim /etc/ld.so.conf.d/cuda.conf
按下鍵盤i進行編輯,輸入鏈接庫位置:
/usr/local/cuda/lib64
然后按esc,輸入:wq保存退出。并在終端輸入:
$ sudo ldconfig
使鏈接立即生效。
在安裝cuda.run文件時,我們已選擇安裝了samples用例,還需要編譯。由于當前的cuda還不支持gcc5.0以上的版本,在編譯之前,我們需要修改配置文件,否則沒法編譯成功。在終端輸入:
$ cd /usr/local/cuda⑺.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后面連續兩個4改成5便可,然落后入用例文件進行編譯:
$ cd /usr/local/cuda/samples
$ sudo make all -j4
$ cd /usr/local/cuda/samples/bin/x86_64/linux/release
$ sudo ./deviceQuery
成功以后會出現以下信息:
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
通過上述用例測試,就表明顯卡驅動安裝和cuda安裝完全成功了。
BLAS(基礎線性代數集合)是1個利用程序接口的標準。caffe官網上推薦了3種實現:ATLAS, MKL, or OpenBLAS。其中atlas可以直接通過命令行安裝,在此不再介紹。我采取的是intel的mkl庫,首先,通過上面鏈接在intel官網申請學生版的Parallel Studio XE Cluster Edition ,下載完成以后cd到下載目錄進行安裝:
$ tar zxvf parallel_studio_xe_2016_update3.tgz #解壓下載文件
$ chmod 777 parallel_studio_xe_2016_update3 -R #獲得文件權限
$ cd parallel_studio_xe_2016_update3/
$ sudo ./install_GUI.sh
安裝完成以后,進行相干文件的鏈接:
$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
在打開的文件中添加庫文件:
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
添加完成以后,編譯鏈接時lib文件立即生效:
$ sudo ldconfig
首先安裝必要的庫,有的依賴庫我是已安裝過的,具體安裝的前后關系已忘了。如果出現有些依賴關系不滿足的毛病,可以再安裝庫:
$ sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev # 必要的基本庫
根據上面的鏈接下載OpenCV3.1.0版本,并進行解壓,解壓以后進入安裝文件目錄:
$ cd opencv⑶.1.0
$ mkdir build #創建build文件夾
$ cd opencv⑶.1.0/build
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ #生成的文件在bulid中,而生成的CMakeList.txt文件在上1級文件中
在configure進程中進程中,可能會出現下面的毛病:
– ICV: Downloading ippicv_linux_20151201.tgz…
在直接下載該文件的進程中,會由于超時而失敗,可以下載http://download.csdn.net/detail/yehuohan/9511463, 并替換掉 opencv⑶.1.0/3rdparty/ippicv/downloads/linux⑻b449a536a2157bcad08a2b9f266828b下的同名文件,然后再次cmake便可。生成編譯文件以后,在opencv⑶.1.0/build目錄下,終端輸入:
$ make -j4 #4核運算
$ sudo make install
此時,可能會出現另外1個毛病:
/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⑶.1.0目錄下的CMakeList.txt 文件的開頭加入:
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -D_FORCE_INLINES”)
添加上后再次進行編譯鏈接便可。
python的安裝有兩種方式:1種是系統自帶的python,只需再安裝相應的庫便可;第2種是直接安裝anaconda,很多相應的庫已包括了。第1種直接安裝庫文件比較簡單,不需要修改相應的包括路徑和庫文件。本人由于習慣了anaconda,因此選擇的是anaconda linux64 2.7版本(3.5版本我也試過,裝caffe的時候可能會比較麻煩)。下載完成以后,最好也要進行md5sum的檢驗。完成以后,cd進入下載文件所在的目錄,在命令行輸入:
$ bash Anaconda2⑷.0.0-Linux-x86_64.sh
安裝完成以后,在.bashrc中添加Anaconda的庫文件,1定不要在/etc/profile文件中添加。由于anaconda有幾個鏈接庫和系統鏈接庫文件類似,如果添加到/etc/profile文件中,會出現電腦重啟以后不能進入界面的情況
$ sudo gedit ~/.bashrc
然后加入庫文件:
export PATH=”/home/lyndon/anaconda2/bin:
PATH”exportLDLIBRARYPATH=”/home/lyndon/anaconda2/lib: LD_LIBRARY_PATH”
重啟電腦以后,在命令行輸入:
$ ipython
就能夠看到python的版本,并進行應用了。
在網盤上下載安裝包及Crack破解文件以后,解壓兩個緊縮文件,并用Crack文件中的install替換matlab2014安裝目錄下/java/jar/下的install文件。然后在命令行cd進入matlab2014目錄,輸入:
$ sudo ./install
1、選擇“不聯網安裝”;
2、當出現密鑰時,隨便輸入20個數字12345⑹7890⑴2345⑹7890便可;
3、選擇自己需要安裝的工具;
4、需要激活時選擇不要聯網激活,應用Crack目錄下的“license_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,就可以過進行使用了
首先,安裝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利用時還是會出現毛病。此時用anaconda的安裝工具conda 再安裝必要文件就好了,我安裝了以下文件,后續ipython中就可以夠用caffe了。
$ conda install libprotobuf-dev libleveldb-dev
安裝完成以后,進入caffe下載的文件目錄,在命令行輸入:
$ sudo cp Makefile.config.example Makefile.config # 備份配置文件
$ gedit Makefile.config # 修改編譯文件
配置文件主要修改:
USE_CUDNN := 1 #取消注釋,利用cudnn
OPENCV_VERSION := 3 #取消注釋,利用opencv3
BLAS := mkl #BLAS庫利用英特爾的mkl
ANACONDA_HOME := /home/lyndon/anaconda2
PYTHON_INCLUDE :=(ANACONDAHOME)/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中gcc編譯器版本太新,解決方法是打開Makefile文件,搜索并修改:
改 NVCCFLAGS += -ccbin=
(CXX)?Xcompiler?fPIC (COMMON_FLAGS)
為 NVCCFLAGS += -D_FORCE_INLINES -ccbin=(CXX)?Xcompiler?fPIC (COMMON_FLAGS)
還可能出現:/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 #編譯立即生效,然落后入caffe所在目錄 cd /home/lyndon/lyndon/caffe/caffe-master
make all -j4 #編譯文件 make test -j4 #編譯測試文件
$ make matcaffe
如果編譯都沒報錯,則表示基本成功,能夠通過用例進行測試了。在應用anaconda和matlab時都需要修改相應的內容。
anaconda需要將caffe頭文件進行鏈接:
$ sudo gedit ~/.bashrc
export PYTHONPATH=”/home/lyndon/lyndon/caffe/caffe-master/python:$PYTHONPATH”
以后編譯鏈接庫,打開ipython,輸入:
$ import caffe
便可調用caffe相應模塊了。matlab模塊可以直接測試caffe/matlab/+caffe的用例。
至此,ubuntu16.0下的caffe等相干文件全部安裝終了,其中問題最多的應當是雙顯卡問題中的nvidia驅動安裝的問題,很有可能會驅動不起來,最好弄明白自己出錯的緣由,不然重裝系統也沒用。其次,在安裝anaconda進程中,有些教程建議把庫文件加入到/etc/profile環境中,這可能會造成電腦重啟沒法進入桌面的問題。其余的問題都應當不會造成電腦不能重啟不能進入桌面的情況,可以直接google和百度解決。