將實體顯示卡連接到 Hyper-V 主機上的虛擬機器的指南

將實體顯示卡連接到 Hyper-V 主機上的虛擬機器的指南

您可能需要虛擬機器中的顯示卡 (GPU) 來執行 OpenGL、Direct3D 和 CUDA 等任務。在這種情況下,我們通常使用模擬顯示卡,其效能不如專用GP。因此,在這篇文章中,我們將學習如何將實體顯示卡連接到主機上的虛擬機器。

如何讓我的 GPU 通過 Hyper-V?

若要將實體顯示卡連接到 Hyper-V 主機上的虛擬機,我們將使用GPU 直通。

GPU 直通是一項進階功能,可讓您將實體 GPU 指派給虛擬機器。此功能對於遊戲或 3D 渲染等需要高效能圖形的應用程式特別有用。在此設定中,虛擬機器可以直接存取實體圖形適配器,而無需模擬開銷,這可以顯著提高圖形效能。預設情況下,Hyper-V 中的虛擬機器使用模擬顯示卡,這可能不足以滿足要求較高的圖形任務。透過 GPU 直通,虛擬機器可以充分利用實體 GPU 的能力,使其能夠高效處理更密集的圖形工作負載。

GPU 直通的系統需求是什麼?

在我們繼續設定 GPU 直通之前,讓我們確保滿足以下先決條件。

硬體需求

  • 您需要確保您的處理器支援Intel-VTAMD-V 虛擬化。
  • 對於 PCI 直通,您的處理器必須支援輸入輸出記憶體管理單元 (IOMMU)。
  • 您的 GPU 必須支援 GPU 虛擬化技術,例如NVIDIA GRID 或 AMD MxGPU。這些技術特定於各個供應商。透過利用伺服器級硬體可以提高成功率。依賴 PCI 中斷 (INTx) 的舊裝置不相容。
  • 最後,您的系統應該支援單一輸入/輸出虛擬化。

軟體需求:

  • 作業系統: Windows Server 2016(或更高版本)或Windows 11/10。
  • 特點:必須啟用 Hyper-V。
  • VM Generation:虛擬機器應為第 2 代。
  • 驅動程式:所有 GPU 驅動程式均應更新至最新版本。

GPU直通的限制:

如果要使用GPU Passthrough,必須避免以下配置。

  • 您的虛擬機器不應使用動態記憶體。
  • GPU 直通僅適用於最高 Windows 版本,例如 Windows Server 2019 Datacenter。
  • 如果在 Hyper-V 主機上部署適用於 Linux 的 Windows 子系統,則可能會出現代碼 43 的 VM 錯誤。
  • 不支援高可用性和即時虛擬機器遷移等叢集功能。
  • 不支援使用 VM 檢查點儲存和復原。

滿足前面提到的要求後,我們就可以利用GPU Passthrough了。

將實體顯示卡連接到 Hyper-V 主機上的 VM

若要使用 GPU 直通將實體顯示卡連接到 Hyper-V 主機上的 VM,請依照下列步驟操作。

  1. 啟用 Intel-VT 或 AMD-V 虛擬化
  2. 配置您的電腦以進行 GPU 直通
  3. 為 Windows 11/10 設定 GPU 直通
  4. 為 Windows Server 設定 GPU 直通

讓我們詳細談談它們。

1]啟用Intel-VT或AMD-V虛擬化

啟用或停用硬體虛擬化

正如先決條件中所提到的,我們的第一步應該是啟用硬體虛擬化。因此,如果您使用的是 Intel CPU,則應啟用 Intel-VT,而 AMD 用戶應啟用 AMD-V 虛擬化。

為此,請啟動至BIOS,前往“配置”>“虛擬化技術”,然後將其設置為“已啟用”,因為這些步驟是HP 獨有的,所以您可以轉到鏈接的帖子,了解如何為您的計算機啟用該功能。

2] 設定您的電腦進行 GPU 直通

接下來,我們需要為 GPU Passthrough 配置主機。如前所述,我們首先啟用硬體虛擬化。接下來,我們需要確保啟用 IOMMU 並停用自動檢查點。

因此,您可以查看有關啟用硬體虛擬化的連結指南來啟用 IOMMU,但它通常是預設啟用的。我們可以開啟 PowerShell 並執行以下查詢來檢查它是否已啟用。

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

如果顯示“True”,則功能已啟用,您可以繼續下一個配置,但如果顯示“False”,則需要啟用此功能。

現在,繼續刪除虛擬機器的所有檢查點,然後使用以下命令將其停用。

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

注意:將變數 NameOfVM 替換為您可以透過執行上一個命令取得的虛擬機器的實際名稱。

3]為Windows 11/10設定GPU直通

將實體顯示卡連接到 Hyper-V 主機上的 VM

首先,讓我們了解如何在 Windows 用戶端作業系統上啟用 GPU Passthrough。

您需要執行以下命令來檢查您的顯示卡是否支援 GPU Passthrough。

視窗11

Get-VMHostPartitionableGpu

Windows 10

Get-VMPartitionableGpu

接下來,我們需要將圖形驅動程式從主機用戶端複製到虛擬機器。為了簡化該過程,我們建議從github.com下載 ZIP 檔案並將其解壓縮到某個位置。

要執行此腳本,我們首先需要使用以下兩個命令允許腳本執行。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force

設定-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

運行命令後,您需要使用以下命令運行腳本。您可以在將虛擬機器新增至 GPU 直通之前和/或之後運行它

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

現在,執行以下命令將您的 VM 新增至 GPU 直通。

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

若要刪除 GPU 分割區,請執行 – Remove-VMGpuPartitionAdapter -VMName <VMNAME>

4]為Windows Server設定GPU直通

如果您使用的是Windows Server,則需要在PowerShell的提升模式下執行以下命令來設定32位元(32位元作業系統為3 GB)MIMO空間的快取和限制。

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

這些限制定義了允許虛擬機器存取設備的記憶體。使用learn.microsoft.com中的電腦設定檔腳本來設定準確的 MIMO 限制。若虛擬機器顯示資源不足,請調整數值;大於 32 位元的 MIMO 空間需要 33280 MB。

接下來,我們需要檢查 PCI Express 裝置的位置。為此,請執行以下查詢。

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

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

您需要查看 GPU 所在的位置,它應該類似於PCIROOT(0)#PCI(0200)

最後,請按照下面提到的步驟操作。

  • 打開裝置管理員,展開顯示適配器,右鍵單擊顯示驅動程序,然後按一下停用裝置。
  • 更改PCI位址後,執行下列命令卸載GPU驅動程式。

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

  • 修改PCI位址和虛擬機器名稱後,執行下列指令為虛擬機器指派GPU設備。

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

  • 開啟虛擬機器並在裝置管理員中檢查實體顯示卡。
  • 從 NVIDIA 或 AMD 網站安裝顯示卡驅動程式。

如果要切換回主機,請關閉虛擬機器並在主機裝置上執行下列查詢。

Remove-VMAssignableDevice -VMName VMNAME -LocationPath $locationPath

然後,執行下列命令將顯示卡連接回 Hyper-V 主機。

Mount-VMHostAssignableDevice -LocationPath $locationPath

就是這樣!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *