Виртуализация GPU - GPU virtualization - Wikipedia
Виртуализация GPU относится к технологиям, которые позволяют использовать GPU к ускоряться графика или же ГПГПУ приложения, работающие на виртуальная машина. Виртуализация GPU используется в различных приложениях, таких как виртуализация рабочего стола,[1] облачные игры[2] и вычислительная наука (например. гидродинамика моделирования).[3]
Реализации виртуализации GPU обычно включают в себя один или несколько из следующих методов: эмуляция устройства, удаленное взаимодействие 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 ), когда он не поддерживается программным пакетом гипервизора, хотя сетевая задержка и сериализация накладные расходы может перевесить преимущества.
Технологии | Direct3D | OpenGL | Вулкан | OpenCL |
---|---|---|---|---|
VMWare Ускорение виртуальной общей графики (vSGA) | 9.0c | 2.1 | Нет | Нет |
Parallels Desktop для Mac 3D ускорение | 11.0[A] | 3.3 | Нет | Нет |
Hyper-V RemoteFX vGPU | 11.0 | 4.4 | Нет | 1.1 |
VirtualBox Драйвер гостевых дополнений 3D | 8/9 | 2.1 | Нет | Нет |
QEMU /KVM с Верджилом 3D | Нет | 4.3 | Планируется | Нет |
Фиксированный проход
В фиксированной сквозной передаче или сквозной передаче графического процессора (особый случай PCI сквозной), доступ к графическому процессору осуществляется непосредственно одной виртуальной машиной исключительно и постоянно. Этот метод обеспечивает 96–100% исходной производительности.[3] и высокая верность,[1] но ускорение, обеспечиваемое графическим процессором, нельзя разделить между несколькими виртуальными машинами. Таким образом, у него самый низкий коэффициент консолидации и самая высокая стоимость, поскольку для каждой виртуальной машины с графическим ускорением требуется дополнительный физический графический процессор.[1]
Следующие программные технологии реализуют фиксированный сквозной доступ:
- VMware Виртуальное выделенное графическое ускорение (vDGA)[10][а]
- Parallels Workstation Extreme[23]
- Hyper-V Назначение дискретных устройств (DDA)[24]
- Citrix XenServer GPU сквозной[25][26]
- Xen[27] и QEMU /KVM[27][28] с Intel GVT-d[29][30][28]
VirtualBox удалена поддержка сквозного подключения PCI в версии 6.1.0.[31]
Для определенных моделей графических процессоров драйверы видеокарт Nvidia и AMD пытаются обнаружить, что к графическому процессору обращается виртуальная машина, и отключить некоторые или все функции графического процессора.[32]
Опосредованная передача
При опосредованной сквозной виртуализации устройства или полной виртуализации графического процессора аппаратное обеспечение графического процессора обеспечивает контексты с диапазоны виртуальной памяти для каждого гостя через IOMMU а гипервизор отправляет графические команды от гостей прямо на GPU. Этот метод представляет собой форму виртуализация с аппаратной поддержкой и добивается почти родного[b] производительность и высокая точность воспроизведения. Если оборудование предоставляет контексты как полные логические устройства, гости могут использовать любой API. В противном случае API и драйверы должны управлять дополнительной сложностью контекстов графического процессора. Недостатком является слабая изоляция виртуальных машин при доступе к ресурсам графического процессора.[1]
Следующие программные и аппаратные технологии реализуют опосредованную передачу:
- VMware Ускорение виртуальной общей сквозной графики[а] с Nvidia vGPU[36] или AMD MxGPU[37]
- Citrix XenServer разделяет графический процессор с Nvidia vGPU, AMD MxGPU или Intel GVT-g[25][26]
- Xen[38][39][28] и KVM[40][39] с Intel GVT-g[29][30]
Хотя удаленное взаимодействие через API обычно доступно для текущих и более старых графических процессоров, опосредованная передача требует аппаратной поддержки, доступной только на определенных устройствах.
Продавец | Технологии | Выделенная видеокарта семьи | Встроенный графический процессор семьи | ||
---|---|---|---|---|---|
Сервер | Профессиональный | Потребитель | |||
Nvidia | vGPU[41] | СЕТКА, Тесла | Quadro | Нет | — |
AMD | MxGPU[37][42] | Сервер FirePro, Radeon Instinct | Radeon Pro | Нет | Нет |
Intel | GVT-g | — | — | — | Broadwell и новее |
Эмуляция устройства
Архитектуры графических процессоров очень сложны и быстро меняются, а их внутренние детали часто держатся в секрете. Как правило, невозможно полностью виртуализировать новые поколения графических процессоров, а только старые и более простые поколения. Например, PCem, специализированный эмулятор IBM PC архитектура, может подражать S3 ViRGE / DX графическое устройство, поддерживающее Direct3D 3, а 3dfx Voodoo2, который поддерживает Скольжение, среди прочего.[43]
При использовании VGA или SVGA адаптер виртуального дисплея,[44][45][46] гость может не иметь ускорения 3D-графики, обеспечивая лишь минимальную функциональность, позволяющую получить доступ к машине через графический терминал. Эмулируемое устройство может предоставлять гостям только базовые режимы 2D-графики. Менеджер виртуальных машин также может предоставлять общие реализации API, используя программный рендеринг для включения приложений 3D-графики в гостевой системе, хотя и на скоростях, которые могут быть ниже 3% от аппаратной производительности с ускорением.[1] Следующие программные технологии реализуют графические API с использованием программного рендеринга:
- VMware Программный рендерер SVGA 3D[47]
- VirtualBox Графический контроллер VMSVGA[45]
- Citrix XenServer OpenGL Software Accelerator[48]
- Платформа расширенной растеризации Windows
- Ядро OpenGL программный рендерер
- Меса программный рендерер
Смотрите также
Примечания
Рекомендации
- ^ а б c d е ж грамм час Даути, Мика; Сугерман, Джереми (июль 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» (PDF). 7-я Международная конференция IEEE по облачным вычислениям. 7-я Международная конференция IEEE по облачным вычислениям. Анкоридж: IEEE Computer Society. С. 636–643. Дои:10.1109 / CLOUD.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 Computer Society. С. 1721–1726. Дои: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 Computer Society. С. 1–10. Дои:10.1109 / HiPC.2011.6152718. ISBN 978-1-4577-1951-6. ISSN 1094-7256. Получено 13 сентября 2020.
- ^ Лагар-Кавилья, Орасио; Толик, Нирадж; Сатьянараянан, Махадев; Лара, Эяль (июнь 2007 г.). «Ускорение графики, не зависящее от VMM» (PDF). Написано в Сан Антонио. Труды 3-й Международной конференции по виртуальным средам исполнения. VEE '07. Нью-Йорк: Ассоциация вычислительной техники. С. 33–43. Дои:10.1145/1254810.1254816. ISBN 978-1-59593-630-1. Получено 12 сентября 2020.
- ^ а б Лантинга, Хилко. Развертывание графики с аппаратным ускорением с помощью VMware Horizon (Гид). VMware. Получено 12 сентября 2020.
- ^ «Настройки графики». Parallels Desktop - Руководство пользователя (Гид). Параллели.
- ^ Брайт, Питер (11 марта 2014 г.). «Valve выпускает открытый переводчик Direct3D на OpenGL». Ars Technica. Получено 15 сентября 2020.
- ^ «Развертывание графических устройств с помощью RemoteFX vGPU». Hyper-V на Windows Server (Руководство). Microsoft. Получено 13 сентября 2020.
- ^ «План ускорения графического процессора в Windows Server». Hyper-V на Windows Server (Руководство). Microsoft. Получено 15 сентября 2020.
- ^ «Аппаратно-ускоренная графика». Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Oracle. Получено 12 сентября 2012.
- ^ "Гостевые дополнения". Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Oracle. Получено 12 сентября 2020.
- ^ Ларабель, Майкл (19 декабря 2018 г.). «Производительность VirtualBox 6.0 3D / OpenGL с адаптером VMSVGA». Фороникс. Получено 15 сентября 2020.
- ^ Ларабель, Майкл (29 января 2009 г.). «VirtualBox получает ускоренную поддержку Direct3D». Фороникс. Получено 15 сентября 2020.
- ^ «Проект Virgil 3D GPU». GitHub (Проект). freedesktop.org. Получено 13 сентября 2020.
- ^ Эдж, Джейк (10 сентября 2014 г.). Virgil 3D: виртуальный графический процессор (Статья). LWN.net. Получено 13 сентября 2020.
- ^ Волльни, Герт (28 августа 2019 г.). «Вирглрендерер и состояние виртуализированных виртуальных миров». Collabora Новости и блог. Получено 15 сентября 2020.
- ^ Хоффманн, Герд (28 ноября 2019 г.). "Статус и планы virtio gpu". Получено 15 сентября 2020.
- ^ Разработка GPU с Parallels Workstation Extreme (PDF) (Белая бумага). Параллели. 2010. Получено 13 сентября 2020.
- ^ «Развертывание графических устройств с использованием дискретного назначения устройств». Hyper-V на Windows Server (Руководство). Microsoft. Получено 13 сентября 2020.
- ^ а б «HDX 3D Pro». XenApp и XenDesktop 7.15 LTSR (Руководство). Citrix Systems. Получено 15 сентября 2020.
- ^ а б «Обзор графики». Citrix Hypervisor 8.2 (Руководство). Citrix Systems. Получено 15 сентября 2020.
- ^ а б Руководство по установке GVT-d. GitHub (Гид). Получено 13 сентября 2020.
- ^ а б c Ларабель, Майкл (4 мая 2014 г.). «Intel продвигает свои возможности виртуализации графики». Фороникс. Получено 13 сентября 2020.
- ^ а б «Новые варианты использования и рабочие нагрузки в облаке с помощью технологии виртуализации графики Intel (Intel GVT-g)» (PDF). Центр технологий открытого исходного кода Intel (Рекламный проспект). Intel. 2016. Получено 14 августа 2020.
- ^ а б Джайн, Сунил (4 мая 2014 г.). «Обновление для виртуализации графики Intel» (Статья). Intel. Получено 13 сентября 2020.
- ^ «Список изменений для VirtualBox 6.1». VirtualBox. Корпорация Oracle. 10 декабря 2019 г.. Получено 12 сентября 2020.
- ^ «Прохождение PCI через OVMF - обнаружение виртуализации драйвера видеокарты». Arch Linux Вики (Вики). Получено 13 сентября 2020.
- ^ Чжэн, Сяо (август 2015 г.). Медиа-облако на основе технологии виртуализации графики Intel (Intel GVT-g) и OpenStack (PDF). Форум разработчиков Intel (Слайд презентации). Сан-Франциско: Intel. Получено 14 сентября 2020.
- ^ Ван, Чжэньюй (сентябрь 2017 г.). Полная виртуализация графического процессора в промежуточном режиме (PDF). XDC2017 (Слайд презентации). Маунтин-Вью, Калифорния: Фонд X.Org. Получено 14 сентября 2020.
- ^ Куркуре, Удай (12 октября 2017 г.). Сравнение производительности собственного графического процессора с виртуализированным графическим процессором и масштабируемость виртуализированных графических процессоров для машинного обучения. VMware VROOM! Блог производительности (Статья). VMware. Эпизод 3. Получено 14 сентября 2020.
- ^ Руководство пользователя программного обеспечения Virtual GPU (Гид). Nvidia. Получено 13 сентября 2020.
- ^ а б Вонг, Тонни (28 января 2016 г.). Многопользовательский графический процессор AMD: аппаратная виртуализация графического процессора для полноценной работы на рабочей станции (PDF) (Белая бумага). AMD. Получено 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». Nvidia. Получено 9 сентября 2020.
- ^ AMD FirePro серии S для виртуализации (PDF) (Техническая спецификация). AMD. 2016. Получено 13 сентября 2020.
- ^ "Эмуляция систем / материнских плат". PCem (Проект). PCem. Получено 26 октября 2020.
- ^ «Драйверы устройств VMware Tools». Документация по инструментам VMware (Руководство). VMware. Получено 12 сентября 2020.
- ^ а б «Настройка виртуальных машин». Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Oracle. Получено 12 сентября 2020.
- ^ "Показать варианты". Документация пользователя QEMU. QEMU (Руководство). Получено 12 сентября 2020.
- ^ Длинный, Саймон (2013). Руководство по развертыванию ускорения графики виртуальной машины (PDF) (Белая бумага). VMware. Получено 14 сентября 2020.
- ^ "Программный ускоритель OpenGL". XenApp и XenDesktop 7.15 LTSR (Руководство). Citrix Systems. Получено 15 сентября 2020.