NVIDIA

CUDA Installation

Mit CUDA können NVIDIA Grafikkarten für parallele Berechnungen genutzt werden. Somit können zum Beispiel KI-Modelle und andere parallele Workloads mit erhöhter Performance auf NVIDIA Grafikkarten ausgeführt werden.

Unter Rocky 9 wird die Installation aus dem offiziellen NVIDIA-Repo empfohlen:

# Auf RHEL 9 wird das EPEL- und das CRB-Repo vorausgesetzt.
# Rocky 9:
dnf config-manager --set-enabled crb
dnf install epel-release

# Fedora 41:
dnf config-manager addrepo --from-repofile=https://developer.download.nvidia.com/compute/cuda/repos/fedora41/x86_64/cuda-fedora41.repo
# RHEL 9:
dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo

# NVIDIA bietet Meta-Packages in ihrem Repo an: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#meta-packages
# So wird mit dem `cuda` Paket die neueste Version des ganzen CUDA Stacks inklusive Treiberpakete installiert.
# Das `cuda-toolkit` Paket hingegen installiert nur CUDA selbst, Treiber müssen separat installiert werden (so können auf Wunsch headless/compute-only Driver installiert werden).
dnf install cuda

# In den meisten Fällen ist jetzt ein Reboot notwendig, damit die neuen Kernel Module des Treibers sauber geladen werden.
reboot

# Nach dem Reboot sollte `nvidia-smi` die installerte(n) Grafikkarte(n) erkennen und die erwarteten Treiber und CUDA Version auflisten.
nvidia-smi --list-gpus

Treiberinstallation

Falls CUDA ohne Treiber installiert wurde, muss dieser noch nachinstalliert werden bevor die Grafikkarten genutzt werden können. Der Treiber kann mit vollem Umfang, oder nur mit den benötigten Komponenten installiert werden: Übersicht der Komponenten

# Architektur der Grafikkarte für den richtigen Treiber verifizieren:
lspci | grep VGA

# Für den 'offenen' Treiber (Turing oder neuere Architekturen):
dnf install nvidia-open
# oder für compute-only (headless; keine Desktop-Komponenten):
dnf install nvidia-driver-cuda kmod-nvidia-open-dkms

# Für den proprietären Treiber (Maxwell, Pascal oder Volta Architekturen):
dnf install cuda-drivers
# oder für compute-only (headless; keine Desktop-Komponenten):
dnf install nvidia-driver-cuda kmod-nvidia-latest-dkms

# Reboot notwendig, damit die Kernel Module sauber geladen werden
reboot

# Nach dem Reboot sollte `nvidia-smi` die installerte(n) Grafikkarte(n) erkennen.
nvidia-smi --list-gpus

Container Toolkit

CUDA kann auch in Containern genutzt werden. Dafür ist die Installation und Konfiguration des nvidia-container-toolkit notwendig.

dnf install nvidia-container-toolkit

# Container-Device-Interface-Spezifikationen müssen generiert werden, damit Container auf die Grafikkarten zugreifen können.
# Die CDI-Specs müssen bei Änderungen der Hardware oder der CUDA Konfiguration neu generiert werden.
nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml

# `nvidia-ctk` sollte nun die erkannten Grafikkarten auflisten
nvidia-ctk cdi list

# Als Test kann `nvidia-smi --list-gpus` in einem temporären Container ausgeführt werden.
# Die Ausgabe sollte die gleiche sein, wie wenn `nvidia-smi --list-gpus` direkt auf dem Host ausgeführt wird.
podman run --rm --security-opt=label=disable --device=nvidia.com/gpu=all ubuntu nvidia-smi --list-gpus

Nouveau und NovaCore

Bestimmte Linux Distributionen liefern standardmässig OSS Treiberimplementationen (nouveau oder nova_core) für Nvidia Grafikkarten mit. Diese müssen deaktiviert werden, damit der Nvidia-Herstellertreiber die Grafikkarte nutzen kann.

Beispiel für Fedora:

cat > /etc/modprobe.d/nouveau-blacklist.conf << EOF
blacklist nouveau
EOF

cat > /etc/modprobe.d/nova_core-blacklist.conf << EOF
blacklist nova_core
EOF

# Backup und rebuild initramfs
cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-$(date --iso-8601=seconds).img
dracut --force --verbose /boot/initramfs-$(uname -r).img $(uname -r)

Mehrere GPUs

Sind mehrere Grafikkarten in einem System verbaut, so eignet sich nvtop als Diagnosetool um z.B. die Last auf den verschiedenen Karten oder welche Prozesse welche Karte nutzen herauszufinden. Im Gegensatz zu Herstellertools wie nvidia-smi hat nvtop den Vorteil, dass es mit Grafikkarten mehreren Herstellern funktioniert; so ist z.B. auf einen Blick die integrierte Intel-CPU-Grafikkarte und die dedizierte Nvidia Grafikkarte sichtbar. nvtop ist unter Fedora als Package aus den offiziellen Fedora-Repositories verfügbar.

Wenn der Open-Source Nvidia Treiber verwendet wird, kann switcherooctl verwendet werden um bestimmte Grafikprogramme auf bestimmten Grafikkarten auszuführen. switcherooctl ist auf den meisten Desktop Linux Distributionen vorinstalliert.

Built on 2025-07-14