Проблема текущей архитектуры
Инженер AMD Хунлэй Хуанг (Honglei Huang) инициировал разработку нового бэкенда для стека вычислений ROCm в среде QEMU. Текущая реализация, использующая контекст VirtIO GPU для совместного использования пути отображения (display path), столкнулась с серьезными ограничениями. Основные проблемы включают:
- Конфликты ресурсов: Совместное использование контекста вызывает конкуренцию за ресурсы, что приводит к задержкам и «дерганости» изображения (display stuttering).
- Ограничения памяти: Вычислительные контексты требуют большего объема доступа к памяти, чем позволяет текущая модель рендеринга VirtIO.
- Отсутствие дисплейных движков: Многие GPU-ускорители не имеют встроенных дисплейных блоков, что делает текущий подход неэффективным.
Предлагаемое решение: Headless VirtIO GPU
Для решения этих проблем AMD планирует внедрить выделенный headless-экземпляр VirtIO GPU, предназначенный исключительно для вычислений. Ключевые технические изменения включают:
- Разделение путей: вычисления и отображение будут обрабатываться независимыми инстансами.
- Встроенная библиотека: разрабатывается открытый бэкенд ROCm, который будет загружаться в процессе QEMU (in-process).
- Интеграция в ROCm: будущая версия библиотеки станет частью официального стека ROCm.
Исторический контекст и статус
Ранее, в прошлом году, был предложен merge request для добавления поддержки нативного контекста ROCm в Virglrenderer. Однако эта интеграция до сих пор не была объединена с основной веткой Virglrenderer. Новая инициатива представляет собой альтернативный или дополняющий подход, направленный на устранение архитектурных ограничений существующего метода.
Значение для сообщества
Успешная реализация этого бэкенда критически важна для разработчиков, использующих виртуализацию для GPU-вычислений. Это позволит повысить производительность и стабильность работы ROCm-приложений в контейнеризованных и виртуальных средах, таких как Kubernetes или Docker, где изоляция и эффективность использования ресурсов GPU являются ключевыми факторами.
Источник: Phoronix ↗
