about
本blog參考了
masa_fish 的 Ubuntu 14.04 上安裝 CUDA 7.5 超詳細(xì)教程
denny的Caffe學(xué)習(xí)系列(1):安裝配置ubuntu14.04+cuda7.5+caffe+cudnn
dongbeidami的Ubuntu 14.04上安裝caffe
NVIDIA官方教程de NVIDIA CUDA Installation Guide for Linux
0. FIRST OF ALL
0.1 如果之前安裝過径密,但失敗了的同學(xué),請敲下...
a)..deb
安裝失敗的....
$ sudo apt-get --purge remove nvidia*
b).run
安裝失敗的....
執(zhí)行
$ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
$ sudo /usr/bin/nvidia-uninstall
- 在 a) 或 b) 后,若仍安裝有問題躺孝,請敲下
$ sudo apt-get autoremove --purge nvidia-* #把nvidia驅(qū)動清個干干凈凈
$ sudo reboot
- !Note: sudo apt-get remove --purge nvidia-*這條指令并沒卸載干凈享扔,可能存在驅(qū)動的沖突底桂,導(dǎo)致安裝不成功
0.2 建議來一本官方安裝手冊:
NVIDIA CUDA INSTALLATION GUIDE FOR LINUX
1 PRE-INSTALLATION ACTION
1.1 Verify you have a CUDA-Capable GPU
$ lspci | grep -i nvidia
我的機器顯示:
01:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (rev a1)
到 這里 驗證型號
1.2 Verify you have a Supported Version of Linux
$ uname -m && cat /etc/*release
結(jié)果顯示:
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
...
1.3 Verify the System Has GCC Installed
$ gcc --version
結(jié)果顯示:
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
...
1.4 Verify the System has the Correct Kernel Headers and Development Packages Installed
查看正在運行的系統(tǒng)內(nèi)核版本
$ uname -r
結(jié)果顯示
4.4.0-45-generic
安裝對應(yīng)的kernels header和開發(fā)包:
$ sudo apt-get install linux-headers-$(uname -r)
1.5 Download the NVIDIA CUDA Toolkit
下載完后,用MD5 檢驗惧眠,如果序號不和籽懦,得重新下載
$ md5sum cuda_8.0.27_linux.run
5639ffeb939ee58a81554d06bd084e15 cuda_8.0.27_linux.run
2. RUNFILE INSTALLATION
2.1 Disabling Nouveau
$ lsmod | grep nouveau
如果有內(nèi)容輸出,則需禁掉nouveau
$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf
添加如下內(nèi)容:
blacklist nouveau
options nouveau modeset=0
保存退出(:wq
)
執(zhí)行
$ sudo update-initramfs –u
再執(zhí)行
$ lsmod | grep nouveau
若無內(nèi)容輸出氛魁,則禁用成功
然后重啟電腦
$ sudo reboot
2.2 Reboot Into Text Mode
重啟后暮顺,進(jìn)入登錄界面的時候,不要登錄進(jìn)入桌面(否則可能會失敗秀存,若不小心進(jìn)入捶码,請重啟電腦),直接按Ctrl+Alt+F1
進(jìn)入文本模式(命令行界面)或链,登錄賬戶惫恼。
關(guān)閉圖形化界面
$ sudo service lightdm stop
切換到cuda_8.0.27_linux.run
的目錄,執(zhí)行
$ sudo sh cuda_8.0.27_linux.run
!Note:安裝的時候澳盐,要讓你先看一堆文字(EULA)祈纯,我們直接不停的按空格鍵到100%;
遇到提示是否安裝openGL ,選擇no,其他的可以一路accept, yes或回車
安裝成功后叼耙,會顯示installed腕窥,否則會顯示failed。
重啟圖形化界面
$ sudo service lightdm start
登錄時能進(jìn)入桌面筛婉,不會一直在重復(fù)登錄簇爆,成功已近大半。
!Note:如果出現(xiàn)重復(fù)登陸情況倾贰,請卸載cuda,然后重裝冕碟。
原因:是OpenGL與NVIDIA發(fā)生了什么什么的。
卸載:由于登陸進(jìn)入不到圖形用戶界面(GUI)匆浙,但我們可以進(jìn)入到文本用戶界面(TUI)(TUI很酷有沒有?)
- 在登陸界面時安寺,按Ctrl + Alt + f1,進(jìn)入TUI
- 執(zhí)行
$ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
$ sudo /usr/bin/nvidia-uninstall
- 然后重啟
$ sudo reboot
- 重新安裝.run(安裝時請留眼,在提示是否安裝OpenGL時首尼,應(yīng)該選no)
2.3 Device Node Verification
執(zhí)行
$ ls /dev/nvidia*
可能出現(xiàn)a), b), c)挑庶,d)三種結(jié)果,請對號入座软能。前方高能迎捺!
- a) 若結(jié)果顯示
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
或顯示出類似的信息,應(yīng)該有三個(包含一個類似/dev/nvidia-nvm的)查排,則安裝成功
- b)如果運氣有點背凳枝,結(jié)果是這樣的
ls: cannot access /dev/nvidia*: No such file or directory
或是這樣的,只出現(xiàn)
/dev/nvidia0 /dev/nvidiactl
中的一個或兩個,但沒有/dev/nvidia-num
莫方岖瑰,也許還有希望(我在安裝時就是這種情況叛买。。蹋订。)按照官方的做法:
把下面的.sh
文件隨便命個名(我命名為Nka.sh
)
#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
然后執(zhí)行
$ sudo chmod +x Nka.sh
$ sudo ./Nka.sh
$ ls /dev/nvidia*
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
成功率挣!
1, 這種做不太友好露戒,我的意思是椒功,當(dāng)下次重啟電腦時,你使用
ls /dev/nvidia*
指令時智什,你是看不到那三個nvidia
的文件了动漾。所以你又得手動執(zhí)行
sudo ./Nka.sh
指令了,是不是很煩荠锭!其實上面的.sh
文件是startup scipt
谦炬,也就是啟動腳本。顧名思義节沦,就是在系統(tǒng)啟動時,自動加載的础爬。哈甫贯,這么棒的功能就是我們想要的。
2看蚜, 添加啟動腳本的方法大致有兩種叫搁,我就此介紹一種最傻瓜化的方法。
執(zhí)行
$ sudo vi /etc/rc.local
如果你是第一次打開這個文件供炎,它應(yīng)該是空的(除了一行又一行的#
注釋項外)渴逻。這文件的第一行是
#!/bin/sh -e
把-e
去掉(這步很重要,否則它不會加載這文本的內(nèi)容)
然后把Nka.sh
的內(nèi)容除了#!/bin/bash
外復(fù)制到其中音诫,(before exit 0 )保存退出惨奕。
下次重啟時,你應(yīng)該能直接看到/dev
目錄下的三個nvidia
的文件
$ ls /dev/nvidia*
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
- c) 如果人品實在不好(我就遇過幾次竭钝。梨撞。。)香罐,結(jié)果是這樣的
modprobe: ERROR: could not insert 'nvidia_uvm': Operation not permitted
少年卧波,我救不了你了。但是winney大神可以庇茫。(在此謝過她了港粱,阿 里 嘎 多!)
當(dāng)出現(xiàn)這種情況時旦签,可能是驅(qū)動打起架來了查坪。
執(zhí)行
$ sudo apt-get autoremove --purge nvidia-* #把nvidia驅(qū)動清個干干凈凈
$ sudo reboot #一定記得重啟寸宏,不然你會后悔的!
然后
$ sudo ./Nka.sh
$ ls /dev/nvidia*
這時,應(yīng)該可以見到
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
- d) 未知咪惠,有點悲傷的告訴你击吱,少年,我只能幫到這了,建議網(wǎng)上另尋方案遥昧,或重裝.run覆醇。Gook Luck!
3 POST-INSTALLATION ACTIONS
3.1 Environment Setup
打開系統(tǒng)配置文件
$ sudo vi /etc/profile
在文件最后添加
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
保存退出
執(zhí)行
$ source /etc/profile
讓文件立即生效
至此cuda 8.0安裝完畢。
3.2 Verify the Installation
3.2.1 Verify the Driver Version
敲入
$ cat /proc/driver/nvidia/version
結(jié)果顯示
NVRM version: NVIDIA UNIX x86_64 Kernel Module 361.77 Sun Jul 17 21:18:18 PDT 2016
GCC version: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
或之類的東東
3.2.2 Verify CUDA Toolkit
敲入
$ nvcc -V
結(jié)果顯示
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
!Note: 如果是這樣的:
The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit
莫方炭臭,確認(rèn)下/etc/profile
的配置環(huán)境是否正確
即使什么都沒改永脓,可能忘了這一步,或是之前執(zhí)行了,但過了有段時間鞋仍,且又還沒重啟電腦常摧。因為
source /etc/profile
是臨時生效,重啟電腦才是永久生效
執(zhí)行
$ source /etc/profile
再執(zhí)行(應(yīng)該就有顯示了)
$ nvcc -V
3.2.3 Complie sample
cd
進(jìn)NVIDIA_CUDA-8.0_Samples目錄
執(zhí)行
$ make
!Note: 這區(qū)間大概需要十幾到二十分鐘威创,請耐心等待落午。建議來杯caffe
運行完后,編譯結(jié)果會放在NVIDIA_CUDA-8.0_Samples
目錄下的bin
目錄
3.2.3 Running the Binaries
cd
進(jìn)bin
目錄里面的里面的里面肚豺,知道看到一堆可執(zhí)行文件(菱形的圖標(biāo))溃斋,大概是 ~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
執(zhí)行
$ ./deviceQuery
結(jié)果顯示
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GT 720M"
CUDA Driver Version / Runtime Version 8.0 / 8.0
CUDA Capability Major/Minor version number: 2.1
Total amount of global memory: 1985 MBytes (2081226752 bytes)
( 2) Multiprocessors, ( 48) CUDA Cores/MP: 96 CUDA Cores
GPU Max Clock rate: 1250 MHz (1.25 GHz)
Memory Clock rate: 800 Mhz
Memory Bus Width: 64-bit
L2 Cache Size: 131072 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65535), 3D=(2048, 2048, 2048)
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: 32768
Warp size: 32
Maximum number of threads per multiprocessor: 1536
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): (65535, 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: No
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 = 8.0, NumDevs = 1, Device0 = GeForce GT 720M
Result = PASS
或之類的東東,且最后是
Result = PASS
,若失敗Result = FAIL
再來一個吸申,執(zhí)行
$ ./bandwidthTest
結(jié)果顯示
[CUDA Bandwidth Test] - Starting...
Running on...
Device 0: GeForce GT 720M
Quick Mode
Host to Device Bandwidth, 1 Device(s)
PINNED Memory Transfers
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 3220.9
Device to Host Bandwidth, 1 Device(s)
PINNED Memory Transfers
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 3271.9
Device to Device Bandwidth, 1 Device(s)
PINNED Memory Transfers
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 9772.8
Result = PASS
NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.
少年梗劫,恭喜你!你已成功安裝cuda-8.0
,接下來就可以愉快的玩耍了