ProxmoxVEでUbuntu18.04 + KVM + CUDAな環境を作る


ProxmoxVEでPCI-Passthrouphはできる状態になっている前提で進める。
以下参照
https://qiita.com/disksystem/items/0879f379e2bbc7a08675

PART1 VMの作成

UbuntuServer18.04 LTSをインストールする。
https://ubuntu.com/download/server

Windowsのときと同じようにPCI-Passthroughできる状態のVMを用意する


グラフィックカードは「VMWare互換」を選択する。noVNCでの表示不具合が少ない。BIOSはOVMF、マシンはq35。PCI-Passthroughすると管理画面からUbuntuの画面が見えなくなるので、一旦コンソールで見える状態でUbuntuのインストール作業を行い、SSHでアクセスできる状態まで完了してからGPU-Passthroughを有効化する


SSDの場合、Trimの問題があるのでDiscardにチェックを入れると良いかもしれない。

CPUの種別は「host」


RNGの追加。

PART2 UbuntuServerのインストール

「English」

「Japanese」

SSHのインストールを行うかどうかの選択肢が表示されるのでチェックを入れる


ISOファイルを読まないように管理画面側で変更してからENTERする

再起動後にSSHでログインできるか確認する

QEMU-Agentをインストールする。管理画面からシャットダウン、IPの確認等できるようになる

$ sudo apt install qemu-guest-agent

その他、キー配列・タイムゾーンを設定する

sudo localectl set-keymap jp106
sudo timedatectl set-timezone Asia/Tokyo


管理画面からシャットダウンをできることを確認する

PART3 PCI-Passthroughを有効化

GPUを取り付け

/etc/pve/qemu-server/110.confにVMの追加修正

# 追加行。必須なのは「host」「hv_vendor_id=whatever」「kvm=off」あとはパフォーマンス調整のおまけ
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=whatever,kvm=off,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,smep=off,-pcid,-spec-ctrl,-ssbd,-hv-evmcs,+aes'

# 変更1(Windowsでグラボ経由でのオーディオに不具合があったため念の為。q35でも動くは動くはず)
# before
machine: q35
# after
machine: pc-q35-3.1

# 変更2(RyzenなどCPUに内蔵GPUがない場合のみ)
# before
hostpci0: 26:00,pcie=1,x-vga=1
# after
hostpci0: 26:00,pcie=1,x-vga=1,romfile=Z_1050Ti_Mod.rom

起動してSSHでアクセス。GPUを認識しているか確認

$ lspci | grep NVIDIA
01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)

PART4 CUDAのインストール

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt update
sudo apt -y install cuda-drivers cuda
echo 'export PATH="/usr/local/cuda/bin:$PATH"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' >> ~/.bashrc
sudo reboot

再起動後にCUDAが動作しているか確認する

$ nvidia-smi

Mon Apr 13 06:51:55 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64.00    Driver Version: 440.64.00    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 105...  On   | 00000000:01:00.0 Off |                  N/A |
| 30%   19C    P8    N/A /  75W |      1MiB /  4040MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

おしまい