Пропускание нескольких графических процессоров в виртуальную машину с помощью Hyper-V

Вопрос или проблема

Я следовал этому руководству, чтобы попытаться передать графические процессоры в виртуальную машину Hyper-V:

https://www.youtube.com/watch?v=XLLcc29EZ_8

В моей системе установлены два графических процессора NVIDIA 1080 Ti, и по какой-то причине только один из них работает полностью. Оба они отображаются в диспетчере устройств в виртуальной машине:

введите здесь описание изображения

Но в моем приложении, которое использует графические процессоры, отображается только один. Вот что я вижу в своей виртуальной машине Hyper-V:

введите здесь описание изображения

А вот что я вижу на хосте:

введите здесь описание изображения

Как и ожидалось, при попытке выполнить рендеринг с использованием GPU в виртуальной машине используется только один из двух графических процессоров.

Есть ли способ передать оба графических процессора в виртуальную машину вместо одного?

# Включить Hyper-V и связанные функции
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

# Включить директ-подключение GPU (если поддерживается вашим оборудованием)
# Замените 'PCI\VEN_XXXX&DEV_XXXX' идентификаторами поставщика и устройства вашего GPU
$gpu1DeviceId = 'PCI\VEN_XXXX&DEV_XXXX'
$gpu2DeviceId = 'PCI\VEN_YYYY&DEV_YYYY'
Add-WindowsFeature Hyper-V-PowerShell

# Создать новую виртуальную машину
New-VM -Name "VMName" -MemoryStartupBytes 4GB -BootDevice VHD -NewVHDPath "C:\Path\To\VM\VMName.vhdx" -NewVHDSizeBytes 50GB

# Добавить оба GPU в виртуальную машину
Add-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(XXXX)#XXX(XXXX)"
Add-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(YYYY)#YYY(YYYY)"

# Настроить виртуальную машину для передачи GPU
Set-VM -VMName "VMName" -AutomaticStopAction TurnOff -AutomaticStartAction StartIfRunning
Set-VMFirmware -VMName "VMName" -EnableSecureBoot Off

# Запустить виртуальную машину
Start-VM -VMName "VMName"

# Установить драйвера GPU внутри виртуальной машины

Ответ или решение

Пропуск нескольких GPU в виртуальную машину с использованием Hyper-V

Виртуализация с использованием Hyper-V дает возможность использовать ресурсы аппаратного обеспечения, такие как графические процессоры (GPU), для увеличения производительности виртуальных машин (VM). Однако, иногда при передаче нескольких GPU в виртуальную машину могут возникать сложности, как это было отмечено в вашем случае.

Проблема

На вашем оборудовании установлены два графических процессора NVIDIA 1080 Ti, но только один из них полностью функционирует в виртуальной машине. Вы уже предприняли шаги по настройки передачи через GPU с помощью PowerShell, однако возникли трудности в виде нераспознавания второго GPU вашим приложением, работающим в VM.

Решение

Для успешного выполнения передачи GPU в виртуальную машину Hyper-V убедитесь, что вы выполнили следующие шаги:

  1. Проверка оборудования:
    Убедитесь, что ваше оборудование поддерживает полное аппаратное ускорение и передачу I/O. Для NVIDIA требуется поддержка технологии SR-IOV (Single Root I/O Virtualization) и соответствующих драйверов.

  2. Настройка Hyper-V:
    Убедитесь, что Hyper-V активирован на вашем хосте, и что ваша версия Windows поддерживает все необходимые функции.

  3. Идентификация устройств:
    Замените PCI\VEN_XXXX&DEV_XXXX в скрипте на идентификаторы ваших GPU, доступные в диспетчере устройств. Убедитесь, что вы используете правильные идентификаторы для обоих графических процессоров.

  4. Присоединение GPU к VM:
    Следующий PowerShell-скрипт должен дополнительно проверить и убедиться, что оба GPU правильно добавлены к виртуальной машине:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
    
    $gpu1DeviceId = 'PCI\VEN_XXXX&DEV_XXXX'  # Ваш первый GPU
    $gpu2DeviceId = 'PCI\VEN_YYYY&DEV_YYYY'  # Ваш второй GPU
    
    Add-WindowsFeature Hyper-V-PowerShell
    
    New-VM -Name "VMName" -MemoryStartupBytes 4GB -BootDevice VHD -NewVHDPath "C:\Path\To\VM\VMName.vhdx" -NewVHDSizeBytes 50GB
    
    # Добавление GPU
    Add-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(XXXX)#XXX(XXXX)"  # Для первого GPU
    Add-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(YYYY)#YYY(YYYY)"  # Для второго GPU
    
    Set-VM -VMName "VMName" -AutomaticStopAction TurnOff -AutomaticStartAction StartIfRunning
    Set-VMFirmware -VMName "VMName" -EnableSecureBoot Off
    
    Start-VM -VMName "VMName"
  5. Установка драйверов GPU:
    После запуска виртуальной машины, убедитесь, что вы установили соответствующие драйверы NVIDIA для обеих видеокарт в виртуальной машине. Это можно сделать, загрузив последние драйверы с официального сайта NVIDIA.

  6. Проверка настройки:
    После установки драйверов проверьте, распознаются ли оба GPU в операционной системе виртуальной машины и в приложении, использующем графику.

Дополнительные рекомендации

  • Logs и диагностика: Проверьте журналы событий Windows как на хосте, так и в виртуальной машине для получения информации о возможных ошибках или конфликтах.
  • Обновление BIOS: Убедитесь, что BIOS вашего компьютера обновлен до последней версии, так как некоторые настройки могут влиять на работу передачи функций.
  • Конфигурация виртуальной среды: Рассмотрите возможность использования Hyper-V на Windows Server, так как он предоставляет более расширенные функции управления виртуальными машинами и GPU.
  • Тестирование на другом ПО: Попробуйте использовать другое программное обеспечение для работы с GPU в вашей виртуальной машине, чтобы исключить возможность ошибки в текущем приложении.

Следуя этим шагам, вы должны получить возможность передать оба GPU в вашу виртуальную машину Hyper-V и использовать их одновременно для ваших приложений.

Оцените материал
Добавить комментарий

Капча загружается...