Ubuntu 16.04 安裝 CUDA10.1 (解決循環登錄的問題)

0. 前言linux

  • 這裏直接用 cuda安裝文件同時安裝 NVIDIA 驅動和 CUDA,沒有單獨安裝更高版本的 NVIDIA 驅動;
  • 此安裝是在 Intel 集顯下的圖形化界面,即用集顯作 display,用 NVIDIA 獨顯作計算;循環登錄問題是由於安裝時沒有加 --no-opengl-libs 參數,默認安裝了 OpenGL,覆蓋掉了原來顯卡的 OpenGL 庫
  • 若事先單獨安裝了 NVIDIA 驅動,且在 NVIDIA 顯卡下的圖形化界面安裝 cuda(即用 NVIDIA 顯示同時作顯示和計算),則在安裝 cuda 時,取消安裝 NVIDIA 驅動的選項,最好也加上 --no-opengl-libs 參數
  • 關於本身的電腦 GPU,Linux內核等是否知足安裝 cuda的要求,請參考官方安裝指南

 

1. 下載安裝文件和官方指南ubuntu

登錄官網 https://developer.nvidia.com/cuda-downloads,下載相應版本的安裝文件,注意安裝文件類型選擇 runfile(local)vim

     

同時下載官方的安裝指南,便於參考spa

         

 

2. 禁用 nouveau 驅動(nouveau是 ubuntu16.04 默認安裝的第三方開源驅動,安裝cuda會跟nouveau衝突,須要先禁用)命令行

  •  先查看 nouveau 是否被禁用,輸入如下命令,如有輸出,則說明 nouveau 在運行中
lsmod | grep nouveau
  • 修改 /etc/modprobe.d/blacklist.conf 文件
sudo vim /etc/modprobe.d/blacklist.conf

在末尾加入code

blacklist nouveau
options nouveau modeset=0
  • 執行如下命令,並重啓
sudo update-initramfs –u
  • 再執行如下命令,查看 nouveau 是否已被禁用,若無任何輸出,說明禁用成功
lsmod | grep nouveau

 

 3.  文本命令行模式運行 runfile 文件安裝CUDAblog

  • 按 Ctrl + Alt + F1 鍵進入文本命令行模式,輸入用戶名和密碼
  • 先關閉圖形化界面
sudo service lightdm stop

cd 到 runfile 文件保存的路徑,進行安裝(重點!!! 要麼在此處加上 --no-opengl-libs 選項,要麼在後面經過交互式界面進行手動選擇ci

sudo sh cuda_10.1.168_418.67_linux.run --no-opengl-libs

執行命令後,稍等一下子,會出現交互界面,輸入 accept,過一下子會出來選擇頁面進行手動設置(如是否安裝 nvidia 驅動及驅動設置),最後選擇 installubuntu16.04

注意:若不當心安裝了 OpenGL,則後面會遇到循環登錄的問題,緣由就是 NVIDIA顯卡 的 OpenGL 庫覆蓋了當前 Intel 顯卡的庫,解決辦法是再登入到文本命令行模式,用如下命令先卸載 cuda 和 NVIDIA驅動,再按正確的步驟從新安裝it

sudo /usr/local/cuda-10.1/bin/cuda-uninstaller
sudo /usr/bin/nvidia-uninstall
  •  若能從新進入圖形化界面,則基本安裝成功
sudo service lightdm start

 

4. 檢查 Device Node Verification

ls /dev/nvidia*

若結果顯示 /dev/nvidia0      /dev/nvidiactl      /dev/nvidia-uvm,則說明安裝成功;若顯示相似 No such file or directory等信息,則進行以下操做

sudo vim /etc/rc.local

第一行爲 #!/bin/sh -e,把 -e 選項去掉,而後把下面的文本複製到 exit 0 以前,保存退出

/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

重啓後,再次輸入如下命令,此時應該會出現 /dev/nvidia0   /dev/nvidiactl    /dev/nvidia-uvm,說明安裝成功

ls /dev/nvidia*

 

5. 設置環境變量,寫入 /etc/profile 文件

sudo vim /etc/profile

在最後加入兩行(64位系統爲lib64,32位系統爲lib)

export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

重啓,檢查環境變量是否設置成功

  • 驗證驅動版本
cat /proc/driver/nvidia/version 
  • 驗證CUDA Toolkit
nvcc -V

 

6. 編譯 cuda 提供的 samples

cd /home/xxx/NVIDIA_CUDA-10.1_Samples
make

等待一段時間,編譯 成功後,二進制文件會存放在 NVIDIA_CUDA-10.1_Samples/bin 中,執行下面的二進制文件,看是否成功

cd /home/lxxx/NVIDIA_CUDA-10.1_Samples/bin/x86_64/linux/release
./deviceQuery

./bandwidthTest

若出現如下信息,則說明成功

相關文章
相關標籤/搜索