Ubuntu 14.04 64bit下Caffe + Cuda6.5/Cuda7.0 安裝配置教程
http://www.embeddedlinux.org.cn/emb-linux/entry-level/201612/21-6005.html
隨著深度學習快速發展的浪潮,許多有興趣的工作者都轉入了這個有著很好前景的研究中。工欲善其事,必先利其器。Caffe是一個很不錯的深度學習框架,但它的安裝步驟比較繁瑣,將許多新手拒之門外,於是我就寫了這篇博客,主要是我之前安裝Caffe也是費了很多時間,由零基礎慢慢學習,很羨慕那些有師兄師姐可以幫助的人。
下面開始正式介紹相關安裝步驟,該教程主要包括以下幾方面的內容:
第一部分:安裝所需要的包
第二部分:NVIDIA 驅動和CUDA 安裝
第三部分:Caffe安裝和測試
第一部分:安裝所需要的包
第一部分:安裝所需要的包
- 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 caffe
提示:使用 sudo apt-get install libboost-all-dev ,默認安裝boost1.54版本,如果想要使用1.55版本,可以使用命令:sudo apt-get install libboost1.55-all-dev(推薦)
第二部分:NVIDIA 驅動和CUDA 安裝
重要提示:安裝完Ubuntu系統以及CUDA之後,切莫進行系統更新,會引起不能正常進入桌面的情況,會令你很煩惱的。
安裝之前請進行md5檢驗,確保安裝包完整,檢驗命令為:md5sum 文件名,查看輸出的md5sum是否跟你有的相同。
以cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb為例
目前CUDA官網已經提供離線*.deb安裝的方法,本教程提供兩種安裝方法(*.deb和*.run)
(一)離線 *.deb 安裝方法(推薦)
此方法不用切換到文本模型即可安裝。
(2.1.1)首先下載 對應系統的 離線CUDA安裝包 (*.deb) 鏈接:https://developer.nvidia.com/cuda-toolkit
(2.1.2)安裝下載到的 CUDA離線包 (cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb)
- 添加軟件源
- sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
- 更新軟件源
- sudo apt-get update
- 安裝CUDA
- sudo apt-get install cuda
- 重啟計算機(通過boot設置獨立顯卡支持)
- sudo reboot
(2.1.3)修改環境變量
1)在 /etc/profile 文件中添加以下內容:
- export PATH=/usr/local/cuda-7.0/bin:$PATH
命令:
- sudo vim /etc/profile
2)使環境變量生效
命令:
- source /etc/profile
(2.1.4)添加lib庫路徑
1)在 /etc/ld.so.conf.d/ 文件夾下添加 cuda.conf 文件,內容如下:
- /usr/local/cuda-7.0/lib64
2)使庫路徑立即生效
- sudo ldconfig [-v,可選]
(2.1.5)安裝CUDA Samples
命令:
- sudo sh cuda-samples-linux-6.5.14-18745345.run
一直aceept就行,建議使用默認路徑。
編譯CUDA Samples
命令:
- cd /usr/local/cuda-6.5/samples
- sudo make
編譯完成後,進入路徑:/samples/bin/x86_64/linux/release
運行命令:
- ./deviceQuery
輸出:
- ./deviceQuery Starting...
- CUDA Device Query (Runtime API) version (CUDART static linking)
- Detected 1 CUDA Capable device(s)
- Device 0: "Tesla K40c"
- CUDA Driver Version / Runtime Version 6.5 / 6.5
- CUDA Capability Major/Minor version number: 3.5
- Total amount of global memory: 11520 MBytes (12079136768 bytes)
- (15) Multiprocessors, (192) CUDA Cores/MP: 2880 CUDA Cores
- GPU Clock rate: 745 MHz (0.75 GHz)
- Memory Clock rate: 3004 Mhz
- Memory Bus Width: 384-bit
- L2 Cache Size: 1572864 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 2 copy engine(s)
- Run time limit on kernels: No
- Integrated GPU sharing Host Memory: No
- Support host page-locked memory mapping: Yes
- Alignment requirement for Surfaces: Yes
- Device has ECC support: Enabled
- Device supports Unified Addressing (UVA): Yes
- Device PCI Bus ID / PCI location ID: 1 / 0
- Compute 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 = Tesla K40c
- Result = PASS
(2.1.6)驗證NVIDIA 驅動和CUDA是否安裝成功
查看安裝NVIDIA驅動版本 命令:
- cat /proc/driver/nvidia/version
輸出
- NVRM version: NVIDIA UNIX x86_64 Kernel Module 340.96 Sun Nov 8 22:33:28 PST 2015
- GCC version: gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1)
從輸出信息可以看出NVIDIA驅動版本為 340.96
安裝完成後,就可以重新啟動桌面服務了。
命令:
- sudo start lightdm
(二)離線 *.run 安裝方法
使用該方法安裝,可能需要嘗試多次安裝
(2.2.1)驗證顯卡是否支持CUDA
命令:
- lspci | grep -i nvidia
查看該計算機顯卡是否存在於 鏈接 https://developer.nvidia.com/cuda-gpus 中。
(2.2.2)驗證系統,確定為x86架構,64bit系統
命令:
- uname -m && cat /etc/*release
輸出:
- x86_64
- DISTRIB_ID=Ubuntu
- DISTRIB_RELEASE=14.04
- DISTRIB_CODENAME=trusty
- DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS"
- NAME="Ubuntu"
- VERSION="14.04.2 LTS, Trusty Tahr"
- ID=ubuntu
- ID_LIKE=debian
- PRETTY_NAME="Ubuntu 14.04.2 LTS"
- VERSION_ID="14.04"
- HOME_URL="http://www.ubuntu.com/"
- SUPPORT_URL="http://help.ubuntu.com/"
- BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
(2.2.3)驗證系統中是否已經安裝gcc,因為需要用gcc來編譯CUDA和Caffe
命令:
- gcc --version
(2.2.4)NVIDIA和CUDA安裝(*.run)
安裝之前請進行md5sum檢驗,確保安裝包完整,檢驗命令為:md5sum 文件名,查看輸出的md5sum是否跟你有的相同。
該方法以 CUDA6.5 為例。
(2.2.4.1)首先下載 對應系統的 離線CUDA安裝包 (*.run) 鏈接:https://developer.nvidia.com/cuda-toolkit
(2.2.4.2)關閉桌面服務
進入Ubuntu, 按 Ctrl+Alt+F1 進入tty, 登錄tty後輸入如下命令:sudo service lightdm stop。
此命令會關閉lightdm服務,如果你使用的是gdm或者其他的桌面服務,請在安裝NVIDIA顯卡驅動前關閉它。
(2.2.4.3)關閉 Nouveau 開源驅動服務
Nouveau是一個開源的顯卡驅動,Ubuntu 14.04 默認安裝了,但是它會影響nVidia驅動的安裝,啟動時需要將這個驅動加入黑名單中。
1):修改nvidia-graphics-drivers.conf文件
- sudo vim /etc/modprobe.d/nvidia-graphics-drivers.conf
寫入:
- blacklist nouveau
保存並退出:
- wq!
檢查:
- cat nvidia-graphics-drivers.conf
2):修改grub文件
- sudo vim /etc/default/grub
末尾寫入:
- rdblacklist=nouveau nouveau.modeset=0
保存並退出:
- wq!
檢查:
- cat /etc/default/grub
(2.2.4.4)安裝下載到的 CUDA離線包 (*.run)
1):安裝 *.run文件,可以直接使用命令 sudo sh cuda_6.5.14_linux_64.run 一直aceept就行。
或者
由於CUDA安裝包中NVIDIA驅動的版本並不保證是最新的,也不一定適合你的計算機的顯卡,所以建議使用下面這種方式分開安裝,如果NVIDIA驅動版本和CUDA版本不對應的話,會導致CUDA安裝失敗,或者進入不了桌面服務。可以去NVIDIA官網 下載對應你的顯卡的驅動的最新版,至少要高於CUDA安裝包中自帶的NVIDIA版本。
通過下列命令
- cuda_6.5.14_linux_64.run --extract=extract_path
將下載得到的 *.run 文件解壓成三個文件, 分別為
CUDA安裝包: cuda-linux64-rel-6.5.14-18749181.run
NVIDIA安裝包: NVIDIA-Linux-x86_64-340.65.run
CUDA Samples安裝包:cuda-samples-linux-6.5.14-18745345.run
分別運行各個文件,運行前,需要將文件權限修改為可執行權限
命令:
- chmod +x *.run
2):安裝CUDA
命令:
- sudo sh cuda-linux64-rel-6.5.14-18749181.run
一直aceept就行,建議使用默認路徑。
安裝NVIDIA(如果沒有NVIDIA顯卡,可跳過該步驟,仍可使用Caffe的CPU模式)
命令:(不建議使用)
- sudo sh NVIDIA-Linux-x86_64-340.65.run
一直aceept就行,建議使用默認路徑。
3):建議方法(僅限於使用CUDA6.5,如果你需要使用更新的CUDA版本,請去NVIDIA官網 下載對應你的顯卡的驅動的最新版,至少要高於CUDA安裝包中自帶的NVIDIA版本,然後單獨安裝顯卡驅動。鏈接:http://www.nvidia.cn/Download/index.aspx?lang=cn)
1:添加驅動源
- sudo add-apt-repository ppa:xorg-edgers/ppa
- sudo apt-get update
2:安裝340版驅動 (CUDA 6.5.14目前最高僅支持340版驅動, 343, 346版驅動暫不支持)
- sudo apt-get install nvidia-340
3:安裝完成後, 繼續安裝下列包 (否則在運行sample時會報錯)
- sudo apt-get install nvidia-340-uvm
4:安裝完成後,最好重啟計算機,讓NVIDIA顯卡工作
(2.2.4.5)安裝CUDNN(可選)
1):下載 cudnn-6.5-linux-x64-v2 點擊下載,然後執行以下命令安裝
- tar -zxvf cudnn-6.5-linux-x64-v2.tgz
- cd cudnn-6.5-linux-x64-v2
- sudo cp lib* /usr/local/cuda-6.5/lib64/
- sudo cp cudnn.h /usr/local/cuda-6.5/include/
2):更新軟連接
- cd /usr/local/cuda-6.5/lib64/
- sudo rm -rf libcudnn.so libcudnn.so.6.5
- sudo ln -s libcudnn.so.6.5.48 libcudnn.so.6.5
- sudo ln -s libcudnn.so.6.5 libcudnn.so
(2.2.4.6)修改環境變量
1):在 /etc/profile 文件中添加以下內容:
- export PATH=/usr/local/cuda-6.5/bin:$PATH
命令:
- sudo vim /etc/profile
2):使環境變量生效
命令:
- source /etc/profile
(2.2.4.7)添加lib庫路徑
1):在 /etc/ld.so.conf.d/ 文件夾下添加 cuda.conf 文件,內容如下:
- /usr/local/cuda-6.5/lib64
2):使庫路徑立即生效
- sudo ldconfig [-v,可選]
(2.2.4.8)安裝CUDA Samples
命令:
- sudo sh cuda-samples-linux-6.5.14-18745345.run
一直aceept就行,建議使用默認路徑。
編譯CUDA Samples
命令:
- cd /usr/local/cuda-6.5/samples
- sudo make
編譯完成後,進入路徑:/samples/bin/x86_64/linux/release
運行命令:
- ./deviceQuery
輸出:
- ./deviceQuery Starting...
- CUDA Device Query (Runtime API) version (CUDART static linking)
- Detected 1 CUDA Capable device(s)
- Device 0: "Tesla K40c"
- CUDA Driver Version / Runtime Version 6.5 / 6.5
- CUDA Capability Major/Minor version number: 3.5
- Total amount of global memory: 11520 MBytes (12079136768 bytes)
- (15) Multiprocessors, (192) CUDA Cores/MP: 2880 CUDA Cores
- GPU Clock rate: 745 MHz (0.75 GHz)
- Memory Clock rate: 3004 Mhz
- Memory Bus Width: 384-bit
- L2 Cache Size: 1572864 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 2 copy engine(s)
- Run time limit on kernels: No
- Integrated GPU sharing Host Memory: No
- Support host page-locked memory mapping: Yes
- Alignment requirement for Surfaces: Yes
- Device has ECC support: Enabled
- Device supports Unified Addressing (UVA): Yes
- Device PCI Bus ID / PCI location ID: 1 / 0
- Compute 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 = Tesla K40c
- Result = PASS
(2.2.4.9)驗證NVIDIA 驅動和CUDA是否安裝成功
查看安裝NVIDIA驅動版本 命令:
cat /proc/driver/nvidia/version
輸出
- NVRM version: NVIDIA UNIX x86_64 Kernel Module 340.96 Sun Nov 8 22:33:28 PST 2015
- GCC version: gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1)
從輸出信息可以看出NVIDIA驅動版本為 340.96
安裝完成後,就可以重新啟動桌面服務了。
參考http://www.infocool.net/kb/Other/201608/172641.html
命令:
- sudo start lightdm
Ubuntu 14.04 64bit下Caffe + Cuda6.5/Cuda7.0 安裝配置教程