Jump to content

Виртуализация графического процессора

Виртуализация графического процессора относится к технологиям, которые позволяют использовать графический процессор для ускорения графики или приложений GPGPU, работающих на виртуальной машине . Виртуализация графического процессора используется в различных приложениях, таких как виртуализация настольных компьютеров , [1] облачные игры [2] и вычислительная наука (например, гидродинамическое моделирование). [3]

Реализации виртуализации графического процессора обычно включают один или несколько из следующих методов: эмуляцию устройства, удаленное взаимодействие API, фиксированную сквозную передачу и опосредованную сквозную передачу. Каждый метод представляет собой различные компромиссы в отношении соотношения консолидации виртуальных машин и графических процессоров , графического ускорения рендеринга , точности и поддержки функций , переносимости на другое оборудование, изоляции между виртуальными машинами, а также поддержки приостановки/возобновления и динамической миграции . [1] [4] [5] [6]

Удаленное взаимодействие через API [ править ]

При удаленном взаимодействии API или пересылке API вызовы графических API из гостевых приложений перенаправляются на хост посредством удаленного вызова процедуры , а затем хост выполняет графические команды от нескольких гостей, используя графический процессор хоста в качестве одного пользователя. [1] Это можно рассматривать как форму паравиртуализации в сочетании с эмуляцией устройства. [7] Этот метод позволяет распределять ресурсы графического процессора между несколькими гостями и хостом, когда графический процессор не поддерживает аппаратную виртуализацию. Концептуально он прост в реализации, но имеет ряд недостатков: [1]

  • При чистом удаленном взаимодействии API между виртуальными машинами существует небольшая изоляция при доступе к графическим API; изоляцию можно улучшить с помощью паравиртуализации
  • Производительность варьируется от 86% до всего лишь 12% от собственной производительности в приложениях, которые выполняют большое количество вызовов отрисовки на кадр.
  • большое количество точек входа API, а частичная реализация точек входа может снизить точность воспроизведения. Необходимо пересылать
  • Приложения на гостевых машинах могут быть ограничены несколькими доступными API.

Гипервизоры обычно используют общую память между гостем и хостом, чтобы максимизировать производительность и минимизировать задержку. Используя вместо этого сетевой интерфейс (распространенный подход в распределенном рендеринге ), стороннее программное обеспечение может добавить поддержку определенных API (например, rCUDA [8] для CUDA ) или добавить поддержку типичных API (например, VMGL [9] для OpenGL ), если он не поддерживается пакетом программного обеспечения гипервизора, хотя сетевая задержка и на сериализацию накладные расходы могут перевесить преимущества.

Поддержка приложений с помощью технологий удаленной виртуализации API
Технология Директ3D OpenGL Вулкан OpenCL DXVA
Ускорение виртуальной общей графики VMware (vSGA) [10] [11] 11 4.1 Да Нет Нет
Parallels Desktop для Mac 3D-ускорение [12] 11 [А] 3.3 [Б] Нет Нет Нет
Hyper-V RemoteFX Виртуальный графический процессор [14] [15] 12 4.4 Нет 1.1 Нет
Драйвер VirtualBox Guest Additions 3D [16] [17] [18] 8/9 [С] 2.1 [Д] Нет Нет Нет
Рабочая станция Thincast — виртуальное 3D [20] 12.1 Нет Да Нет Нет
QEMU / KVM с Virgil 3D [21] [22] [23] [24] Нет 4.3 Планируется Нет Нет
  1. ^ Завернуто в OpenGL с помощью WineD3D . [13]
  2. ^ Профиль совместимости.
  3. ^ Экспериментальный. Обернут в OpenGL с помощью WineD3D . [19]
  4. ^ Экспериментальный.

Исправлен проход [ править ]

При фиксированной сквозной передаче или сквозной передаче графического процессора (особый случай сквозной передачи PCI ) доступ к графическому процессору осуществляется непосредственно одной виртуальной машиной исключительно и постоянно. Этот метод обеспечивает 96–100 % производительности от исходной. [3] и высокая точность, [1] но ускорение, обеспечиваемое графическим процессором, не может распределяться между несколькими виртуальными машинами. Таким образом, он имеет самый низкий коэффициент консолидации и самую высокую стоимость, поскольку для каждой виртуальной машины с графическим ускорением требуется дополнительный физический графический процессор. [1]

Следующие программные технологии реализуют фиксированную сквозную передачу:

VirtualBox удалил поддержку сквозного подключения PCI в версии 6.1.0. [33]

QEMU/KVM [ править ]

Для некоторых моделей графических процессоров драйверы видеокарт Nvidia и AMD пытаются обнаружить, что виртуальная машина обращается к графическому процессору, и отключить некоторые или все функции графического процессора. [34] NVIDIA недавно изменила правила виртуализации для потребительских графических процессоров, отключив проверку в драйвере GeForce Game Ready 465.xx и более поздних версиях. [35]

NVIDIA может использовать различные архитектуры потребительских графических процессоров для настольных компьютеров и ноутбуков различными способами. Для настольных видеокарт сквозное подключение можно выполнить через KVM, используя либо устаревшую конфигурацию BIOS, либо конфигурацию UEFI BIOS через SeaBIOS и OVMF соответственно.

NVIDIA[editNVIDIA

Настольные компьютеры [ править ]

Для настольных компьютеров можно использовать большинство видеокарт, хотя для видеокарт с архитектурой Pascal или старше VBIOS видеокарты должен быть передан в виртуальную машину, если графический процессор используется для загрузки хоста. [36]

Ноутбуки [ править ]

Для ноутбуков драйвер NVIDIA проверяет наличие батареи через ACPI, а без батареи выдаст ошибку. Чтобы избежать этого, требуется acpitable, созданный из текста, преобразованного в Base64, для подмены батареи и обхода проверки. [36]

Паскаль и ранее [ править ]

Для видеокарт ноутбуков с процессором Pascal и старше пропускная способность сильно зависит от конфигурации видеокарты. Для ноутбуков, не имеющих NVIDIA Optimus, таких как варианты MXM, сквозная передача может быть достигнута традиционными методами. Для ноутбуков с включенным NVIDIA Optimus и рендерингом через встроенный графический буфер кадров процессора, а не через собственный, сквозная передача более сложна и требует удаленного дисплея или службы рендеринга, использования Intel GVT-g, а также интеграции VBIOS в конфигурацию загрузки, поскольку VBIOS присутствует в BIOS системы ноутбука, а не в самом графическом процессоре. Для ноутбуков с графическим процессором NVIDIA Optimus и выделенным кадровым буфером конфигурации могут отличаться. Если NVIDIA Optimus можно отключить, то сквозная передача возможна традиционными способами. Однако, если Optimus является единственной конфигурацией, то, скорее всего, VBIOS присутствует в системном BIOS ноутбука, требуя тех же шагов, что и рендеринг ноутбука только на встроенном графическом буфере кадра, но возможен и внешний монитор. [37]

Опосредованная передача [ править ]

При опосредованной сквозной передаче устройств или полной виртуализации графического процессора аппаратное обеспечение графического процессора предоставляет контексты с диапазонами виртуальной памяти для каждого гостя через IOMMU , а гипервизор отправляет графические команды от гостей непосредственно на графический процессор. Этот метод представляет собой форму аппаратной виртуализации и обеспечивает почти нативный результат. [б] производительность и высокая точность. Если оборудование предоставляет контексты как полноценные логические устройства, гости могут использовать любой API. В противном случае API и драйверы должны будут управлять дополнительной сложностью контекстов графического процессора. Недостатком является то, что между виртуальными машинами может быть небольшая изоляция при доступе к ресурсам графического процессора. [1]

Следующие программные и аппаратные технологии реализуют опосредованную сквозную передачу:

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

Аппаратная поддержка опосредованной сквозной виртуализации
Продавец Технология видеокарт Выделенные семейства Интегрированные семейства графических процессоров
Сервер Профессиональный Потребитель
Нвидиа виртуальный графический процессор [46] СЕТКА , Тесла Рамка Нет
АМД MxGPU [42] [47] Сервер FirePro , Radeon Instinct Радеон Про Нет Нет
Интел ГВТ-г Бродвелл и новее

Эмуляция устройства [ править ]

Архитектуры графических процессоров очень сложны и быстро меняются, а их внутренние детали часто держатся в секрете. Как правило, невозможно полностью виртуализировать новые поколения графических процессоров, можно только старые и простые поколения. Например, PCem , специализированный эмулятор архитектуры IBM PC , может, среди прочего, эмулировать графическое устройство S3 ViRGE /DX, поддерживающее Direct3D 3, и 3dfx Voodoo2 , поддерживающее Glide . [48]

При использовании VGA или SVGA адаптера виртуального дисплея [49] [50] [51] гость может не иметь ускорения 3D-графики, обеспечивая лишь минимальную функциональность для доступа к машине через графический терминал. Эмулируемое устройство может предоставлять гостям только базовые режимы 2D-графики. Диспетчер виртуальных машин также может предоставлять общие реализации API с использованием программного рендеринга для включения приложений трехмерной графики на гостевой машине, хотя и на скоростях, которые могут составлять 3% от собственной производительности с аппаратным ускорением. [1] Следующие программные технологии реализуют графические API с использованием программного рендеринга:

См. также [ править ]

Примечания [ править ]

  1. Перейти обратно: Перейти обратно: а б Недоступно на VMware Workstation .
  2. ^ Intel GVT-g достигает 80–90% собственной производительности. [38] [39] Nvidia vGPU достигает 88–96% собственной производительности с учетом накладных расходов на гипервизор VMware. [40]

Ссылки [ править ]

  1. Перейти обратно: Перейти обратно: а б с д и ж г час Даути, Мика; Шугерман, Джереми (июль 2009 г.). Написано в Сан-Диего . «Виртуализация графического процессора в архитектуре размещенного ввода-вывода VMware» (PDF) . Обзор операционных систем ACM SIGOPS . 43 (3). Нью-Йорк : Ассоциация вычислительной техники : 73–82. дои : 10.1145/1618525.1618534 . ISSN   0163-5980 . S2CID   228328 . Проверено 10 сентября 2020 г.
  2. ^ Хун, Хуа-Цзюнь; Фань-Чан, Тао-Я; Ли, Че-Рунг; Чен, Куан-Та; Хуан, Чун-Ин; Сюй, Ченг-Синь (2014). Консолидация графических процессоров для облачных игр: мы уже там? . 13-й ежегодный семинар по сетевой и системной поддержке игр. Нагоя : Институт инженеров по электротехнике и электронике . стр. 1–6. дои : 10.1109/NetGames.2014.7008969 . ISBN  978-1-4799-6882-4 . ISSN   2156-8138 . S2CID   664129 . Проверено 14 сентября 2020 г.
  3. Перейти обратно: Перейти обратно: а б Уолтерс, Джон; Янг, Эндрю; Кан, Донг-Ин; Яо, Ке-Тиа; Кан, Микён; Краго, Стивен; Фокс, Джеффри (2014). «Производительность сквозной передачи графического процессора: сравнение KVM, Xen, VMware ESXi и LXC для приложений CUDA и OpenCL» . 7-я Международная конференция IEEE по облачным вычислениям . 7-я Международная конференция IEEE по облачным вычислениям. Анкоридж : Компьютерное общество IEEE . стр. 636–643. дои : 10.1109/ОБЛАКО.2014.90 . ISBN  978-1-4799-5063-8 . ISSN   2159-6190 . Проверено 13 сентября 2020 г.
  4. ^ Ю, Ханчен; Россбах, Кристофер (25 июня 2017 г.). Пересмотр полной виртуализации для графических процессоров (PDF) . ISCA -44 14-й ежегодный семинар по дублированию, деконструкции и разоблачению. Торонто . Проверено 12 сентября 2020 г.
  5. ^ Тиан, Кун; Донг, Яодзу; Каупертуэйт, Дэвид (июнь 2014 г.). «Решение для полной виртуализации графического процессора с опосредованной сквозной передачей» (PDF) . Материалы конференции USENIX 2014 г., посвященной ежегодной технической конференции USENIX (USENIX ATC'14) . Ежегодная техническая конференция USENIX . Филадельфия : USENIX . стр. 121–132. ISBN  978-1-931971-10-2 .
  6. ^ Готшлаг, Матиас; Хилленбранд, Мариус; Кене, Йенс; Штесс, Ян; Беллоза, Фрэнк (ноябрь 2013 г.). LoGV: Виртуализация GPGPU с низкими издержками (PDF) . 10-я Международная конференция по высокопроизводительным вычислениям . Чжанцзяцзе : Компьютерное общество IEEE . стр. 1721–1726. doi : 10.1109/HPCC.and.EUC.2013.245 . ISBN  978-0-7695-5088-6 . Проверено 16 сентября 2020 г.
  7. ^ Сузуки, Юсуке; Като, Шинпей; Ямада, Хироши; Коно, Кенджи (июнь 2014 г.). «GPUvm: почему бы не виртуализировать графические процессоры в гипервизоре?» (PDF) . Материалы конференции USENIX 2014 г., посвященной ежегодной технической конференции USENIX (USENIX ATC'14) . Ежегодная техническая конференция USENIX . Филадельфия : USENIX . стр. 109–120. ISBN  978-1-931971-10-2 . Проверено 14 сентября 2020 г.
  8. ^ Дуато, Хосе; Пенья, Антонио; Силла, Федерико; Фернандес, Хуан; Мэйо, Рафаэль; Кинтана-Орти, Энрике (декабрь 2011 г.). Включение ускорения CUDA на виртуальных машинах с помощью rCUDA (PDF) . 18-я Международная конференция по высокопроизводительным вычислениям . Международная конференция по высокопроизводительным вычислениям . Бангалор : Компьютерное общество IEEE . стр. 1–10. дои : 10.1109/HiPC.2011.6152718 . hdl : 2117/168226 . ISBN  978-1-4577-1951-6 . ISSN   1094-7256 . Проверено 13 сентября 2020 г.
  9. ^ Лагар-Кавилла, Орасио; Толя, Нирадж; Сатьянараянан, Махадев; Лара, Эяль (июнь 2007 г.). «Ускорение графики, независимое от VMM» (PDF) . Написано в Сан-Антонио . Материалы 3-й Международной конференции по виртуальным средам выполнения . ВЭЭ '07. Нью-Йорк : Ассоциация вычислительной техники . стр. 33–43. дои : 10.1145/1254810.1254816 . ISBN  978-1-59593-630-1 . Проверено 12 сентября 2020 г.
  10. Перейти обратно: Перейти обратно: а б Лантинга, Хилко. Развертывание графики с аппаратным ускорением с помощью VMware Horizon (Руководство). ВМваре . Проверено 12 сентября 2020 г.
  11. ^ визаак. «Примечания к выпуску VMware Workstation 16 Pro» . docs.vmware.com . Проверено 24 марта 2021 г.
  12. ^ «Настройки графики» . Parallels Desktop — Руководство пользователя (Руководство). Параллели .
  13. ^ Брайт, Питер (11 марта 2014 г.). «Valve выпускает переводчик Direct3D в OpenGL с открытым исходным кодом» . Арс Техника . Проверено 15 сентября 2020 г.
  14. ^ «Развертывание графических устройств с помощью RemoteFX vGPU» . Hyper-V на Windows Server (Вручную). Майкрософт . Проверено 13 сентября 2020 г.
  15. ^ «Планирование ускорения графического процессора в Windows Server» . Hyper-V на Windows Server (Вручную). Майкрософт . Проверено 15 сентября 2020 г.
  16. ^ «Аппаратное ускорение графики» . Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Оракл . Проверено 12 сентября 2012 г.
  17. ^ «Гостевые дополнения» . Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Оракл . Проверено 12 сентября 2020 г.
  18. ^ Ларабель, Майкл (19 декабря 2018 г.). «Производительность VirtualBox 6.0 3D/OpenGL с адаптером VMSVGA» . Фороникс . Проверено 15 сентября 2020 г.
  19. ^ Ларабель, Майкл (29 января 2009 г.). «VirtualBox получает ускоренную поддержку Direct3D» . Фороникс . Проверено 15 сентября 2020 г.
  20. ^ Привет! о рабочей станции Thincast - Блог FreeRDP
  21. ^ «Проект Virgil 3D GPU» . Гитхаб (проект). сайт freedesktop.org . Проверено 13 сентября 2020 г.
  22. ^ Эдж, Джейк (10 сентября 2014 г.). Virgil 3D: виртуальный графический процессор (статья). LWN.net . Проверено 13 сентября 2020 г.
  23. ^ Волльни, Герт (28 августа 2019 г.). «Вирглрендерер и состояние виртуализированных виртуальных миров» . Collabora Новости и блог . Проверено 15 сентября 2020 г.
  24. ^ Хоффманн, Герд (28 ноября 2019 г.). «Состояние и планы virtio GPU» . Проверено 15 сентября 2020 г.
  25. ^ Разработка графического процессора с помощью Parallels Workstation Extreme (PDF) (информационный документ). Параллели . 2010 . Проверено 13 сентября 2020 г.
  26. ^ «Развертывание графических устройств с использованием дискретного назначения устройств» . Hyper-V на Windows Server (Вручную). Майкрософт . Проверено 13 сентября 2020 г.
  27. Перейти обратно: Перейти обратно: а б «HDX 3D Про» . XenApp и XenDesktop 7.15 LTSR (Руководство). Ситрикс Системс . Проверено 15 сентября 2020 г.
  28. Перейти обратно: Перейти обратно: а б «Графический обзор» . Citrix Hypervisor 8.2 (Руководство). Ситрикс Системс . Проверено 15 сентября 2020 г.
  29. Перейти обратно: Перейти обратно: а б Руководство по настройке GVT-d . GitHub (Руководство) . Проверено 13 сентября 2020 г.
  30. Перейти обратно: Перейти обратно: а б с Ларабель, Майкл (4 мая 2014 г.). «Intel расширяет возможности виртуализации графики» . Фороникс . Проверено 13 сентября 2020 г.
  31. Перейти обратно: Перейти обратно: а б «Внедрение новых вариантов использования и рабочих нагрузок в облако с помощью технологии виртуализации графики Intel (Intel GVT-g)» (PDF) . Центр технологий Intel с открытым исходным кодом (флаер). Интел . 2016 . Проверено 14 августа 2020 г.
  32. Перейти обратно: Перейти обратно: а б Джайн, Сунил (4 мая 2014 г.). «Обновление виртуализации графики Intel» (статья). Интел . Проверено 13 сентября 2020 г.
  33. ^ «Журнал изменений для VirtualBox 6.1» . ВиртуалБокс . Корпорация Оракл . 10 декабря 2019 года . Проверено 12 сентября 2020 г.
  34. ^ «Проход PCI через OVMF — обнаружение виртуализации драйвера видеокарты» . Arch Linux Wiki (Вики) . Проверено 13 сентября 2020 г.
  35. ^ «Передача GeForce GPU для виртуальной машины Windows (бета-версия)» . Поддержка NVIDIA . 2021-03-30.
  36. Перейти обратно: Перейти обратно: а б «Проход PCI через OVMF — ArchWiki» . wiki.archlinux.org . Проверено 20 мая 2021 г.
  37. ^ Тянь, Лан (25 июня 2020 г.). «Проходное использование графических процессоров Intel и NVIDIA на ноутбуке Optimus без мультиплексора» .
  38. ^ Чжэн, Сяо (август 2015 г.). Медиа-облако на основе технологии виртуализации графики Intel (Intel GVT-g) и OpenStack (PDF) . Форум разработчиков Intel (слайд презентации). Сан-Франциско : Intel . Проверено 14 сентября 2020 г.
  39. ^ Ван, Чжэньюй (сентябрь 2017 г.). Полная виртуализация графического процессора методом опосредованной сквозной передачи (PDF) . XDC2017 (слайд презентации). Маунтин-Вью, Калифорния : Фонд X.Org . Проверено 14 сентября 2020 г.
  40. ^ Куркуре, Удай (12 октября 2017 г.). Сравнение производительности встроенного графического процессора с виртуализированным графическим процессором и масштабируемость виртуализированных графических процессоров для машинного обучения . VMware ВРУМ! Блог перформанса (статья). ВМваре . Эпизод 3 . Проверено 14 сентября 2020 г.
  41. ^ Руководство пользователя программного обеспечения виртуального графического процессора (Руководство). Нвидиа . Проверено 13 сентября 2020 г.
  42. Перейти обратно: Перейти обратно: а б Вонг, Тонни (28 января 2016 г.). Многопользовательский графический процессор AMD: аппаратная виртуализация графического процессора для полноценной работы на рабочей станции (PDF) (информационный документ). АМД . Проверено 12 сентября 2020 г.
  43. ^ Ван, Хунбо (18 октября 2018 г.). «Выпуск XenGT (Intel GVT-g для Xen) в третьем квартале 2018 г.» (пресс-релиз). Центр технологий открытого исходного кода Intel . Проверено 14 августа 2020 г.
  44. Перейти обратно: Перейти обратно: а б Руководство по настройке GVT-g . GitHub (Руководство) . Проверено 13 сентября 2020 г.
  45. ^ Ван, Хунбо (18 октября 2018 г.). «Выпуск KVMGT (Intel GVT-g для KVM) в третьем квартале 2018 г.» (Пресс-релиз). Центр технологий открытого исходного кода Intel . Проверено 14 августа 2020 г.
  46. ^ «Графические процессоры, поддерживаемые программным обеспечением NVIDIA Virtual GPU» . Нвидиа . Проверено 9 сентября 2020 г.
  47. ^ AMD FirePro серии S для виртуализации (PDF) (техническое описание). АМД . 2016 . Проверено 13 сентября 2020 г.
  48. ^ «Эмулируются системы/материнские платы» . PCem (Проект) . Проверено 26 октября 2020 г.
  49. ^ «Драйверы устройств VMware Tools» . Документация VMware Tools (Руководство). ВМваре . Проверено 12 сентября 2020 г.
  50. Перейти обратно: Перейти обратно: а б «Настройка виртуальных машин» . Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Оракл . Проверено 12 сентября 2020 г.
  51. ^ «Параметры отображения». Пользовательская документация QEMU . QEMU (Руководство) . Проверено 12 сентября 2020 г.
  52. ^ Лонг, Саймон (2013). Руководство по развертыванию графического ускорения виртуальных машин (PDF) (информационный документ). ВМваре . Проверено 14 сентября 2020 г.
  53. ^ «Ускоритель программного обеспечения OpenGL» . XenApp и XenDesktop 7.15 LTSR (Руководство). Ситрикс Системс . Проверено 15 сентября 2020 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8be331f0de17c05617ba59393f7e0eee__1713103380
URL1:https://arc.ask3.ru/arc/aa/8b/ee/8be331f0de17c05617ba59393f7e0eee.html
Заголовок, (Title) документа по адресу, URL1:
GPU virtualization - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)