Installation einer GPU

Wenn eine GPU einer VM bereits durch einen SPACI Admin zugewiesen wurde, müssen auf der VM noch Treiber und entsprechende Toolkits installiert werden.

Installation NVIDIA Treiber

Für die Installation ist eine CUDA-fähige Grafikkarte, wie etwa NVidia A100, erforderlich. Zudem werde der vorinstallierte Grid-Treiber benötigt. Sollte er überschrieben worden sein, kann er hier erneut heruntergeladen werden. Nach dem Download sollten alle CUDA- und NVIDIA-Pakete vom System entfernt und die virtuelle Maschine neugestartet werden:

sudo apt-get purge 'cuda-*' -y
sudo apt-get purge 'nvidia-*' -y
sudo apt autoremove
sudo reboot

Anschließend kann der heruntergeladene Grid-Treiber installiert werden, für Ubuntu Maschinen ist die Installation von einigen Ubuntu-Tools erforderlich:

sudo apt install build-essential
chmod +x NVIDIA-Linux-<Driver Version>-grid.run
sudo  ./NVIDIA-Linux-<Driver Version>-grid.run --dkms
sudo reboot

Nach der Neuinstallation kann die erfolgreiche Installation mit dem Befehl nvidia-smi überprüft werden. Es sollten eine Statusmeldung ähnlich der folgenden angezeigt werden:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.105.17   Driver Version: 525.105.17   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|

Im nächsten Schritt muss nun die vGPU lizenziert werden, dazu muss folgender token heruntergeladen und in den nvidia-grid Systemordner verschoben werden:

sudo -i
cd /etc/nvidia/ClientConfigToken
wget https://cloud.uni-koblenz.de/s/Pk9mp9zrHEBTS6m/download/client_configuration_token_09-21-2022-14-04-00.tok
systemctl restart nvidia-gridd

Es kann einige Minuten dauern bis die Lizenz vom Nvidia-Lizenzserver abgerufen wurde. Mittels sudo nvidia-smi -q | grep License lässt sich der Status der Lizenzierung abfragen:

    vGPU Software Licensed Product
        License Status                    : Licensed (Expiry: 2023-11-14 10:22:34 GMT)

Zu beachten ist, dass die Lizenz jeden Tag erneuert wird, bis zum endgültigen Ablaufdatum vom 23.11.2026!

Installation CUDA

Zur Installation von CUDA sollte die Verwendung von apt-get (bspw. sudo apt-get install nvidia-cuda-dev) vermieden werden, da dies zum Überschreiben des Grid-Treibers führen kann.

Stattdessen sollten die folgenden Schritte vorgenommen werden:

  1. Mit folgedem Befehl die kompatible CUDA Version identifizieren:
nvidia-smi 
  1. Unter https://developer.nvidia.com/ die kompatible run-file für das CUDA-Toolkit herunterladen (die Toolkit-Versionen sind unter https://developer.nvidia.com/cuda-toolkit-archive zu finden).

    Achtung: Die CUDA Version muss mit der zuvor installierten Treiberversion übereinstimmen. Siehe hier zum Finden der korrekten Version. Z.B. für den Treiber 525.x.x muss CUDA 12.0 installiert werden. Weitere Parameter können wie folgt herausgefunden werden:

    • Operating System: Linux
    • Architecture: Über den Befehl lscpu identifizieren
    • Distribution: Über den Befehl lsb_release -a identifizieren
    • Version: Über den Befehl lsb_release -a identifizieren
    • Installer Type: runfile (local)
  2. Die heruntergeladene CUDA run-file ausführbar machen und installieren. Während der Installation sollten der mitgelieferte Treiber unbedingt abgewählt, um zu verhindern, dass der Grid-Treiber überschrieben wird. (Die Option --override ermöglicht die Installation, auch wenn bestimmte Bedingungen wie Compiler-Versionen nicht den Vorgaben entsprechen.)
chmod 744 cuda_<CUDA Version>.<Driver Version>_linux.run
sudo sh cuda_<CUDA Version>.<Driver Version>_linux.run --override --librarypath=/usr/local/cuda-<CUDA Version>
  1. CUDA zu den Umgebungsvariablen hinzufügen, um die CUDA-Tools und Bibliotheken verwenden zu können. Z.B. in die .profile Datei im Homeverzeichnis:
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
source .bashrc