Anleitung zum Anschließen einer physischen Grafikkarte an eine virtuelle Maschine auf einem Hyper-V-Host

Anleitung zum Anschließen einer physischen Grafikkarte an eine virtuelle Maschine auf einem Hyper-V-Host

Sie benötigen möglicherweise eine Grafikkarte (GPU) in einer virtuellen Maschine für Aufgaben wie OpenGL, Direct3D und CUDA. In diesem Fall verwenden wir normalerweise eine emulierte Grafikkarte, die nicht so leistungsfähig ist wie eine dedizierte Grafikkarte. Daher erfahren wir in diesem Beitrag, wie man eine physische Grafikkarte an eine VM auf einem Host anschließt.

Wie leite ich meine GPU durch Hyper-V?

Um eine physische Grafikkarte an eine VM auf einem Hyper-V-Host anzuschließen, verwenden wir GPU-Passthrough.

GPU-Passthrough ist eine erweiterte Funktion, mit der Sie einer virtuellen Maschine eine physische GPU zuweisen können. Diese Funktion ist besonders nützlich für Anwendungen wie Spiele oder 3D-Rendering, bei denen leistungsstarke Grafiken erforderlich sind. In diesem Setup erhält die virtuelle Maschine direkten Zugriff auf den physischen Grafikadapter ohne den Emulationsaufwand, was die Grafikleistung erheblich verbessern kann. Standardmäßig verwenden virtuelle Maschinen in Hyper-V eine emulierte Grafikkarte, die für anspruchsvolle Grafikaufgaben möglicherweise nicht ausreicht. Mit GPU-Passthrough kann die virtuelle Maschine die volle Leistung der physischen GPU nutzen und so intensivere Grafik-Workloads effizient bewältigen.

Was sind die Systemanforderungen für GPU-Passthrough?

Bevor wir fortfahren und GPU-Passthrough einrichten, stellen wir sicher, dass die folgenden Voraussetzungen erfüllt sind.

Hardwareanforderungen

  • Sie müssen sicherstellen, dass Ihr Prozessor die Intel-VT- oder AMD-V-Virtualisierung unterstützt.
  • Für PCI-Passthrough muss Ihr Prozessor eine Input-Output Memory Management Unit (IOMMU) unterstützen.
  • Ihre GPU muss GPU-Virtualisierungstechnologien wie NVIDIA GRID oder AMD MxGPU unterstützen. Diese Technologien sind herstellerspezifisch. Die Erfolgsraten können durch den Einsatz von Server-Hardware verbessert werden. Ältere Geräte, die auf PCI-Interrupts (INTx) angewiesen sind, sind nicht kompatibel.
  • Schließlich sollte Ihr System Single Root Input/Output Virtualization unterstützen.

Softwareanforderungen:

  • Betriebssystem: Windows Server 2016 (oder höher) oder Windows 11/10.
  • Funktionen: Hyper-V muss aktiviert sein.
  • VM-Generation: Die virtuelle Maschine sollte der Generation 2 angehören.
  • Treiber: Alle GPU-Treiber sollten auf die neueste Version aktualisiert werden.

Einschränkungen von GPU-Passthrough:

Wenn Sie GPU-Passthrough verwenden möchten, müssen Sie die folgende Konfiguration vermeiden.

  • Ihre virtuelle Maschine sollte keinen dynamischen Speicher verwenden.
  • GPU-Passthrough ist nur in den höchsten Windows-Editionen verfügbar, beispielsweise Windows Server 2019 Datacenter.
  • Wenn das Windows-Subsystem für Linux auf dem Hyper-V-Host bereitgestellt wird, kann ein VM-Fehler mit Code 43 auftreten.
  • Clustering-Funktionen wie Hochverfügbarkeit und Live-VM-Migration werden nicht unterstützt.
  • Speichern und Wiederherstellen mit VM-Checkpoints werden nicht unterstützt.

Nachdem wir die zuvor genannten Anforderungen erfüllt haben, können wir GPU-Passthrough nutzen.

Anschließen einer physischen Grafikkarte an eine VM auf einem Hyper-V-Host

Um eine physische Grafikkarte mithilfe von GPU-Passthrough an eine VM auf einem Hyper-V-Host anzuschließen, befolgen Sie die folgenden Schritte.

  1. Aktivieren Sie die Intel-VT- oder AMD-V-Virtualisierung
  2. Konfigurieren Sie Ihren Computer für GPU-Passthrough
  3. GPU-Passthrough für Windows 11/10 einrichten
  4. GPU-Passthrough für Windows Server einrichten

Lassen Sie uns ausführlich darüber sprechen.

1] Aktivieren Sie die Intel-VT- oder AMD-V-Virtualisierung

Aktivieren oder Deaktivieren der Hardwarevirtualisierung

Wie in den Voraussetzungen erwähnt, sollte unser erster Schritt darin bestehen, die Hardwarevirtualisierung zu aktivieren. Wenn Sie also eine Intel-CPU verwenden, sollten Sie Intel-VT aktivieren, und AMD-Benutzer sollten die AMD-V-Virtualisierung aktivieren.

Starten Sie dazu das BIOS, gehen Sie zu „Konfiguration > Virtualisierungstechnologie“ und setzen Sie sie dann auf „Aktiviert“. Da diese Schritte exklusiv für HP sind, können Sie im verlinkten Beitrag nachlesen, wie Sie die Funktion für Ihren Computer aktivieren.

2] Konfigurieren Sie Ihren Computer für GPU-Passthrough

Als Nächstes müssen wir den Hostcomputer für GPU Passthrough konfigurieren. Wir haben, wie bereits erwähnt, mit der Aktivierung der Hardwarevirtualisierung begonnen. Als Nächstes müssen wir sicherstellen, dass IOMMU aktiviert und automatische Prüfpunkte deaktiviert sind.

Sie können also die verlinkte Anleitung zum Aktivieren der Hardwarevirtualisierung lesen, um IOMMU zu aktivieren , aber normalerweise ist es standardmäßig aktiviert. Wir können PowerShell öffnen und die folgende Abfrage ausführen, um zu prüfen, ob es aktiviert ist.

(Get-VMHost).IovSupport; (Get-VMHost).IovSupportReasons

Wenn dort „True“ steht, ist die Funktion aktiviert und Sie können mit der nächsten Konfiguration fortfahren. Wenn dort jedoch „False“ steht, müssen Sie diese Funktion aktivieren.

Löschen Sie nun alle Prüfpunkte Ihrer VM und deaktivieren Sie sie dann mit den folgenden Befehlen.

Get-VM Set-VM -Name NameOfVM -AutomaticStopAction TurnOff

Hinweis: Ersetzen Sie die Variable NameOfVM durch den tatsächlichen Namen der virtuellen Maschine, den Sie durch Ausführen des vorherigen Befehls abrufen können.

3] GPU-Passthrough für Windows 11/10 einrichten

Schließen Sie eine physische Grafikkarte an eine VM auf einem Hyper-V-Host an.

Lassen Sie uns zunächst lernen, wie GPU-Passthrough auf Windows-Clientbetriebssystemen aktiviert wird.

Sie müssen den folgenden Befehl ausführen, um zu überprüfen, ob Ihre Grafikkarte GPU-Passthrough unterstützt.

Windows 11

Get-VMHostPartitionableGpu

Windows 10

Get-VMPartitionableGpu

Als nächstes müssen wir den Grafiktreiber vom Host-Client auf die VM kopieren. Um den Vorgang zu vereinfachen, empfehlen wir, die ZIP-Datei von github.com herunterzuladen und irgendwo zu entpacken.

Um dieses Skript auszuführen, müssen wir zunächst die Skriptausführung mit den folgenden beiden Befehlen zulassen.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Nachdem Sie den Befehl ausgeführt haben, müssen Sie das Skript mit dem folgenden Befehl ausführen. Sie können es vor und/oder nach dem Hinzufügen Ihrer VM zu GPU Passthrough ausführen.

.\Update-VMGpuPartitionDriver.ps1 -VMName <VMNAME> -GPUName "AUTO"

Führen Sie jetzt den folgenden Befehl aus, um Ihre VM zu GPU-Passthrough hinzuzufügen.

Set-VM -VMName VMName -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1Gb -HighMemoryMappedIoSpace 32Gb Add-VMGpuPartitionAdapter -VMName <VMNAME>

Um die GPU-Partition zu entfernen, führen Sie – aus Remove-VMGpuPartitionAdapter -VMName <VMNAME>.

4] GPU-Passthrough für Windows Server einrichten

Wenn Sie Windows Server verwenden, müssen Sie den folgenden Befehl im erhöhten Modus von PowerShell ausführen, um Cache und Limits für 32-Bit-MIMO-Speicherplatz (3 GB für 32-Bit-Betriebssysteme) festzulegen.

Set-VM -Name VMNAME -GuestControlledCacheTypes $True -LowMemoryMappedIoSpace 3Gb -HighMemoryMappedIoSpace 33280Mb

Diese Grenzwerte definieren den Speicher, der der VM Zugriff auf das Gerät gewährt. Verwenden Sie ein Machine Profile-Skript von learn.microsoft.com , um genaue MIMO-Grenzwerte festzulegen. Passen Sie die Werte an, wenn die VM einen Ressourcenmangel anzeigt; für MIMO-Speicherplatz größer als 32 Bit werden 33280 MB benötigt.

Als nächstes müssen wir den Standort des PCI-Express-Geräts überprüfen. Führen Sie dazu die folgenden Abfragen aus.

Get-PnpDevice | Where-Object {$_.Present -eq $true} | Where-Object {$_.Class -eq "Display"}|select Name,InstanceId

UND

Get-PnpDevice -Class Display | ForEach-Object { Write-Output "$($_.FriendlyName) has a device id of $($_.DeviceId) and is located at $($_ | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths | Select-Object -ExpandProperty Data | Where-Object { $_ -like "PCIROOT*"})"; }

Sie müssen sehen, wo sich Ihre GPU befindet. Es sollte so etwas wie PCIROOT(0)#PCI(0200) sein .

Befolgen Sie abschließend die unten aufgeführten Schritte.

  • Öffnen Sie den Geräte-Manager, erweitern Sie Grafikkarten, klicken Sie mit der rechten Maustaste auf Ihre Grafikkartentreiber und klicken Sie auf Gerät deaktivieren.
  • Führen Sie den folgenden Befehl aus, um den GPU-Treiber nach dem Ändern der PCI-Adresse zu demontieren.

Dismount-VmHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(0200)"-Force

  • Führen Sie nach dem Ändern der PCI-Adresse und des VM-Namens den folgenden Befehl aus, um der VM ein GPU-Gerät zuzuweisen.

Add-VMAssignableDevice -VMName VMNAME -LocationPath "PCIROOT(0)#PCI(0200)"

  • Schalten Sie die VM ein und suchen Sie im Geräte-Manager nach einer physischen Grafikkarte.
  • Installieren Sie die Grafikkartentreiber von der NVIDIA- oder AMD-Website.

Wenn Sie zum Hostcomputer zurückkehren möchten, fahren Sie die VM herunter und führen Sie die folgende Abfrage auf dem Hostgerät aus.

Remove-VMAssignableDevice -VMName VMNAME -LocationPath $locationPath

Führen Sie dann den folgenden Befehl aus, um die Grafikkarte wieder mit dem Hyper-V-Host zu verbinden.

Mount-VMHostAssignableDevice -LocationPath $locationPath

Das ist es!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert