Обзор существующих работ




Московский государственный университет имени М.В. Ломоносова

Факультет вычислительной математики и кибернетики

 
 

 

Магистерская программа «Суперкомпьютерные системы и приложения»

Магистерская диссертация

«Моделирование распространения воздушных потоков и дыма с помощью GPU»

 

Работу выполнил

Новиков А. И.

подпись студента

 

 

Научный руководитель:

д.ф-м.н., профессор Якобовский М. В.

 

подпись научного руководителя

 

Москва

 

 

Оглавление

 

Оглавление. 2

1 Обозначения и сокращения. 3

2 Введение. 4

3 Обзор существующих работ. 6

4 Постановка задачи. 8

5 Метод решения. 10

5.1 Расщепление. 10

5.2 Адвекция. 10

5.3 Проекция. 11

6 Выбор метода выполнения этапа проекции. 13

7 Полный многосеточный метод. 15

8 Реализация этапа проекции. 17

8.1 Входные данные. 17

8.2 Сглаживатель. 18

8.3 Расчёт невязки. 20

8.4 Расчёт нормы невязки. 20

8.5 Операторы огрубления и пролонгации. 22

8.6 Взаимодействие между несколькими GPU.. 25

8.7 Результаты тестирования и валидации. 26

9 Результаты.. 29

10 Список литературы.. 30

 

 

 

Обозначения и сокращения

 

1. CPU (Central Processing Unit) - центральный процессор.

2. GPU (Graphics Processing Unit) - Графический процессор.

Введение

 

На сегодняшний день в мире компьютерной графики существует большое количество программного обеспечения, позволяющего создавать поражающие воображение спецэффекты для фильмов, мультфильмов, музыкальных клипов, новостных, рекламных и других видов видеороликов. Исторически все вычисления, связанные c моделирование спецэффектов, а также их визуализация и конечная обработка производилась на CPU.

Постепенно ситуация начала меняться и появились первые реализации фильтров пост-обработки, использующие GPU. Среди программного обеспечения, связанного с видео, такие фильтры одними из первых стали использовать графические ускорители. В силу естественности параллелизации GPU-реализации таких фильтров [1] появились во всех профессиональных видеоредакторах, таких как, Adobe AfterEffects, Pinnacle Studio, Vegas.

Немного медленнее ситуация меняется среди программных систем, осуществляющих рендеринг, визуализацию готовых сцен. Первый коммерческий визуализатор, использующий GPU - NVIDIA OptiX - появился только в 2009 году, через 2 года после появления технологии CUDA, позволяющей проводить вычисления на GPU. Тем не менее на момент написания данного текста уже представлено несколько продуктов, способных осуществлять рендеринг, как полностью на GPU, так и в гибридном режиме - Chaos Group V-Ray RT, Octane, Arion, Furryball RT, Redshift, Cycles, moskitoRender, Indigo Render, Thea Presto Render и т.д.

Еще медленнее ситуация изменяется среди программного обеспечения, позволяющего создавать спецэффекты, в т. ч. моделирующего физические явления: например, поведение жидкостей, газов и дыма. При этом на момент написания данного текста существующее ПО обладает рядом недостатков:

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

· Не существует доступных общественности приложений, позволяющих производить симуляцию спецэффектов, используя память нескольких GPU для одной задачи.

· Чаще всего GPU используются только для отображении примерного вида спецэффекта в окне предпросмотра, а не для финального рендеринга.

· Внешний вид эффектов, полученных при использовании GPU, отличается от вида эффектов, полученных с использованием CPU. В частности, финальная картинка, полученная на рендер-ферме с CPU слабо соответствует визуализации полученной в окне предпросмотра при использовании GPU.

При всем этом, несмотря на очевидные проблемы, художники по спецэффектам уже сейчас активно используют существующие плагины, например, ILM Plume, SideFX Houdini, Blender Cycles, поддерживающие видеоускорители, чтобы сэкономить время создания новой компьютерной графики. Еще большей пользы можно было бы добиться, если бы в широком доступе существовало ПО, способное производить не только предварительные расчеты, но и работать с большими сетками на GPU-кластерах, генерируя спецэффекты для финальной картинки. В моменты цейтнота и приближающегося срока сдачи того или иного фильма или ролика даже в крупных по размерах студиях художники подключают по сети свои персональные компьютеры к рендер-ферме, таким образом увеличивая суммарную производительность рендер-фермы и уменьшая временные затраты. При этом большое количество ресурсов в виде 3D-ускорителей простаивает вхолостую. Схожая ситуация наблюдается в маленьких и в домашних студиях. Там художник, обладая одним или несколькими мощными компьютерами лишь частично использует их ресурсы.

Существует множество причин сложившейся ситуации. Популярные комплексы по моделированию спецэффектов развиваются на протяжении многих лет, и портировать все наработки за короткое время с одной аппаратной платформы на другую невозможно (большая часть ПО, использующего GPU, написано с нуля и сильно отличается по возможностям конфигурации от CPU-аналогов). Средние по размеру студии не способны резко перейти на GPU-кластеры, не обладая гарантией возможности переноса большей части вычислений на видеокарты. Разработчики ПО не готовы производить продукт, который с большой вероятностью пока никто не купит. Возникает замкнутый круг.

На данный момент ПО способное эффективно задействовать вычислительные мощности GPU и опробованное на реальных проектах, существует лишь в нескольких особенно крупных студиях мира и недоступно широкой общественности, например, ILM Plume. Тем не менее, очевидно, что интерес к GPU-ориентированному ПО для создания спецэффектов растет, и с большой вероятностью рано или поздно настанет момент, когда видеоускорители повсеместно будут использоваться для создания спецэффектов.

 

Обзор существующих работ

 

Первые попытки смоделировать газ и дым в кинематографе были произведены в середине 80-х годов XX века. Одними из первых исследователей в этой области были Дж. Гарднер, который в работе [2] предложил математическую модель для моделирования и визуализации разных типов облаков, а также У. Ривз, описавший в [3] создание спецэффектов с использованием частиц. Но работах того времени исследователи даже не пытались моделировать физическую суть эффектов.

Решение системы Навье-Стокса было слишком тяжелым для компьютеров того времени. Но дело было не только в произвольности – исследователи не знали, как управлять полученной субстанцией. Активно начали развиваться подходы, представляющие дым, как систему частиц с некоторой силой влияющих друг на друга. Такой подход обладает не слишком высоким качеством, но высокой производительностью, поэтому зачастую использовался в компьютерных играх. Подобные методы развиваются до сих пор. Например, в работе [4] предлагается алгоритм моделирования дыма, когда нужна высокая производительность, но качество не так важно.

Положение дел оставалось таким вплоть до появления статьи Н. Фостера [5], содержащей детальное описание алгоритма моделирования воды на основе решения уравнений Навье-Стокса. В дальнейшем при участии Дж. Стэма была опубликована серия работ [6, 9], в которой при визуализации дыма среда также описывалась с помощью трёхмерных уравнений Навье-Стокса. Здесь жидкость и газ уже описывались, как эйлерова среда, но на некоторых этапах решения системы уравнений представлялись набором частичек. Поэтому такие алгоритмы стали называть полулагранжевыми. Алгоритм Стэма[9] до сих пор считается каноническим, и на нем основано большинство последующих работ.

Для того, чтобы моделирование дыма было детальным нужно использовать особые процедуры, восстанавливающие завихрения, потерянные при расчётах грубыми методами[6], либо производить расчёты на очень больших сетках. Тут и встают вопросы памяти и производительности.

Графические ускорители хорошо показали себя в подобных задачах. В работах [10] и [11] удалось реализовать грубое моделирование дыма в реальном времени. В работе [12] реализован алгоритм из [9] на GPU, но использованием старых технологий. Он не оптимизирован, и возможно использование только одного GPU. В работах [24] и [25] показано решение первого этапа вычислительного алгоритма – полулагранжевой адвекции – на одном и нескольких GPU соответственно. В работе [23] была проведена попытка ускорить вычисления другого этапа алгоритма – проекции – за счёт использования многосеточного решателя. В работе [19] показан общий прирост производительности при использовании многосеточных солверов. В работах [26, 27] авторы реализуют multi-GPU решатель с методом PIC для адвекции, но не используют многосеточный метод на этапе проекции.

Постановка задачи

 

В данной работе за основу взят алгоритм из [9]. Моделируемая среда рассматривается как невязкий несжимаемый газ. Данные упрощения были сделаны из соображений, что расчёты будут проводиться на грубой сетке, и, таким образом, эффект вязкости в любом случае будет утерян. А так как скорость распространения дым, а заметно меньше скорости звука, то сжимаемостью также можно пренебречь. Рассматриваемый процесс описывается следующей системой трёхмерных уравнений Эйлера:

где и p - искомые вектор скорости и давление, а – известная внешняя сила, например, описанная далее сила плавучести.

Так как плотность считается константной и, в данном случае, равной единице, то в рассматриваемой системе имеется четыре неизвестных и четыре уравнения. На внешних границах имеющей форму параллепипеда области Gext, в которой будут проводиться расчёты, заданы естественные условия, позволяющие газу беспрепятственно входить и выходить из области. На границах объектов произвольной формы, расположенных внутри области Gint наложены условия не протекания, препятствующие попаданию дыма внутрь объектов. Начальное распределение искомых величин задаётся аниматором исходя из того, что за эффект он хочет воспроизвести, и в общем случае представляется заранее известными функциями U0 и p0, которые должны быть согласованы с граничными условиями.

Данная задача является основой для моделирования различных эффектов, таких как дым, огонь, облака – любых жидких и газообразных сред. Чтобы обеспечить моделирование именно дыма, в решаемую систему необходимо добавить ещё две неизвестные скалярные величины — концентрацию c и температуру T дыма, который перемешивается и свободно распространяется вместе с основным газом. Именно эти величины в дальнейшем будут визуализироваться, в то время как газ считается бесцветным. Чтобы описать эту смесь из двух веществ, в введённую ранее систему добавляются два дополнительных уравнения адвекции, которые описывают процесс перемещения вещества в заданном поле скоростей и, как следствие, изменения его концентрации. После этого осталось дополнительно задать начальное распределение температуры и плотности дыма через также предоставленные аниматором функции:

И ввести обратную связь, чтобы тяжёлые клубы дыма опускались под действием силы тяжести, а потоки горячего воздуха восходили вверх – уже упомянутую силу Бузинеска. Для этого достаточно расписать функцию внешней силы следующим образом:

Где – сила тяжести, Tamb - температура окружающей среды, а α и β - положительные константы, определяющие интенсивность процесса распространения дыма. Решив данную задачу для отрезка времени , мы получим данные, достаточные для наложения требуемого спецэффекта.

Метод решения

Расщепление

 

Для решения введённой ранее системы уравнений предлагается задействовать вариацию метода расщепления, в рамках которого для перехода с i -ого на i + 1 временной слой должны быть выполнены три действия. Во-первых, исключив давление из уравнения сохранения момента импульса, необходимо вычислить предварительное значение вектора скорости :

Во-вторых, требуется обеспечить несжимаемость газа, для чего вычисляется актуальное значение давления путём решения уравнения Пуассона:

А в предварительный вектор скорости вносится соответствующая поправка:

В-третьих, необходимо найти новые значения для плотности и температуры дыма:

 

Адвекция

 

Отдельно стоит остановиться на схеме численного решения уравнений адвекции, которые нужны для вычисления величин Если для этого использовать аппроксимацию конечной разностью, как это сделано в выкладках выше, то не удастся обеспечить абсолютную устойчивость метода, а наличие данного свойства является крайне важным в силу ограниченности вычислительных мощностей. Поэтому в рассматриваемом алгоритме используется полулагранжевый подход, в рамках которого на этапе решения уравнений адвекции — и только на нём — жидкость представляется набором частиц, расположенных в центрах ячеек специальной сетки (MAC grid, см Рисунок 1) и обладающих соответствующими характеристиками.

Например, в случае температуры это означает, что для узла с номером (I, j, l) требуется вычислить величину , где - шаг по пространству. После этого значение на следующем временном слое будет определено как . Очевидно, что компоненты вектора практически всегда будут дробными, поэтому для вычисления искомой величины температуры необходимо провести интерполяцию значений из восьми ячеек сетки, расстояние которых до узла (i −vx, j −vy, l –vz) не превышает . Если же индексы выходят за пределы расчётной области, то соответствующее значение определяется исходя из граничных условий.

Рисунок 1: Одна ячейка MAC-сетки

Важно заметить, что при переходе от этапа адвекции к этапу проекции мы будем считать, что все значение скоростей заданы на гранях, и направлению этих скоростей соответствуют орты, являющиеся нормалями граням к ячеек MAC решетки. Давление же для каждой частички нашей субстанции определенно в центрах ячеек.

 

Проекция

 

Другим этапом решения исходной задачи является этап проекции. Он является наиболее ресурсоемким во всей предложенной схеме. Этот этап численно эквивалентен решению внешней задачи Неймана для уравнения Пуассона [17]:

где

Разностная аппроксимация данной задачи выглядит так:

А ее решение сводится к решению системы линейных алгебраических уравнений.

Так как реализация этапа адвекции на GPU достаточно подробна описано в работах [24-27] в данной работе не будет уделено внимание их реализации. Алгоритм работы этапа адвекции приведен лишь для введения понятия MAC-сетки, и описания требований к солверу для проекции. Основное внимание в этой работе будет уделено этапу проекции.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: