Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
FROM:https://gist.github.com/realmyth/f368ba0fea429342236c
本步驟能實現用Intel核芯顯卡來進行顯示, 用NVIDIA GPU進行計算。
1. 安裝開發所需的依賴包
安裝開發所需要的一些基本包
sudo apt-get install build-essential # basic requirement 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 #required by caffe2. 安裝CUDA及驅動
2.1 準備工作
在關閉桌面管理 lightdm 的情況下安裝驅動似乎可以實現Intel 核芯顯卡 來顯示 + NVIDIA 顯卡來計算。具體步驟如下:
進入Ubuntu, 按 ctrl+alt+F1 進入tty, 登錄tty后輸入如下命令
sudo service lightdm stop該命令會關閉lightdm。如果你使用 gdm或者其他的desktop manager, 請在安裝NVIDIA驅動前關閉他。
2.2 下載deb包及安裝CUDA
使用deb包安裝CUDA及驅動能省去很多麻煩(參見CUDA Starting Guide)。下載對應于你系統的CUDA deb包, 然后用下列命令添加軟件源
sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.debsudo apt-get update然后用下列命令安裝CUDA
sudo apt-get install cuda安裝完成后 reboot.
sudo reboot2.3 安裝cuDNN
cuDNN能加速caffe中conv及pooling的計算。首先下載cuDNN, 然后執行下列命令解壓并安裝
tar -xzvf cudnn-6.5-linux-R1.tgz cd cudnn-6.5-linux-R1 sudo cp lib* /usr/local/cuda/lib64/ sudo cp cudnn.h /usr/local/cuda/include/更新軟鏈接
cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.6.5 sudo ln -s libcudnn.so.6.5.18 libcudnn.so.6.5 sudo ln -s libcudnn.so.6.5 libcudnn.so2.4 設置環境變量
安裝完成后需要在/etc/profile中添加環境變量, 在文件最后添加:
PATH=/usr/local/cuda/bin:$PATH export PATH保存后, 執行下列命令, 使環境變量立即生效
source /etc/profile同時需要添加lib庫路徑: 在 /etc/ld.so.conf.d/加入文件 cuda.conf, 內容如下
/usr/local/cuda/lib64保存后,執行下列命令使之立刻生效
sudo ldconfig3. 安裝CUDA SAMPLE
進入/usr/local/cuda/samples, 執行下列命令來build samples
sudo make all -j8整個過程大概10分鐘左右, 全部編譯完成后, 進入 samples/bin/x86_64/linux/release, 運行deviceQuery
./deviceQuery如果出現顯卡信息, 則驅動及顯卡安裝成功:
./deviceQuery Starting...CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)Device 0: "GeForce GTX 670"CUDA Driver Version / Runtime Version 6.5 / 6.5CUDA Capability Major/Minor version number: 3.0Total amount of global memory: 4095 MBytes (4294246400 bytes)( 7) Multiprocessors, (192) CUDA Cores/MP: 1344 CUDA CoresGPU Clock rate: 1098 MHz (1.10 GHz)Memory Clock rate: 3105 MhzMemory Bus Width: 256-bitL2 Cache Size: 524288 bytesMaximum 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 layersMaximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layersTotal amount of constant memory: 65536 bytesTotal amount of shared memory per block: 49152 bytesTotal number of registers available per block: 65536Warp size: 32Maximum number of threads per multiprocessor: 2048Maximum number of threads per block: 1024Max 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 bytesTexture alignment: 512 bytesConcurrent copy and kernel execution: Yes with 1 copy engine(s)Run time limit on kernels: YesIntegrated GPU sharing Host Memory: NoSupport host page-locked memory mapping: YesAlignment requirement for Surfaces: YesDevice has ECC support: DisabledDevice supports Unified Addressing (UVA): YesDevice PCI Bus ID / PCI location ID: 1 / 0Compute Mode:< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForce GTX 670 Result = PASS4. 安裝Intel MKL 或Atlas
如果沒有Intel MKL, 可以用下列命令安裝免費的atlas
sudo apt-get install libatlas-base-dev如果有mkl安裝包,首先解壓安裝包,下面有一個install_GUI.sh文件, 執行該文件,會出現圖形安裝界面,根據說明一步一步執行即可。
注意: 安裝完成后需要添加library路徑, 創建/etc/ld.so.conf.d/intel_mkl.conf文件, 在文件中添加內容
/opt/intel/lib /opt/intel/mkl/lib/intel64注意把路徑替換成自己的安裝路徑。 編輯完后執行
sudo ldconfig5. 安裝OpenCV (Optional, 如果運行caffe時opencv報錯, 可以重新按照此步驟安裝)
雖然我們已經安裝了libopencv-dev, 但該庫似乎會導致libtiff的相關問題, 所以我們需要從源代碼build 自己的版本。這個盡量不要手動安裝, Github上有人已經寫好了完整的安裝腳本, 能自動安裝所有dependencies.
下載該腳本,進入Ubuntu/2.4 目錄, 給所有shell腳本加上可執行權限
chmod +x *.sh修改腳本opencv2_4_X.sh, 在cmake中加入參數
-D BUILD_TIFF=ON然后安裝(當前為2.4.9)
sudo ./opencv2_4_9.sh腳本會自動安裝依賴項,下載安裝包,編譯并安裝OpenCV。整個過程大概半小時左右。
注意,安裝2.4.9時中途可能會報錯
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization解決方法在此 下載 NCVPixelOperations.hpp, 替換掉opencv2.4.9內的文件, *并注釋掉opencv2_4_9.sh中下載opencv包的代碼, 重新執行sudo ./opencv2_4_9.sh`.
6. 安裝Caffe所需要的Python環境
6.1 安裝anaconda包
在此下載最新的安裝包, 用默認設置安裝在用戶目錄下。
6.2 安裝python依賴庫
打開新的終端, 用which python和which pip確定使用的是anaconda提供的python環境,然后進入caffe_root/python, 執行下列命令
for req in $(cat requirements.txt); do pip install $req; done6.3 修正Anaconda存在的bug
加入在編譯或者運行caffe時遇到這樣的錯誤
/usr/lib/x86_64-linux-gnu/libx264.so.142:undefined reference to '那么請刪除掉anaconda/lib中的libm.*. 參考this issue
實際編譯caffe的時候還碰到anaconda和系統的libreadline沖突的狀況,需要conda remove readline (感謝@jastarex ).
6.4 添加Anaconda Library Path
這里需要注意,在運行Caffe時,可能會報一些找不到libxxx.so的錯誤,而用 locate libxxx.so命令發現已經安裝在anaconda中,這時首先想到的是在/etc/ld.so.conf.d/ 下面將 your_anaconda_path/lib 加入 LD_LIBRARY_PATH中。 但是這樣做可能導致登出后無法再進入桌面!!!原因(猜測)可能是anaconda的lib中有些內容于系統自帶的lib產生沖突。
正確的做法是:為了不讓系統在啟動時就將anaconda/lib加入系統庫目錄,可以在用戶自己的~/.bashrc 中添加library path, 比如我就在最后添加了兩行
# add library path LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH開啟另一個終端后即生效,并且重啟后能夠順利加載lightdm, 進入桌面環境。
7. 安裝MATLAB
Caffe提供了MATLAB接口, 有需要用MATLAB的同學可以額外安裝MATLAB。 安裝教程請自行搜索。
安裝完成后添加圖標
sudo vi /usr/share/applications/Matlab.desktop輸入以下內容
[Desktop Entry] Type=Application Name=Matlab GenericName=Matlab R2013b Comment=Matlab:The Language of Technical Computing Exec=sh /usr/local/MATLAB/R2013b/bin/matlab -desktop Icon=/usr/local/MATLAB/Matlab.png Terminal=false Categories=Development;Matlab;(I use the R2013b patched package. First you should uncompress the .iso file. Then use sudo cp to copy the patch file)
8. 編譯Caffe
8.1 編譯主程序
終于完成了所有環境的配置,可以愉快的編譯Caffe了! 進入caffe根目錄, 首先復制一份Makefile.config, 然后修改里面的內容,主要需要修改的參數包括
- CPU_ONLY 是否只使用CPU模式,沒有GPU沒安裝CUDA的同學可以打開這個選項
- BLAS (使用intel mkl還是atlas)
- MATLAB_DIR 如果需要使用MATLAB wrapper的同學需要指定matlab的安裝路徑, 如我的路徑為 /usr/local/MATLAB/R2013b (注意該目錄下需要包含bin文件夾,bin文件夾里應該包含mex二進制程序)
- DEBUG 是否使用debug模式,打開此選項則可以在eclipse或者NSight中debug程序
完成設置后, 開始編譯
make all -j4 make test make runtest注意 -j4 是指使用幾個線程來同時編譯, 可以加快速度, j后面的數字可以根據CPU core的個數來決定, 我的CPU使4核, 所以-j4.
8.2 編譯Matlab wrapper
執行如下命令
make matcaffe然后就可以跑官方的matlab demo啦。
8.3 編譯Python wrapper
make pycaffe然后基本就全部安裝完拉.
接下來大家盡情地跑demo吧~
Ubuntu 備份與恢復| Ubuntu可以將系統備份為一個tar壓縮文件,也能很方便地從該文件恢復系統。# 備份我們的目標是備份`/`目錄,但是不備份`/home`, 以及`/proc, /sys, /mnt, /media, /run, /dev`. 要實現這一點,執行下列命令```shcd / tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / ```1. `tar`: 將文件打包成壓縮包.2. `--exclude=/example/path`: 不需要備份的文件或目錄的路徑3. `--one-file-system`: 該命令能自動exclude `/home`, 以及`/proc, /sys, /mnt, /media, /run, /dev`.4. `/`: 需要backup的partition# 恢復進入livecd,用gparted工具對硬盤進行分區和格式化。然后mount你想恢復的分區。 一般會掛載在`/media`下。然后用下述命令恢復:```shsudo tar -xvpzf /path/to/backup.tar.gz -C /media/whatever --numeric-owner````--numeric-owner` - This option tells tar to restore the numeric owners of the files in the archive, rather than matching to any user names in the environment you are restoring from. This is due to that the user id:s in the system you want to restore don't necessarily match the system you use to restore (eg a live CD).# 修復grub```shsudo -sfor f in dev dev/pts proc ; do mount --bind /$f /media/whatever/$f ; donechroot /media/whateverdpkg-reconfigure grub-pc``` |
總結
以上是生活随笔為你收集整理的Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内联汇编 - 从头开始
- 下一篇: ZMQ 三种模型