Przewodnik po podłączaniu fizycznej karty graficznej do maszyny wirtualnej na hoście Hyper-V

Przewodnik po podłączaniu fizycznej karty graficznej do maszyny wirtualnej na hoście Hyper-V

Karta graficzna (GPU) może być potrzebna w maszynie wirtualnej do zadań takich jak OpenGL, Direct3D i CUDA. W takim przypadku zazwyczaj używamy emulowanej karty graficznej, która nie jest tak dobra jak dedykowana karta graficzna. Dlatego w tym poście nauczymy się, jak podłączyć fizyczną kartę graficzną do maszyny wirtualnej na hoście.

Jak przekazać procesor graficzny przez Hyper-V?

Aby podłączyć fizyczną kartę graficzną do maszyny wirtualnej na hoście Hyper-V, użyjemy funkcji GPU Passthrough.

Przepustowość GPU to zaawansowana funkcja, która umożliwia przypisanie fizycznego GPU do maszyny wirtualnej. Funkcja ta jest szczególnie przydatna w aplikacjach takich jak gry lub renderowanie 3D, w których wymagana jest grafika o wysokiej wydajności. W tej konfiguracji maszyna wirtualna uzyskuje bezpośredni dostęp do fizycznej karty graficznej bez narzutu emulacji, co może znacznie poprawić wydajność grafiki. Domyślnie maszyny wirtualne w Hyper-V używają emulowanej karty graficznej, co może nie być wystarczające do wymagających zadań graficznych. Dzięki przepustowości GPU maszyna wirtualna może wykorzystać pełną moc fizycznego GPU, co umożliwia jej wydajną obsługę bardziej intensywnych obciążeń graficznych.

Jakie są wymagania systemowe dla funkcji GPU Passthrough?

Zanim przejdziemy do konfiguracji funkcji GPU Passthrough, upewnijmy się, że spełnione są następujące wymagania wstępne.

Wymagania sprzętowe

  • Musisz upewnić się, że Twój procesor obsługuje wirtualizację Intel-VT lub AMD-V.
  • Aby możliwe było korzystanie z funkcji PCI Passthrough, procesor musi obsługiwać jednostkę zarządzania pamięcią wejścia-wyjścia (IOMMU).
  • Twój procesor graficzny musi obsługiwać technologie wirtualizacji procesora graficznego, takie jak NVIDIA GRID lub AMD MxGPU. Technologie te są specyficzne dla poszczególnych dostawców. Wskaźniki sukcesu można poprawić, wykorzystując sprzęt klasy serwerowej. Starsze urządzenia, które polegają na przerwaniach PCI (INTx), nie są kompatybilne.
  • Wreszcie, Twój system powinien obsługiwać wirtualizację wejścia/wyjścia z jednym rdzeniem.

Wymagania programowe:

  • System operacyjny: Windows Server 2016 (lub nowszy) lub Windows 11/10.
  • Funkcje: Funkcja Hyper-V musi być włączona.
  • Generacja maszyny wirtualnej: Maszyna wirtualna powinna być drugiej generacji.
  • Sterowniki: Wszystkie sterowniki GPU powinny zostać zaktualizowane do najnowszej wersji.

Ograniczenia funkcji GPU Passthrough:

Jeśli chcesz używać funkcji GPU Passthrough, musisz unikać następującej konfiguracji.

  • Twoja maszyna wirtualna nie powinna używać pamięci dynamicznej.
  • Funkcja GPU Passthrough jest dostępna wyłącznie w najwyższych edycjach systemu Windows, takich jak Windows Server 2019 Datacenter.
  • Jeśli na hoście Hyper-V wdrożono Podsystem Windows dla systemu Linux, może wystąpić błąd maszyny wirtualnej z kodem 43.
  • Funkcje klastrowania, takie jak wysoka dostępność i migracja maszyn wirtualnych w czasie rzeczywistym, nie są obsługiwane.
  • Zapisywanie i przywracanie z punktami kontrolnymi maszyn wirtualnych nie jest obsługiwane.

Po spełnieniu wcześniej wymienionych wymagań możemy wykorzystać funkcję GPU Passthrough.

Podłącz fizyczną kartę graficzną do maszyny wirtualnej na hoście Hyper-V

Aby podłączyć fizyczną kartę graficzną do maszyny wirtualnej na hoście Hyper-V przy użyciu funkcji GPU Passthrough, wykonaj poniższe czynności.

  1. Włącz wirtualizację Intel-VT lub AMD-V
  2. Skonfiguruj komputer do obsługi GPU Passthrough
  3. Konfigurowanie funkcji GPU Passthrough dla systemu Windows 11/10
  4. Konfigurowanie funkcji GPU Passthrough dla systemu Windows Server

Porozmawiajmy o nich szczegółowo.

1] Włącz wirtualizację Intel-VT lub AMD-V

włącz lub wyłącz wirtualizację sprzętową

Jak wspomniano w wymaganiach wstępnych, naszym pierwszym krokiem powinno być włączenie wirtualizacji sprzętowej. Tak więc, jeśli używasz procesora Intel, powinieneś włączyć Intel-VT, a użytkownicy AMD powinni włączyć wirtualizację AMD-V.

Aby to zrobić, uruchom system BIOS, przejdź do opcji Konfiguracja > Technologia wirtualizacji, a następnie ustaw ją na Włączoną. Ponieważ te czynności dotyczą wyłącznie produktów HP, możesz przejść do powiązanego wpisu, aby dowiedzieć się, jak włączyć tę funkcję na swoim komputerze.

2] Skonfiguruj komputer pod kątem funkcji GPU Passthrough

Następnie musimy skonfigurować komputer hosta dla GPU Passthrough. Zaczęliśmy od włączenia Hardware Virtualization, jak wspomniano wcześniej. Następnie musimy się upewnić, że IOMMU jest włączony, a automatyczne punkty kontrolne są wyłączone.

Możesz więc sprawdzić powiązany przewodnik dotyczący włączania wirtualizacji sprzętowej, aby włączyć IOMMU , ale zwykle jest on domyślnie włączony. Możemy otworzyć PowerShell i uruchomić następujące zapytanie, aby sprawdzić, czy jest włączony.

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

Jeśli wyświetla się wartość True, funkcja jest włączona i możesz przejść do następnej konfiguracji, jeśli natomiast wyświetla się wartość False, musisz włączyć tę funkcję.

Teraz usuń wszystkie punkty kontrolne maszyny wirtualnej i wyłącz ją za pomocą poniższych poleceń.

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

Uwaga: zastąp zmienną NameOfVM rzeczywistą nazwą maszyny wirtualnej, którą możesz pobrać, uruchamiając poprzednie polecenie.

3] Skonfiguruj GPU Passthrough dla Windows 11/10

podłącz fizyczną kartę graficzną do maszyny wirtualnej na hoście Hyper-V

Najpierw dowiedzmy się, jak włączyć funkcję GPU Passthrough w systemach operacyjnych klienta Windows.

Aby sprawdzić, czy Twoja karta graficzna obsługuje funkcję GPU Passthrough, musisz uruchomić następujące polecenie.

Windows 11

Get-VMHostPartitionableGpu

Windows 10

Get-VMPartitionableGpu

Następnie musimy skopiować sterownik graficzny z klienta hosta do maszyny wirtualnej. Aby uprościć proces, zalecamy pobranie pliku ZIP z github.com i rozpakowanie go w dowolnym miejscu.

Aby uruchomić ten skrypt, musimy najpierw zezwolić na wykonanie skryptu za pomocą dwóch poniższych poleceń.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force

Ustaw-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Po uruchomieniu polecenia musisz uruchomić skrypt za pomocą następującego polecenia. Możesz je uruchomić przed i/lub po dodaniu maszyny wirtualnej do GPU Passthrough

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

Teraz uruchom poniższe polecenie, aby dodać maszynę wirtualną do funkcji GPU Passthrough.

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

Aby usunąć partycję GPU, uruchom polecenie – Remove-VMGpuPartitionAdapter -VMName <VMNAME>.

4] Skonfiguruj przepustowość GPU dla systemu Windows Server

Jeśli używasz systemu Windows Server, musisz uruchomić następujące polecenie w trybie podwyższonych uprawnień programu PowerShell, aby ustawić pamięć podręczną i limity dla 32-bitowej (3 GB w przypadku 32-bitowych systemów operacyjnych) przestrzeni MIMO.

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

Te limity definiują pamięć umożliwiającą maszynie wirtualnej dostęp do urządzenia. Użyj skryptu Machine Profile z learn.microsoft.com , aby ustawić dokładne limity MIMO. Dostosuj wartości, jeśli maszyna wirtualna wykazuje niedobór zasobów; 33280 MB jest potrzebne dla przestrzeni MIMO większej niż 32-bitowa.

Następnie musimy sprawdzić lokalizację urządzenia PCI Express. Aby to zrobić, uruchom następujące zapytania.

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

I

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*"})"; }

Musisz sprawdzić gdzie znajduje się Twój procesor graficzny, powinno to wyglądać mniej więcej tak: PCIROOT(0)#PCI(0200) .

Następnie wykonaj poniższe czynności.

  • Otwórz Menedżera urządzeń, rozwiń pozycję Karty graficzne, kliknij prawym przyciskiem myszy sterowniki graficzne i kliknij opcję Wyłącz urządzenie.
  • Uruchom następujące polecenie, aby odmontować sterownik GPU po zmianie adresu PCI.

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

  • Po zmianie adresu PCI i nazwy maszyny wirtualnej uruchom następujące polecenie, aby przypisać urządzenie GPU do maszyny wirtualnej.

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

  • Włącz maszynę wirtualną i sprawdź, czy w Menedżerze urządzeń znajduje się fizyczna karta graficzna.
  • Zainstaluj sterowniki karty graficznej ze strony NVIDIA lub AMD.

Jeśli chcesz przełączyć się z powrotem na maszynę hosta, wyłącz maszynę wirtualną i uruchom następujące zapytanie na urządzeniu hosta.

Remove-VMAssignableDevice -VMName VMNAME -LocationPath $locationPath

Następnie uruchom poniższe polecenie, aby ponownie podłączyć kartę graficzną do hosta Hyper-V.

Mount-VMHostAssignableDevice -LocationPath $locationPath

To wszystko!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *