Виртуализация графического процессора
Виртуализация графического процессора относится к технологиям, которые позволяют использовать графический процессор для ускорения графики или приложений 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 ), если он не поддерживается пакетом программного обеспечения гипервизора, хотя сетевая задержка и на сериализацию накладные расходы могут перевесить преимущества.
Технология | Директ3D | OpenGL | Вулкан | OpenCL | DXVA |
---|---|---|---|---|---|
Ускорение виртуальной общей графики VMware (vSGA) | 11 | 4.1 | Да | Нет | Нет |
Parallels Desktop для Mac 3D-ускорение | 11 [А] | 3.3 | Нет | Нет | Нет |
Hyper-V RemoteFX Виртуальный графический процессор | 12 | 4.4 | Нет | 1.1 | Нет |
Драйвер VirtualBox Guest Additions 3D | 8/9 | 2.1 | Нет | Нет | Нет |
Рабочая станция Thincast — виртуальное 3D | 12.1 | Нет | Да | Нет | Нет |
QEMU / KVM с Virgil 3D | Нет | 4.3 | Планируется | Нет | Нет |
Исправлен проход [ править ]
При фиксированной сквозной передаче или сквозной передаче графического процессора (особый случай сквозной передачи PCI ) доступ к графическому процессору осуществляется непосредственно одной виртуальной машиной исключительно и постоянно. Этот метод обеспечивает 96–100 % производительности от исходной. [3] и высокая точность, [1] но ускорение, обеспечиваемое графическим процессором, не может распределяться между несколькими виртуальными машинами. Таким образом, он имеет самый низкий коэффициент консолидации и самую высокую стоимость, поскольку для каждой виртуальной машины с графическим ускорением требуется дополнительный физический графический процессор. [1]
Следующие программные технологии реализуют фиксированную сквозную передачу:
- Виртуальное выделенное графическое ускорение VMware (vDGA) [10] [а]
- Рабочая станция Parallels Extreme [25]
- Назначение дискретных устройств Hyper-V (DDA) [26]
- Citrix XenServer Сквозной переход на графический процессор [27] [28]
- Зен [29] и QEMU / KVM [29] [30] с Intel GVT-d [31] [32] [30]
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]
Следующие программные и аппаратные технологии реализуют опосредованную сквозную передачу:
- VMware Virtual Shared Pass-Through графическое ускорение [а] с виртуальным графическим процессором NVIDIA [41] или AMD MxGPU [42]
- Общий графический процессор Citrix XenServer с виртуальным графическим процессором Nvidia, AMD MxGPU или Intel GVT-g [27] [28]
- Зен [43] [44] [30] и КВМ [45] [44] с Intel GVT-g [31] [32]
- Рабочая станция Thincast — функция виртуального 3D (Direct X 12 и Vulkan 3D API)
Хотя удаленное взаимодействие 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 с использованием программного рендеринга:
- Программный рендерер VMware SVGA 3D [52]
- VirtualBox VMSVGA Графический контроллер [50]
- Citrix XenServer OpenGL Software Accelerator [53]
- Платформа расширенной растеризации Windows
- Основной программный рендерер OpenGL
- Mesa Программный рендерер
- Swift Shader (реализует WebGPU ) программный рендеринг
См. также [ править ]
Примечания [ править ]
- ↑ Перейти обратно: Перейти обратно: а б Недоступно на VMware Workstation .
- ^ Intel GVT-g достигает 80–90% собственной производительности. [38] [39] Nvidia vGPU достигает 88–96% собственной производительности с учетом накладных расходов на гипервизор VMware. [40]
Ссылки [ править ]
- ↑ Перейти обратно: Перейти обратно: а б с д и ж г час Даути, Мика; Шугерман, Джереми (июль 2009 г.). Написано в Сан-Диего . «Виртуализация графического процессора в архитектуре размещенного ввода-вывода VMware» (PDF) . Обзор операционных систем ACM SIGOPS . 43 (3). Нью-Йорк : Ассоциация вычислительной техники : 73–82. дои : 10.1145/1618525.1618534 . ISSN 0163-5980 . S2CID 228328 . Проверено 10 сентября 2020 г.
- ^ Хун, Хуа-Цзюнь; Фань-Чан, Тао-Я; Ли, Че-Рунг; Чен, Куан-Та; Хуан, Чун-Ин; Сюй, Ченг-Синь (2014). Консолидация графических процессоров для облачных игр: мы уже там? . 13-й ежегодный семинар по сетевой и системной поддержке игр. Нагоя : Институт инженеров по электротехнике и электронике . стр. 1–6. дои : 10.1109/NetGames.2014.7008969 . ISBN 978-1-4799-6882-4 . ISSN 2156-8138 . S2CID 664129 . Проверено 14 сентября 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б Уолтерс, Джон; Янг, Эндрю; Кан, Донг-Ин; Яо, Ке-Тиа; Кан, Микён; Краго, Стивен; Фокс, Джеффри (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 г.
- ^ Ю, Ханчен; Россбах, Кристофер (25 июня 2017 г.). Пересмотр полной виртуализации для графических процессоров (PDF) . ISCA -44 14-й ежегодный семинар по дублированию, деконструкции и разоблачению. Торонто . Проверено 12 сентября 2020 г.
- ^ Тиан, Кун; Донг, Яодзу; Каупертуэйт, Дэвид (июнь 2014 г.). «Решение для полной виртуализации графического процессора с опосредованной сквозной передачей» (PDF) . Материалы конференции USENIX 2014 г., посвященной ежегодной технической конференции USENIX (USENIX ATC'14) . Ежегодная техническая конференция USENIX . Филадельфия : USENIX . стр. 121–132. ISBN 978-1-931971-10-2 .
- ^ Готшлаг, Матиас; Хилленбранд, Мариус; Кене, Йенс; Штесс, Ян; Беллоза, Фрэнк (ноябрь 2013 г.). LoGV: Виртуализация GPGPU с низкими издержками (PDF) . 10-я Международная конференция по высокопроизводительным вычислениям . Чжанцзяцзе : Компьютерное общество IEEE . стр. 1721–1726. doi : 10.1109/HPCC.and.EUC.2013.245 . ISBN 978-0-7695-5088-6 . Проверено 16 сентября 2020 г.
- ^ Сузуки, Юсуке; Като, Шинпей; Ямада, Хироши; Коно, Кенджи (июнь 2014 г.). «GPUvm: почему бы не виртуализировать графические процессоры в гипервизоре?» (PDF) . Материалы конференции USENIX 2014 г., посвященной ежегодной технической конференции USENIX (USENIX ATC'14) . Ежегодная техническая конференция USENIX . Филадельфия : USENIX . стр. 109–120. ISBN 978-1-931971-10-2 . Проверено 14 сентября 2020 г.
- ^ Дуато, Хосе; Пенья, Антонио; Силла, Федерико; Фернандес, Хуан; Мэйо, Рафаэль; Кинтана-Орти, Энрике (декабрь 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 г.
- ^ Лагар-Кавилла, Орасио; Толя, Нирадж; Сатьянараянан, Махадев; Лара, Эяль (июнь 2007 г.). «Ускорение графики, независимое от VMM» (PDF) . Написано в Сан-Антонио . Материалы 3-й Международной конференции по виртуальным средам выполнения . ВЭЭ '07. Нью-Йорк : Ассоциация вычислительной техники . стр. 33–43. дои : 10.1145/1254810.1254816 . ISBN 978-1-59593-630-1 . Проверено 12 сентября 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б Лантинга, Хилко. Развертывание графики с аппаратным ускорением с помощью VMware Horizon (Руководство). ВМваре . Проверено 12 сентября 2020 г.
- ^ визаак. «Примечания к выпуску VMware Workstation 16 Pro» . docs.vmware.com . Проверено 24 марта 2021 г.
- ^ «Настройки графики» . Parallels Desktop — Руководство пользователя (Руководство). Параллели .
- ^ Брайт, Питер (11 марта 2014 г.). «Valve выпускает переводчик Direct3D в OpenGL с открытым исходным кодом» . Арс Техника . Проверено 15 сентября 2020 г.
- ^ «Развертывание графических устройств с помощью RemoteFX vGPU» . Hyper-V на Windows Server (Вручную). Майкрософт . Проверено 13 сентября 2020 г.
- ^ «Планирование ускорения графического процессора в Windows Server» . Hyper-V на Windows Server (Вручную). Майкрософт . Проверено 15 сентября 2020 г.
- ^ «Аппаратное ускорение графики» . Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Оракл . Проверено 12 сентября 2012 г.
- ^ «Гостевые дополнения» . Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Оракл . Проверено 12 сентября 2020 г.
- ^ Ларабель, Майкл (19 декабря 2018 г.). «Производительность VirtualBox 6.0 3D/OpenGL с адаптером VMSVGA» . Фороникс . Проверено 15 сентября 2020 г.
- ^ Ларабель, Майкл (29 января 2009 г.). «VirtualBox получает ускоренную поддержку Direct3D» . Фороникс . Проверено 15 сентября 2020 г.
- ^ Привет! о рабочей станции Thincast - Блог FreeRDP
- ^ «Проект Virgil 3D GPU» . Гитхаб (проект). сайт freedesktop.org . Проверено 13 сентября 2020 г.
- ^ Эдж, Джейк (10 сентября 2014 г.). Virgil 3D: виртуальный графический процессор (статья). LWN.net . Проверено 13 сентября 2020 г.
- ^ Волльни, Герт (28 августа 2019 г.). «Вирглрендерер и состояние виртуализированных виртуальных миров» . Collabora Новости и блог . Проверено 15 сентября 2020 г.
- ^ Хоффманн, Герд (28 ноября 2019 г.). «Состояние и планы virtio GPU» . Проверено 15 сентября 2020 г.
- ^ Разработка графического процессора с помощью Parallels Workstation Extreme (PDF) (информационный документ). Параллели . 2010 . Проверено 13 сентября 2020 г.
- ^ «Развертывание графических устройств с использованием дискретного назначения устройств» . Hyper-V на Windows Server (Вручную). Майкрософт . Проверено 13 сентября 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б «HDX 3D Про» . XenApp и XenDesktop 7.15 LTSR (Руководство). Ситрикс Системс . Проверено 15 сентября 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б «Графический обзор» . Citrix Hypervisor 8.2 (Руководство). Ситрикс Системс . Проверено 15 сентября 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б Руководство по настройке GVT-d . GitHub (Руководство) . Проверено 13 сентября 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б с Ларабель, Майкл (4 мая 2014 г.). «Intel расширяет возможности виртуализации графики» . Фороникс . Проверено 13 сентября 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б «Внедрение новых вариантов использования и рабочих нагрузок в облако с помощью технологии виртуализации графики Intel (Intel GVT-g)» (PDF) . Центр технологий Intel с открытым исходным кодом (флаер). Интел . 2016 . Проверено 14 августа 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б Джайн, Сунил (4 мая 2014 г.). «Обновление виртуализации графики Intel» (статья). Интел . Проверено 13 сентября 2020 г.
- ^ «Журнал изменений для VirtualBox 6.1» . ВиртуалБокс . Корпорация Оракл . 10 декабря 2019 года . Проверено 12 сентября 2020 г.
- ^ «Проход PCI через OVMF — обнаружение виртуализации драйвера видеокарты» . Arch Linux Wiki (Вики) . Проверено 13 сентября 2020 г.
- ^ «Передача GeForce GPU для виртуальной машины Windows (бета-версия)» . Поддержка NVIDIA . 2021-03-30.
- ↑ Перейти обратно: Перейти обратно: а б «Проход PCI через OVMF — ArchWiki» . wiki.archlinux.org . Проверено 20 мая 2021 г.
- ^ Тянь, Лан (25 июня 2020 г.). «Проходное использование графических процессоров Intel и NVIDIA на ноутбуке Optimus без мультиплексора» .
- ^ Чжэн, Сяо (август 2015 г.). Медиа-облако на основе технологии виртуализации графики Intel (Intel GVT-g) и OpenStack (PDF) . Форум разработчиков Intel (слайд презентации). Сан-Франциско : Intel . Проверено 14 сентября 2020 г.
- ^ Ван, Чжэньюй (сентябрь 2017 г.). Полная виртуализация графического процессора методом опосредованной сквозной передачи (PDF) . XDC2017 (слайд презентации). Маунтин-Вью, Калифорния : Фонд X.Org . Проверено 14 сентября 2020 г.
- ^ Куркуре, Удай (12 октября 2017 г.). Сравнение производительности встроенного графического процессора с виртуализированным графическим процессором и масштабируемость виртуализированных графических процессоров для машинного обучения . VMware ВРУМ! Блог перформанса (статья). ВМваре . Эпизод 3 . Проверено 14 сентября 2020 г.
- ^ Руководство пользователя программного обеспечения виртуального графического процессора (Руководство). Нвидиа . Проверено 13 сентября 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б Вонг, Тонни (28 января 2016 г.). Многопользовательский графический процессор AMD: аппаратная виртуализация графического процессора для полноценной работы на рабочей станции (PDF) (информационный документ). АМД . Проверено 12 сентября 2020 г.
- ^ Ван, Хунбо (18 октября 2018 г.). «Выпуск XenGT (Intel GVT-g для Xen) в третьем квартале 2018 г.» (пресс-релиз). Центр технологий открытого исходного кода Intel . Проверено 14 августа 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б Руководство по настройке GVT-g . GitHub (Руководство) . Проверено 13 сентября 2020 г.
- ^ Ван, Хунбо (18 октября 2018 г.). «Выпуск KVMGT (Intel GVT-g для KVM) в третьем квартале 2018 г.» (Пресс-релиз). Центр технологий открытого исходного кода Intel . Проверено 14 августа 2020 г.
- ^ «Графические процессоры, поддерживаемые программным обеспечением NVIDIA Virtual GPU» . Нвидиа . Проверено 9 сентября 2020 г.
- ^ AMD FirePro серии S для виртуализации (PDF) (техническое описание). АМД . 2016 . Проверено 13 сентября 2020 г.
- ^ «Эмулируются системы/материнские платы» . PCem (Проект) . Проверено 26 октября 2020 г.
- ^ «Драйверы устройств VMware Tools» . Документация VMware Tools (Руководство). ВМваре . Проверено 12 сентября 2020 г.
- ↑ Перейти обратно: Перейти обратно: а б «Настройка виртуальных машин» . Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Оракл . Проверено 12 сентября 2020 г.
- ^ «Параметры отображения». Пользовательская документация QEMU . QEMU (Руководство) . Проверено 12 сентября 2020 г.
- ^ Лонг, Саймон (2013). Руководство по развертыванию графического ускорения виртуальных машин (PDF) (информационный документ). ВМваре . Проверено 14 сентября 2020 г.
- ^ «Ускоритель программного обеспечения OpenGL» . XenApp и XenDesktop 7.15 LTSR (Руководство). Ситрикс Системс . Проверено 15 сентября 2020 г.