Виртуализация 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 ), когда он не поддерживается программным пакетом гипервизора, хотя сетевая задержка и сериализация накладные расходы может перевесить преимущества.

Поддержка приложений с помощью технологий виртуализации удаленного взаимодействия API
ТехнологииDirect3DOpenGLВулканOpenCL
VMWare Ускорение виртуальной общей графики (vSGA)[10]9.0c2.1НетНет
Parallels Desktop для Mac 3D ускорение[11]11.0[A]3.3[B]НетНет
Hyper-V RemoteFX vGPU[13][14]11.04.4Нет1.1
VirtualBox Драйвер гостевых дополнений 3D[15][16][17]8/9[C]2.1[D]НетНет
QEMU /KVM с Верджилом 3D[19][20][21][22]Нет4.3ПланируетсяНет
  1. ^ Обернут в OpenGL с помощью WineD3D.[12]
  2. ^ Профиль совместимости.
  3. ^ Экспериментальный. Обернут в OpenGL с помощью WineD3D.[18]
  4. ^ Экспериментальный.

Фиксированный проход

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

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

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

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

Опосредованная передача

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

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

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

Аппаратная поддержка опосредованной сквозной виртуализации
ПродавецТехнологииВыделенная видеокарта семьиВстроенный графический процессор семьи
СерверПрофессиональныйПотребитель
NvidiavGPU[41]СЕТКА, ТеслаQuadroНет
AMDMxGPU[37][42]Сервер FirePro, Radeon InstinctRadeon ProНетНет
IntelGVT-gBroadwell и новее

Эмуляция устройства

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

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

Смотрите также

Примечания

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

Рекомендации

  1. ^ а б c d е ж грамм час Даути, Мика; Сугерман, Джереми (июль 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» (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.
  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 Computer Society. С. 1721–1726. Дои: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 Computer Society. С. 1–10. Дои:10.1109 / HiPC.2011.6152718. ISBN  978-1-4577-1951-6. ISSN  1094-7256. Получено 13 сентября 2020.
  9. ^ Лагар-Кавилья, Орасио; Толик, Нирадж; Сатьянараянан, Махадев; Лара, Эяль (июнь 2007 г.). «Ускорение графики, не зависящее от VMM» (PDF). Написано в Сан Антонио. Труды 3-й Международной конференции по виртуальным средам исполнения. VEE '07. Нью-Йорк: Ассоциация вычислительной техники. С. 33–43. Дои:10.1145/1254810.1254816. ISBN  978-1-59593-630-1. Получено 12 сентября 2020.
  10. ^ а б Лантинга, Хилко. Развертывание графики с аппаратным ускорением с помощью VMware Horizon (Гид). VMware. Получено 12 сентября 2020.
  11. ^ «Настройки графики». Parallels Desktop - Руководство пользователя (Гид). Параллели.
  12. ^ Брайт, Питер (11 марта 2014 г.). «Valve выпускает открытый переводчик Direct3D на OpenGL». Ars Technica. Получено 15 сентября 2020.
  13. ^ «Развертывание графических устройств с помощью RemoteFX vGPU». Hyper-V на Windows Server (Руководство). Microsoft. Получено 13 сентября 2020.
  14. ^ «План ускорения графического процессора в Windows Server». Hyper-V на Windows Server (Руководство). Microsoft. Получено 15 сентября 2020.
  15. ^ «Аппаратно-ускоренная графика». Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Oracle. Получено 12 сентября 2012.
  16. ^ "Гостевые дополнения". Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Oracle. Получено 12 сентября 2020.
  17. ^ Ларабель, Майкл (19 декабря 2018 г.). «Производительность VirtualBox 6.0 3D / OpenGL с адаптером VMSVGA». Фороникс. Получено 15 сентября 2020.
  18. ^ Ларабель, Майкл (29 января 2009 г.). «VirtualBox получает ускоренную поддержку Direct3D». Фороникс. Получено 15 сентября 2020.
  19. ^ «Проект Virgil 3D GPU». GitHub (Проект). freedesktop.org. Получено 13 сентября 2020.
  20. ^ Эдж, Джейк (10 сентября 2014 г.). Virgil 3D: виртуальный графический процессор (Статья). LWN.net. Получено 13 сентября 2020.
  21. ^ Волльни, Герт (28 августа 2019 г.). «Вирглрендерер и состояние виртуализированных виртуальных миров». Collabora Новости и блог. Получено 15 сентября 2020.
  22. ^ Хоффманн, Герд (28 ноября 2019 г.). "Статус и планы virtio gpu". Получено 15 сентября 2020.
  23. ^ Разработка GPU с Parallels Workstation Extreme (PDF) (Белая бумага). Параллели. 2010. Получено 13 сентября 2020.
  24. ^ «Развертывание графических устройств с использованием дискретного назначения устройств». Hyper-V на Windows Server (Руководство). Microsoft. Получено 13 сентября 2020.
  25. ^ а б «HDX 3D Pro». XenApp и XenDesktop 7.15 LTSR (Руководство). Citrix Systems. Получено 15 сентября 2020.
  26. ^ а б «Обзор графики». Citrix Hypervisor 8.2 (Руководство). Citrix Systems. Получено 15 сентября 2020.
  27. ^ а б Руководство по установке GVT-d. GitHub (Гид). Получено 13 сентября 2020.
  28. ^ а б c Ларабель, Майкл (4 мая 2014 г.). «Intel продвигает свои возможности виртуализации графики». Фороникс. Получено 13 сентября 2020.
  29. ^ а б «Новые варианты использования и рабочие нагрузки в облаке с помощью технологии виртуализации графики Intel (Intel GVT-g)» (PDF). Центр технологий открытого исходного кода Intel (Рекламный проспект). Intel. 2016. Получено 14 августа 2020.
  30. ^ а б Джайн, Сунил (4 мая 2014 г.). «Обновление для виртуализации графики Intel» (Статья). Intel. Получено 13 сентября 2020.
  31. ^ «Список изменений для VirtualBox 6.1». VirtualBox. Корпорация Oracle. 10 декабря 2019 г.. Получено 12 сентября 2020.
  32. ^ «Прохождение PCI через OVMF - обнаружение виртуализации драйвера видеокарты». Arch Linux Вики (Вики). Получено 13 сентября 2020.
  33. ^ Чжэн, Сяо (август 2015 г.). Медиа-облако на основе технологии виртуализации графики Intel (Intel GVT-g) и OpenStack (PDF). Форум разработчиков Intel (Слайд презентации). Сан-Франциско: Intel. Получено 14 сентября 2020.
  34. ^ Ван, Чжэньюй (сентябрь 2017 г.). Полная виртуализация графического процессора в промежуточном режиме (PDF). XDC2017 (Слайд презентации). Маунтин-Вью, Калифорния: Фонд X.Org. Получено 14 сентября 2020.
  35. ^ Куркуре, Удай (12 октября 2017 г.). Сравнение производительности собственного графического процессора с виртуализированным графическим процессором и масштабируемость виртуализированных графических процессоров для машинного обучения. VMware VROOM! Блог производительности (Статья). VMware. Эпизод 3. Получено 14 сентября 2020.
  36. ^ Руководство пользователя программного обеспечения Virtual GPU (Гид). Nvidia. Получено 13 сентября 2020.
  37. ^ а б Вонг, Тонни (28 января 2016 г.). Многопользовательский графический процессор AMD: аппаратная виртуализация графического процессора для полноценной работы на рабочей станции (PDF) (Белая бумага). AMD. Получено 12 сентября 2020.
  38. ^ Ван, Хунбо (18 октября 2018 г.). «Выпуск XenGT (Intel GVT-g для Xen) за третий квартал 2018 г.» (Пресс-релиз). Центр технологий открытого исходного кода Intel. Получено 14 августа 2020.
  39. ^ а б Руководство по установке GVT-g. GitHub (Гид). Получено 13 сентября 2020.
  40. ^ Ван, Хунбо (18 октября 2018 г.). «Выпуск KVMGT (Intel GVT-g для KVM) за третий квартал 2018 г.» (Пресс-релиз). Центр технологий открытого исходного кода Intel. Получено 14 августа 2020.
  41. ^ «Графические процессоры, поддерживаемые программным обеспечением NVIDIA Virtual GPU». Nvidia. Получено 9 сентября 2020.
  42. ^ AMD FirePro серии S для виртуализации (PDF) (Техническая спецификация). AMD. 2016. Получено 13 сентября 2020.
  43. ^ "Эмуляция систем / материнских плат". PCem (Проект). PCem. Получено 26 октября 2020.
  44. ^ «Драйверы устройств VMware Tools». Документация по инструментам VMware (Руководство). VMware. Получено 12 сентября 2020.
  45. ^ а б «Настройка виртуальных машин». Руководство пользователя Oracle VM VirtualBox (Руководство). Корпорация Oracle. Получено 12 сентября 2020.
  46. ^ "Показать варианты". Документация пользователя QEMU. QEMU (Руководство). Получено 12 сентября 2020.
  47. ^ Длинный, Саймон (2013). Руководство по развертыванию ускорения графики виртуальной машины (PDF) (Белая бумага). VMware. Получено 14 сентября 2020.
  48. ^ "Программный ускоритель OpenGL". XenApp и XenDesktop 7.15 LTSR (Руководство). Citrix Systems. Получено 15 сентября 2020.