Caffe+Kubuntu16.04_X64+CUDA 8.0配置
前言:
??????? 經(jīng)過嘗試過幾次Caffe,theano,MxNet之后,很長時間沒有進(jìn)行caffe的更新,此次在Ubuntu16.04下安裝Caffe,折騰了一天時間,終于安裝成功。
??????? 參考鏈接:Caffe+UbuntuKylin14.04_X64+CUDA 6.5配置?
一? 配置CUDA8.0
??????? 既然使用了最新版本,必然使用最新版本的CUDA,且只有CUDA8.0給了ubuntu16.04支持。
1.1 禁用nouveau驅(qū)動:
??????? 參考鏈接: http://blog.csdn.net/chunchun362425965/article/details/51566851
nouveau去驅(qū)動是ubuntu自帶的驅(qū)動,需要將其刪除掉才能安裝 NVIDIA的驅(qū)動
- 首先新建一個/etc/modprobe.d/blacklist-nouveau.conf文件 輸入如下文字blacklist nouveau options nouveau modeset=0
- 運行sudo update-initramfs -u
如果遇到不能啟動的情況,或者遇到warning 顯示顯示配置選項,重啟幾次,直到啟動lighedm界面。
? ?????? 異常情況:此步驟不成功會造成? nouveau驅(qū)動未禁用,NVIDIA顯卡驅(qū)動無法安裝,
1.2 退回ubuntu GCC編譯器到4.9:
???????? 參考鏈接: 深度學(xué)習(xí)(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow環(huán)境搭建ubuntu的gcc編譯器是5.4.0,然而cuda8.0不支持5.0以上的編譯器,因此需要降級,把編譯器版本降到4.9:
sudo apt-get install g++-4.9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10 sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 sudo update-alternatives --set cc /usr/bin/gcc sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 sudo update-alternatives --set c++ /usr/bin/g++
等待安裝完成...............................................................
? ?????? 異常情況:此步驟不成功會造成? 在安裝CUDA時找不到編譯器,CUDA安裝失敗。
1.3? 安裝CUDA8.0:
???????? 參考鏈接: 深度學(xué)習(xí)(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow環(huán)境搭建?????? CUDA8.0屬于測試版本,需要登錄之后才能下載,最簡單的方式時下載.run包,可以直接運行。
?????? 官網(wǎng)下載地址:https://developer.nvidia.com/cuda-toolkit
準(zhǔn)備工作:
???? ? 在UEFI BIOS里面切換顯卡使用,修改 PCI1 為ITG,切換到intel核顯
安裝過程:
?????? su root?
?????? 輸入密碼:
?????? service lightdm stop? (關(guān)掉X界面服務(wù) )
???? ? cd? /home/cuda/
??? ?? ./cuda.run
等待安裝成功...............
修改BIOS,切換會PCI1
注意事項:cuda默認(rèn)攜帶了nvidia驅(qū)動,可以不預(yù)先安裝最新版本的驅(qū)動程序。
1.4 配置測試環(huán)境
???????? 參考鏈接: 在Ubuntu下安裝、配置和測試cuda
export CUDA_HOME=/usr/local/cuda-8.0/ export CUDA_INC_PATH=${CUDA_HOME}/include export CUDA_LIB_PATH=${CUDA_HOME}/lib64 export CUDA_INSTALL_PATH=${CUDA_HOME} export PATH=${CUDA_HOME}/bin:$PATH export PATH=${CUDA_HOME}/computeprof/bin:$PATH export LD_LIBRARY_PATH=${CUDA_HOME}/computeprof/bin:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${CUDA_HOME}/extras/CUPTI/lib64:$LD_LIBRARY_PATH export MANPATH=${CUDA_HOME}/man:$MANPATH export OPENCL_HOME=${CUDA_HOME} export OPENCL_INC_PATH=${OPENCL_HOME}/include export OPENCL_LIB_PATH=${OPENCL_HOME}/lib64 export LD_LIBRARY_PATH=${OPENCL_LIB_PATH}:$LD_LIBRARY_PATH查看版本:??????
nvcc --version顯示信息:
B85M-D2V-TM:~$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Wed_May__4_21:01:56_CDT_2016
Cuda compilation tools, release 8.0, V8.0.26
二 安裝第三方庫
1. 安裝Intel MKL?
(如果沒有可以安裝OpenBLAS代替)解壓安裝包,下面有一個install_GUI.sh文件, 執(zhí)行該文件,會出現(xiàn)圖形安裝界面,根據(jù)說明一步一步執(zhí)行即可。
1.安裝 MKL
注意: 安裝完成后需要添加library路徑
sudo gedit /etc/ld.so.conf.d/intel_mkl.conf在文件中添加內(nèi)容
/opt/intel/lib /opt/intel/mkl/lib/intel64
(這里我按照這樣的方法最終編譯出現(xiàn)cblas找不到的問題,應(yīng)該是MKL安裝有問題,但是又沒辦法解決,最終我就按照官網(wǎng)的方法安裝了ATLAS:sudo apt-get install libatlas-base-dev一句話就搞定,雖然性能可能比不上MKL,但是將就著能用就行。)?
注意把路徑替換成自己的安裝路徑。 編輯完后執(zhí)行
sudo ldconfig3. 安裝OpenCV
這個盡量不要手動安裝, Github上有人已經(jīng)寫好了完整的安裝腳本:
https://github.com/jayrambhia/Install-OpenCV下載該腳本,進(jìn)入Ubuntu/2.4 目錄, 給所有shell腳本加上可執(zhí)行權(quán)限
chmod +x *.sh然后安裝最新版本 (當(dāng)前為2.4.9)
(http://code.opencv.org/issues/3814 ?下載?NCVPixelOperations.hpp?替換掉opencv2.4.9內(nèi)的文件, 重新build。)
(注意,修改一下 文件里面的編譯選項,一直開 make j4, 導(dǎo)致CPU 總是熱導(dǎo)致停機(jī),半途而廢。
應(yīng)修改為 j2 ,或者去掉j選項)
腳本會自動安裝依賴項,下載安裝包,編譯并安裝OpenCV。
整個過程大概半小時左右。?
注意,中途可能會報錯(這一次真的報錯了!!!)
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization解決方法在此:http://code.opencv.org/issues/3814 ?下載?NCVPixelOperations.hpp?替換掉opencv2.4.9內(nèi)的文件, 重新build。
安裝OpenCV
Ubuntu16.04用戶
Ubuntu 16.04中安裝OpenCV 2.4.10參考網(wǎng)址如下:
http://www.linuxidc.com/Linux/2016-07/132879.htm
http://www.linuxidc.com/Linux/2016-07/132880.htm
1 預(yù)先安裝一些軟件:
2 去官網(wǎng)下載opencv壓縮包
3 解壓壓縮包到某文件夾(用windows習(xí)慣了,直接右鍵提取到此處。。。)
?? cd 到目錄下,執(zhí)行(注意有個“.”,作為cmake的參數(shù)表示當(dāng)前目錄)
?? cmake .
成功,然后
?? make
出現(xiàn)錯誤:
??
[ 16%] Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/cuda_compile_generated_matrix_operations.cu.o CMake Warning (dev) at cuda_compile_generated_matrix_operations.cu.o.cmake:137 (if):Policy CMP0054 is not set: Only interpret if() arguments as variables orkeywords when unquoted. Run "cmake --help-policy CMP0054" for policydetails. Use the cmake_policy command to set the policy and suppress thiswarning.Quoted keywords like "COMMAND" will no longer be interpreted as keywordswhen the policy is set to NEW. Since the policy is not set the OLDbehavior will be used. Call Stack (most recent call first):cuda_compile_generated_matrix_operations.cu.o.cmake:164 (cuda_execute_process)This warning is for project developers. Use -Wno-dev to suppress it.nvcc fatal : Unsupported gpu architecture 'compute_11' CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message):Error generating/home/wishchin/Lib/opencv-2.4.10/modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.omodules/core/CMakeFiles/opencv_core.dir/build.make:63: recipe for target 'modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/cuda_compile_generated_matrix_operations.cu.o' failed make[2]: *** [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/cuda_compile_generated_matrix_operations.cu.o] Error 1 CMakeFiles/Makefile2:1110: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2 Makefile:149: recipe for target 'all' failed make: *** [all] Error 2
排錯方法:
修改OpenCV版本為2.4.13,編譯通過,貌似2.4.10不支持CUDA8.0。
[100%] Building CXX object apps/traincascade/CMakeFiles/opencv_traincascade.dir/HOGfeatures.cpp.o [100%] Building CXX object apps/traincascade/CMakeFiles/opencv_traincascade.dir/imagestorage.cpp.o [100%] Linking CXX executable ../../bin/opencv_traincascade [100%] Built target opencv_traincascade Scanning dependencies of target opencv_annotation [100%] Building CXX object apps/annotation/CMakeFiles/opencv_annotation.dir/opencv_annotation.cpp.o [100%] Linking CXX executable ../../bin/opencv_annotation [100%] Built target opencv_annotation Scanning dependencies of target opencv_visualisation [100%] Building CXX object apps/visualisation/CMakeFiles/opencv_visualisation.dir/opencv_visualisation.cpp.o [100%] Linking CXX executable ../../bin/opencv_visualisation [100%] Built target opencv_visualisation
且只有opencv 2.4.13編譯成功..........................
4 安裝
sudo?make?install
[100%] Built target opencv_traincascade [100%] Linking CXX executable ../../bin/opencv_annotation [100%] Built target opencv_annotation [100%] Linking CXX executable ../../bin/opencv_visualisation [100%] Built target opencv_visualisation Install the project... -- Install configuration: "Release" -- Installing: /usr/local/include/opencv2/opencv_modules.hpp -- Installing: /usr/local/lib/pkgconfig/opencv.pc -- Installing: /usr/local/share/OpenCV/OpenCVConfig.cmake -- Installing: /usr/local/share/OpenCV/OpenCVConfig-version.cmake -- Installing: /usr/local/share/OpenCV/OpenCVModules.cmake -- Installing: /usr/local/share/OpenCV/OpenCVModules-release.cmake -- Installing: /usr/local/include/opencv/cv.h -- Installing: /usr/local/include/opencv/cxeigen.hpp
安裝成功........................................
4. 安裝其他依賴項
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
其他版本用戶參考官方說明:http://caffe.berkeleyvision.org/installation.html
三 安裝高級語言接口
1. 安裝Caffe所需要的Python環(huán)境
首先安裝pip和python-dev (系統(tǒng)默認(rèn)有python環(huán)境的, 不過我們需要的使python-dev)
sudo apt-get install python-dev python-pip然后執(zhí)行如下命令安裝編譯caffe python wrapper 所需要的額外包
for req in $(cat requirements.txt); do sudo pip install $req; done在執(zhí)行上述命令時, 會報錯導(dǎo)致不能完全安裝所有需要的包。 可以按照官方建議安裝anaconda包。 在anaconda官網(wǎng)下載.sh文件,執(zhí)行,最后添加bin目錄到環(huán)境變量即可。
(下面的添加沒用!一般不會用到)
建議安裝Anaconda包,這個包能獨立于系統(tǒng)自帶的python庫,并且提供大部分Caffe需要的科學(xué)運算Python庫。這里需要注意,在運行Caffe時,可能會報一些找不到libxxx.so的錯誤,而用 locate libxxx.so命令發(fā)現(xiàn)已經(jīng)安裝在anaconda中,這時首先想到的是在/etc/ld.so.conf.d/ 下面將 $your_anaconda_path/lib 加入 LD_LIBRARY_PATH中。但是這樣做可能導(dǎo)致登出后無法再進(jìn)入桌面!!!原因(猜測)可能是anaconda的lib中有些內(nèi)容于系統(tǒng)自帶的lib產(chǎn)生沖突。
正確的做法是:為了不讓系統(tǒng)在啟動時就將anaconda/lib加入系統(tǒng)庫目錄,可以在用戶自己的~/.bashrc 中添加library path, 比如我就在最后添加了兩行
# add library path LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH
開啟另一個終端后即生效,并且重啟后能夠順利加載lightdm, 進(jìn)入桌面環(huán)境。
三 編譯Caffe
1. 編譯Caffe
終于完成了所有環(huán)境的配置,可以愉快的編譯Caffe了! 進(jìn)入caffe根目錄, 首先復(fù)制一份Makefile.config
cp Makefile.config.example Makefile.config然后修改里面的內(nèi)容,主要需要修改的參數(shù)包括
CPU_ONLY 是否只使用CPU模式,沒有GPU沒安裝CUDA的同學(xué)可以打開這個選項
BLAS (使用intel mkl還是OpenBLAS)(由于我安裝了atlas,所以不需要修改默認(rèn)設(shè)置!)
MATLAB_DIR 如果需要使用MATLAB wrapper的同學(xué)需要指定matlab的安裝路徑,
如我的路徑為 /usr/local/MATLAB/R2013b (注意該目錄下需要包含bin文件夾,bin文件夾里應(yīng)該包含mex二進(jìn)制程序)
DEBUG 是否使用debug模式,打開此選項則可以在eclipse或者NSight中debug程序
完成設(shè)置后, 開始編譯
make make test make runtest注意 -j4 是指使用幾個線程來同時編譯, 可以加快速度, j后面的數(shù)字可以根據(jù)CPU core的個數(shù)來決定, 我的CPU使4核, 所以-j4.
錯誤重現(xiàn):
make 出現(xiàn)
<pre name="code" class="html"><span style="font-family:Times New Roman;">CXX .build_release/src/caffe/proto/caffe.pb.cc CXX src/caffe/solver.cpp In file included from src/caffe/solver.cpp:8:0: ./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: 沒有那個文件或目錄#include "hdf5.h"^ compilation terminated.</span>錯誤原因: HDF5未能使用,
解決方法: 使用 make all -j2 命令,可以CXX編譯通過。
出現(xiàn)錯誤:
?
CXX examples/cpp_classification/classification.cpp AR -o .build_release/lib/libcaffe.a LD -o .build_release/lib/libcaffe.so.1.0.0-rc3 /usr/bin/ld: 找不到 -lhdf5_hl /usr/bin/ld: 找不到 -lhdf5 /usr/bin/ld: 找不到 -lcblas /usr/bin/ld: 找不到 -latlas collect2: error: ld returned 1 exit status Makefile:563: recipe for target '.build_release/lib/libcaffe.so.1.0.0-rc3' failed make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] Error 1 make: *** 正在等待未完成的任務(wù)....?解決方法:
1安裝atlas...?
成功
2添加hdf5到 系統(tǒng)路徑
makefile文件里面添加:
LIBRARY_DIRS += /root/anaconda2/lib
或者
修改Makefile.config需要修改的內(nèi)容:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
編譯通過.......
此處參考:Ubuntu16.04+CUDA8.0+Caffe????
3. 若出現(xiàn)/bin/sh: 1: /usr/local/cuda/bin/nvcc: not found 問題,在Ubuntu17.04時會出現(xiàn)此問題
?? 重裝CUDA
1.2. 編譯Python wrapper
make pycaffe然后基本就全部安裝完拉.
接下來大家盡情地跑demo吧~
后記:
??????? 最好不要使用16.04版本的ubuntu,還原到14.04版本為好。
總結(jié)
以上是生活随笔為你收集整理的Caffe+Kubuntu16.04_X64+CUDA 8.0配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2023 ChinaJoy骁龙主题馆即将
- 下一篇: ubuntu18.04安装pycharm