1. 程式人生 > >【CUDA C學習】Day01:CUDA安裝

【CUDA C學習】Day01:CUDA安裝

基本情況

  • 安裝包:
    CUDA_10.0_.run
  • 測試系統:
    Ubuntu16.04
  • 已測試顯示卡:
    Nvidia GeForce GTX 1080TI
    Nvidia GeForce GTX 970
    Nvidia GeForce GTX 960
    Nvidia GeForce GTX 960m

安裝

第1步:驗證電腦是否支援CUDA

  • 驗證電腦是否有一個可以支援CUDA的GPU
    在ubuntu的終端中輸入命令:
$ lspci | grep -i nvidia 

顯示出你的NVIDIA GPU版本資訊,筆者結果為
01:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 970] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GM204 High Definition Audio Controller (rev a1)

CUDA的官網檢視自己的GPU版本是否在CUDA的支援列表中

https://developer.nvidia.com/cuda-gpus
  • 驗證Linux版本是否支援 CUDA(Ubuntu 16.04)
    輸入命令:
$ uname -m && cat /etc/*release

輸出結果為:
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
...

第2步:下載安裝包

如果以上的檢查全部通過,恭喜你,可以進行以下操作。

  • 在官網下載自己需要安裝的cuda版本 *.run 軟體
https://developer.nvidia.com/cuda-toolkit-archive
注意:
	為了避免無圖形安裝時的無法找到安裝包,建議將安裝包命名為cuda.r,並放置在個人目錄,筆者的為 /home/hirah
  • 驗證安裝包完整性
http://developer.nvidia.com/cuda-downloads/checksums
$ md5sum <file>

如果輸出結果和官方網址提供一致即可。

第3步:準備安裝

1 ). 驗證安裝基礎環境

  • 更新系統:
sudo apt-get update
sudo apt-get dist-upgrade
  • 驗證系統是否安裝gcc
    輸入命令:
 $  gcc --version      

輸出結果為:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
...

若未安裝輸入命令:

sudo apt-get install build-essential

2 ). 取消 nouveau(會和NVIDIA kernel module衝突)

a ). 輸入命令:

$  lsmod | grep nouveau

如果有輸出則代表nouveau正在載入,需要配置禁掉nouveau。
nouveau禁用方法:
a )、在/etc/modprobe.d中建立檔案blacklist-nouveau.conf
輸入命令:

$  sudo vim /etc/modprobe.d/blacklist-nouveau.conf

在檔案中輸入一下內容:

blacklist nouveau
options nouveau modeset=0

b )、執行:

$ sudo update-initramfs -u

c )、再執行:

$  lsmod | grep nouveau

注意:

  • 若無內容輸出,則禁用成功;
  • 若仍有內容輸出,請檢查a、b、c操作,並重覆上述操作。
    e ) 、重啟:
$ sudo reboot

3 ). 獲取Kernel Source

  • 驗證系統是否安裝kernel source 和 package development
    a )、安裝kernel source
$ sudo apt-get install linux-source

b )、檢視正在執行的系統核心版本:
輸入命令:

$  uname -r 

輸出結果為:

4.15.0-38-generic

c )、在終端中輸入:

$  sudo apt-get install linux-headers-$(uname -r)

結果顯示:
......
升級了 0 個軟體包,新安裝了 0 個軟體包,要解除安裝 0 個軟體包,有 0 個軟體包未被升級。

表示系統裡已經有了,不用重複安裝。

若以上各項驗證檢查均滿足要求,便可進行下面的正式安裝過程。

第4步:正式安裝

1 ). 處理之前安裝版本(會產生衝突,導致安裝失敗)

注意:

  • 如果之前未安裝過任何版本nvidia驅動,請跳過;
  • 如果你之前安裝過其他版本,請執行下面操作;
*** 型別一: .run檔案安裝執行 ***
解除安裝 Toolkit 執行檔案:
$ sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
解除安裝NVIDIA驅動:
$ sudo /usr/bin/nvidia-uninstall

*** 型別二:RPM、Deb檔案安裝執行 ***
$ sudo apt-get --purge remove <package_name> 

2). 重啟電腦,安裝新版本

$ sudo reboot

a ). 進入登入介面,不要登入進入桌面(否則可能會失敗),直接按Ctrl+Alt+F1進入命令列介面,筆者顯示

Ubuntu16.04.5 LTS pc tty1
pc login:
輸入使用者名稱,回車;
passwd
輸入密碼,回車;

b ). 關閉圖形介面
輸入命令:

$ sudo service lightdm stop 

c ). 安裝

  1. 切換到cuda安裝檔案的路徑:
    輸入命令:
$ cd
$ sudo chmod +777 ./<cuda_fliename>
$ sudo ./<cuda_filename>
  1. 安裝按提示進行
* 1) Do you accept the previously read EULA?
	 accept/decline/quit: accept
* 2) Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
	(y)es/(n)o/(q)uit: yes
	
* 3) Do you want to install OpenGL libraries?
	(y)es/(n)o/(q)uit: no
注意:如果電腦是雙顯,且主顯是非NVIDIA的GPU在工作需要選擇no,否則可以yes

* 4) Do you want to run nvidia-xconfig?
	(y)es/(n)o/(q)uit: n
注意:如果電腦是雙顯,且主顯是非NVIDIA的GPU在工作需要選擇no,否則可以yes

* 5) Install the CUDA 10.0 Toolkit?
	 (y)es/(n)o/(q)uit: y
* 6) Enter Toolkit Location
	 [default is /usr/local/cuda-10.0 ]:
* 7) Do you want to install a symbolic link at /usr/local/cuda?
	 (y)es/(n)o/(q)uit: y
* 8) Install the CUDA 10.0 Samples?
	 (y)es/(n)o/(q)uit: y
* 9) Enter CUDA Samples Location
	 [default is /home/hirah ]:
  1. 安裝成功後,會顯示
==========
= summary =
==========
Driver: Installed
Toolkit: Install in /usr/local/cuda-10.0
samples: Install in /home/hirah,(but missing recommended libraries)

表示安裝成功,否則會顯示failed。

  1. 重新啟動圖形化介面,輸入命令:
$ sudo service lightdm start

返回到圖形化登入介面。
如果能夠成功登入,則表示不會遇到迴圈登入的問題,基本說明CUDA的安裝成功了。

** 注意:**
如果你遇到了重複登陸情況,首先回憶是否在安裝openGL時可能不注意選擇了yes,請解除安裝cuda,然後重灌。
解除安裝方法:

  1. 在登陸介面狀態下,按Ctrl + Alt + f1,進入文字使用者介面
  2. 登入輸入命令:
$ sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
$ sudo /usr/bin/nvidia-uninstall
$ reboot
  1. 重新安裝*.run,再次安裝時請一定留意,在提示是否安裝OpenGL時,如果是雙顯示卡應該選則no。

第5步:檢查安裝狀態

1) 檢查Device Node Verification。

輸入命令:

$ sudo reboot
$ ls /dev/nvidia*

可能出現a、b兩種結果,請對號入座。

  1. 若結果顯示
/dev/nvidia0      /dev/nvidiactl      /dev/nvidia-modeset

顯示出類似的資訊,應該有三個(包含一個類似/dev/nvidia-modeset的檔案),則安裝成功。

  1. 若結果顯示
ls: cannot access/dev/nvidia*: No such file or directory
或
/dev/nvidia0     /dev/nvidiactl

沒有/dev/nvidia-modeset,即檔案顯示不全。
官方安裝指導的解決方案:

a ). 新增一個啟動指令碼
輸入命令

$ sudo nano /etc/rc.local

如果你是第一次開啟這個檔案,它應該是空的(除了一行又一行的#註釋項外)。這檔案的第一行是

#!/bin/sh -e

把-e去掉(這步很重要,否則它不會載入這文字的內容)
b ). 然後把下列內容複製到其中,儲存退出。

#!/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

c ). 重啟
輸入:

$ ls /dev/nvidia*

應該能直接看到/dev目錄下的三個nvidia的檔案:/dev/nvidia0 /dev/nvidiactl /dev/nvidia-modeset

2) 設定環境變數

a ). 終端中輸入

$ sudo gedit /etc/profile

b ). 在開啟的檔案末尾,新增以下兩行。
64位系統:

export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

儲存檔案,並重啟。
c ). 重啟電腦,檢查上述的環境變數是否設定成功。

  1. 驗證驅動版本
    輸入命令:
$ cat /proc/driver/nvidia/version
結果顯示:
NVRM version: NVIDIA UNIX x86_64 Kernel Module  410.48  Thu Sep  6 06:36:33 CDT 2018
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 
  1. 驗證CUDA Toolkit
    敲入
$ nvcc -V       
結果顯示:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

如果是這樣的:

The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit

可能是環境配置沒有成功,請重複上述步驟2。

  1. 執行示例檔案
$ cd ~/NVIDIA_CUDA-10.0_Samples
$ make -j8
$ cd bin/x86_64/linux/release/
$ ./deviceQuery
顯示結果為:
...
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.0, CUDA Runtime Version = 10.0, NumDevs = 1
Result = PASS
$ ./bandwidthTest 
顯示結果為:
...
Result = PASS

總結