0%

Linux Ubuntu 20.04 Install from Scratch (Driver 515 + CUDA 11.1 + cuDNN)

最近趕著投稿paper,於是又架了一台sever來跑實驗,搞環境真的是最煩躁的一件事沒有之一,這次依然遇到很多問題,趁著記憶猶新趕緊記錄下來防止未來再度踩雷。

這次的安裝是整個OS打掉重灌,因此多了一些繁瑣的設定,至於環境版本配置單純follow其他可以順利跑的server。

Step 0. OS重灌

這次選用的是製作開機碟重灌,Ubuntu 20.04重灌已經非常人性化&防呆了,基本上照著步驟選好就可以,比較要注意的是第一次reboot要記得拔掉開機碟(會有畫面提醒)。

新增sudo user (optional)

若有多位使用者共用server的話可以先把user新增好:

1
sudo adduser ${USER_NAME} sudo

網路設定

server用的是學校分配的固定IP,因此要設定網路一下:

1
2
3
4
IP Address: 140.114.76.XXX
Netmask: 255.255.255.0
Gateway: 140.114.76.254
DNS: 140.114.63.1

安裝Openssh

建立ssh就可以遠端操作,平常也都是用VSCode的環境連回去寫code

1
2
sudo apt-get install openssh-server
sudo vim /etc/ssh/sshd_config # 安裝後修改以下config

sshd_config:
1
2
3
4
5
...
Port 22
PasswordAuthentication yes
PermitRootLogin yes
...

接著重啟服務並測試:
1
2
/etc/init.d/ssh restart # 重啟服務
sudo systemctl status ssh # 確認有綠字的active (running) 就成功囉

安裝成功後就可以透過其他設備ssh遠端連回server,若之前有連過同個IP會讓cmd或VSCode無法連線,要到遠端設備的 .ssh 資料夾下找到 known_hosts,並將這個IP的資訊整行刪除,刪除後再次連線就可以了。

Step 1. 安裝Driver

安裝NVIDIA Driver主要有兩種方式,第一種是用local .run file去安裝,但看網路上的教學大多都還要去禁用dm再重啟,在安裝介面也會有很多Yes/No問題,嘗試幾次無果,果斷改用Package Manager方式安裝,比較直觀且方便。

先確認是否有偵測到顯卡:

1
2
3
# 兩者皆可
lspci | grep -i VGA
lspci | grep -i nvidia

成功偵測到兩張顯卡

查看相容與建議的driver版本:

1
ubuntu-drivers devices

顯示可用版本

這邊選擇515版本安裝(請視CUDA版本相容安裝)

1
2
sudo apt-get install nvidia-driver-515
sduo reboot

安裝重啟後測試,若有看到GPU資訊框與對應driver就代表安裝成功囉。

1
nvidia-smi

Step 2. 安裝CUDA

CUDA的安裝採用官網建議的command,也可以選更新/更舊的CUDA,端看使用需求。

1
2
3
4
5
6
7
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda-repo-ubuntu2004-11-1-local_11.1.1-455.32.00-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-1-local_11.1.1-455.32.00-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-1-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

理論上來說,安裝過程中沒有出現太奇怪的error/warning message就可以了,但這邊我遇到最大的問題,出現以下err:

1
2
3
4
5
6
7
8
9
10
Errors were encountered while processing:
nvidia-dkms-460
cuda-drivers-460
cuda-drivers
cuda-runtime-11-2
nvidia-driver-460
cuda-11-2
cuda-demo-suite-11-2
cuda
E: Sub-process /usr/bin/dpkg returned an error code (1)

很明顯絕對沒有安裝成功🤣,試過很多方法,也瘋狂安裝不同的driver+CUDA版本組合仍然報錯,最後看到這篇,可能是因為kernel版本太新導致的問題,因此嘗試將kenel downgrade(5.15 → 5.8.0),最後終於成功安裝CUDA! 😭

Kernel downgrade的方法請參考這篇,這邊就不贅述,另外內文中提到的Grub,進入Grub方式為: 開機時狂按 F4

(後來想想,可能安裝更高版本的CUDA就可以解決kernel過新的問題~)

添加環境變數

CUDA安裝好後還需要添加以下環境變數:

1
sudo vim ~/.bashrc

.bashrc :
1
2
3
## 改為自己的CUDA版本
export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

修改後執行並測試,若有出現CUDA資訊代表安裝成功囉!
1
2
source ~/.bashrc
nvcc -V

兩個指令都有成功顯示代表安裝成功!

Step 3. 安裝cuDNN

cuDNN的安裝應該是最不會遇到問題的~ 只要把檔案丟對就ok了。

先到官網下載對應的版本,再follow官網文件的教學,基本上就大功告成啦!

1
2
3
4
tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

小小心得

其實一開始只是顯卡忘記插上電供🤣,不過有插到主機板上,讓系統還是有偵測到顯卡但 nvidia-smi 一直顯示 No devices were found.,試了各種方法結果只是硬體問題。因為過程中東改西改,反而圖形介面改不回來,雖然driver和CUDA都裝好了,不過抱持著不將就的心態再重灌一次,順便從原本的18.04升到20.04,好死不死又出現kernel版本過高的問題,折騰了四五天,最終還是順利的把問題解決了🥺🎉 最後一次重灌也盡可能將流程簡化,能不改config就不改config,一行指令能解決的事就不要用兩行,往往問題都只是來自一個小小(且白癡)的因素~

Reference