- •1 Обозначения и сокращения
- •Введение
- •3 Обзор существующих работ
- •4 Постановка задачи
- •5 Метод решения
- •5.1 Расщепление
- •5.2 Адвекция
- •5.3 Проекция
- •6 Выбор метода выполнения этапа проекции
- •7 Полный многосеточный метод
- •8 Реализация этапа проекции
- •8.1 Входные данные
- •8.2 Сглаживатель
- •8.3 Расчёт невязки
- •8.4 Расчёт нормы невязки
- •8.5 Операторы огрубления и пролонгации
- •8.6 Взаимодействие между несколькими gpu
- •8.7 Результаты тестирования и валидации
- •9 Результаты
- •10 Список литературы
Московский государственный университет имени М.В. Ломоносова
Факультет вычислительной математики и кибернетики
Магистерская программа «Суперкомпьютерные системы и приложения»
Магистерская диссертация
«Моделирование распространения воздушных потоков и дыма с помощью GPU»
Работу выполнил
Новиков А. И.
подпись студента
Научный руководитель:
д.ф-м.н., профессор Якобовский М. В.
подпись научного руководителя
Москва
2017
Оглавление
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 24
8.7 Результаты тестирования и валидации 25
9 Результаты 28
10 Список литературы 29
1 Обозначения и сокращения
CPU (Central Processing Unit) - центральный процессор.
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-ориентированному ПО для создания спецэффектов растет, и с большой вероятностью рано или поздно настанет момент, когда видеоускорители повсеместно будут использоваться для создания спецэффектов.
