Параллельный рендеринг
Параллельный рендеринг (или распределенный рендеринг ) — это применение параллельного программирования в вычислительной области компьютерной графики . Рендеринг графики может потребовать огромных вычислительных ресурсов для сложных сцен, возникающих в научной визуализации , медицинской визуализации , приложениях САПР и виртуальной реальности . Недавние исследования также показали, что параллельный рендеринг можно применять в мобильных играх для снижения энергопотребления и повышения точности графики. [1] Рендеринг — это до неприличия параллельная рабочая нагрузка в нескольких областях (например, пикселях, объектах, кадрах), поэтому он стал предметом большого количества исследований.
Распределение рабочей нагрузки [ править ]
Есть две, часто конкурирующие причины использования параллельного рендеринга. Масштабирование производительности позволяет быстрее отображать кадры, а масштабирование данных позволяет визуализировать большие наборы данных. Различные методы распределения рабочей нагрузки имеют тенденцию отдавать предпочтение одному типу масштабирования над другим. Также могут быть другие преимущества и недостатки, такие как задержки и проблемы с балансировкой нагрузки . Три основных варианта распределения примитивов — это целые кадры, пиксели или объекты (например, треугольные сетки ).
Распределение кадров [ править ]
Каждый процессор может визуализировать весь кадр с другой точки зрения или момента времени. Кадры, визуализированные с разных точек зрения, могут улучшить качество изображения с помощью сглаживания или добавить такие эффекты, как глубина резкости и трехмерное отображение . Этот подход обеспечивает хорошее масштабирование производительности, но не масштабирование данных.
При параллельном рендеринге последовательных кадров будет наблюдаться задержка для интерактивных сеансов. Задержка между вводом пользователя и отображаемым действием пропорциональна количеству последовательных кадров, отображаемых параллельно.
Распределение пикселей [ править ]
Наборы пикселей в пространстве экрана могут быть распределены между процессорами, что часто называется рендерингом по сортировке. [2]
Распределение чересстрочных строк пикселей обеспечивает хорошую балансировку нагрузки, но делает невозможным масштабирование данных. Распределение смежных 2D-фрагментов пикселей позволяет масштабировать данные путем отбора данных с помощью усеченной пирамиды представления . Однако из-за репликации объектов на границах усеченного конуса возникают накладные расходы на данные, и данные необходимо загружать динамически при изменении точки обзора. Динамическая балансировка нагрузки также необходима для поддержания масштабирования производительности.
Распределение объектов [ править ]
Распределение объектов между процессорами часто называют рендерингом с сортировкой по последнему. [3] Он обеспечивает хорошее масштабирование данных и может обеспечить хорошее масштабирование производительности, но требует альфа-композиции промежуточных изображений с узлов обработки для создания окончательного изображения. По мере роста разрешения изображения увеличиваются и затраты на альфа-композицию.
Схема балансировки нагрузки также необходима для поддержания производительности независимо от условий просмотра. Этого можно достичь путем чрезмерного разделения пространства объекта и случайного назначения нескольких частей каждому процессорному блоку, однако это увеличивает количество этапов альфа-композиции, необходимых для создания окончательного изображения. Другой вариант — назначить каждому процессорному блоку непрерывный блок и динамически его обновлять, но для этого требуется динамическая загрузка данных.
Гибридное распространение [ править ]
Различные типы дистрибутивов можно комбинировать разными способами. Пару последовательных кадров можно визуализировать параллельно, одновременно визуализируя каждый из этих отдельных кадров параллельно с использованием распределения пикселей или объектов. Распределения объектов могут попытаться минимизировать их перекрытие в пространстве экрана, чтобы снизить затраты на альфа-композицию, или даже использовать распределение пикселей для рендеринга частей пространства объекта.
Приложения с открытым исходным кодом [ править ]
Пакет программного обеспечения с открытым исходным кодом Chromium обеспечивает механизм параллельного рендеринга для существующих приложений. Он перехватывает вызовы OpenGL и обрабатывает их, обычно для отправки на несколько блоков рендеринга, управляющих видеостеной .
Equalizer — это платформа рендеринга с открытым исходным кодом и система управления ресурсами для многоконвейерных приложений. Equalizer предоставляет API для написания параллельных масштабируемых приложений визуализации, которые настраиваются во время выполнения сервером ресурсов. [4]
OpenSG с открытым исходным кодом — это система графов сцен , которая обеспечивает возможности параллельного рендеринга, особенно в кластерах. Он скрывает сложность параллельных многопоточных и кластерных приложений и поддерживает отрисовку как по первой, так и по последней сортировке. [5]
Golem — это децентрализованное приложение с открытым исходным кодом, используемое для параллельных вычислений , которое в настоящее время работает с рендерингом в Blender и планирует расширить возможности его использования. [6]
См. также [ править ]
- Концепции
- Реализации
Ссылки [ править ]
- ^ Ву, К.; Ян, Б.; Чжу, В.; Чжан, Ю. (2017). «На пути к высокой производительности мобильных графических процессоров посредством совместной разгрузки рабочей нагрузки» . Транзакции IEEE в параллельных и распределенных системах . ПП (99): 435–449. дои : 10.1109/tpds.2017.2754482 . ISSN 1045-9219 .
- ^ Молнар, С., М. Кокс, Д. Эллсворт и Х. Фукс. « Сортировочная классификация параллельного рендеринга ». Компьютерная графика и алгоритмы IEEE, страницы 23–32, июль 1994 г.
- ^ Молнар, С., М. Кокс, Д. Эллсворт и Х. Фукс. « Сортировочная классификация параллельного рендеринга ». Компьютерная графика и алгоритмы IEEE, страницы 23–32, июль 1994 г.
- ^ «Эквалайзер: параллельный рендеринг» . Архивировано из оригинала 11 мая 2008 г. Проверено 30 апреля 2020 г.
- ^ «ОпенСГ» . Архивировано из оригинала 6 августа 2017 г. Проверено 30 апреля 2020 г.
- ^ «Сеть големов» . golem.network . Проверено 16 мая 2021 г.