Конфигурирование вычислительного кластера для распределенного рендеринга 3д сцен
Содержание материала
На сегодняшний день область информационных технологий развивается с большой скоростью. Почти каждый современный человек сталкивался с понятием компьютерная графика. Без технологий создания и обработки изображений с помощью компьютеров тяжело представить такие направления жизнедеятельности, как компьютерные игры, кинематограф, телевидение, дизайн, архитектура, медицина и др.
Направление, в котором создаются объемные объекты в трехмерном пространстве, объемные изображения и сцены называется трехмерная графика или 3D-графика. К этапам создания 3D-графики относятся: моделирование, тестурирование, риггинг (создание скелета), анимация, освещение, рендеринг (визуализация).
После размещения готовых созданных моделей на сцене, настройки освещения, камеры настраивается рендер (программа производящая рендеринг). Рендеринг является завершающим этапом обработки трехмерной сцены. Это процесс получения изображения по модели с помощью компьютерной программы.
Рендеринг является важным этапом в работе с трехмерной графикой, так как от его результата зависят реалистичность и эффективность итогового изображения. Однако получение результата очень ресурсоемкая задача, которое занимает большое количество времени. К примеру, визуализация видеоролика длиной несколько минут в высоком разрешении, может выполняться несколько дней или недель, в зависимости от сложности сцены. Часто бывает так, что не хватает вычислительной мощности одного компьютера для выполнения поставленной задачи визуализации. Становится очевидна необходимость решения этой актуальной проблемы.
Одним из способов решения трудоемких вычислительных задач с использованием нескольких компьютеров, которые объединены с помощью каналов связи, является распределенные вычисления. Группа компьютеров, предназначенных для распределенных вычислений в параллельном режиме, называется вычислительным кластером. Применение распределенного рендеринга решает проблему с ускорением времени визуализации.
Целью выполнения данной дипломной работы является построение и конфигурация вычислительного кластера таким образом, чтобы его производительность и эффективность была наиболее высокая. Этот подход позволит сократить время рендеринга и ускорить процесс просчета. Для достижения цели была поставлена задача о конфигурировании вычислительного кластера для распределенного рендеринга.
Этапы визуализации
Для получения отрендеренного изображения следует выполнить несколько предварительных этапов работы:
- моделирование трехмерных объектов;
- сборка сцены;
- текстурирование;
- настройка освещения;
- настройка камеры и кадра;
- настройка эффектов;
- рендеринг.
Следует заранее выбрать программу для рендеринга, так как визуализация тесно связана с моделированием и текстурированием 3D объектов.
Виды визуализации
Различают два вида рендеринга – в реальном и в не реальном времени (пре-рендеринг). Рендеринг в реальном времени используется в компьютерных играх. Он имеет высокую скорость выполнения расчетов. Однако такой рендер требует мощное аппаратное обеспечение («железо»). Для рендера в реальном времени используются такие игровые движки: Unreal Development Kit (UDK), Cryengine, OptiX, Octane Render и другие.
Рендеринг в не реальном времени (пре-рендеринг) используется для получения фотореалистичных изображений с корректным наложением света и тени, добавлением цвета, детализацией мелких элементов и других эффектов. Главный фактор у такого рендеринга получить высокое качество изображения. Скорость просчета зависит от сложности сцены. Пре-рендеринг применяется в основном при создании видео, анимационных фильмов и др. Завершающий финальный рендер, предоставляющий итоговое изображение или видеоролик – финальный рендер.
Методы визуализации
На данный момент существует большое количество алгоритмов визуализации. Объекты на сцене освещаются источниками света, световыми эффектами. Также свет может падать переотражаясь от других объетов. Некоторые материалы моделей изменяют окружающий свет. При визуализации происходит вычисление образцов световых моделей по реальному поведению света, расчет отражения лучей от поверхностей.
Среди методов визуализации можно выделить такие как:
- трассировка лучей (raytracing) - в этом методе из точки наблюдения объекта направляются множество лучей, которые определяют оттенок пикселя на экране, занимает значительное количество времени, но позволяет получать очень фотореалистичные изображения;
- трассировка пути (path treacing) – принцип похожий на трассировку лучей, нос учетом физических законов; [3]
- растеризация с методом сканирования строк (scanline, rasterization);
- метод «бросания лучей»(ray casting) – сцена строится на основе замеров пересечения лучей c поверхностью для рендеринга;
- глобальная иллюминация (radiosity) – используется математика конечных элементов;
- метод фотонных карт (photon mapping) – пускает лучи-фотоны из источника света, которые переотражаются от объектов независимо от положения камеры на сцене.
Для получения финального изображения может использоваться несколько алгоритмов.
Категории визуализации по времени
Для получения отрендеренного изображения на одном компьютере тратится много времени и вычислительных ресурсов.
Высококачественное(high-quality) рендеринг – это получение фотореалистичного изображения высокого качества. Для получения такого изображения используют фотореалистичные материалы (шейдинг), источники освещение, отражения, преломления и т.д. Процесс такого рендеринга занимает большое количество времени и выполняется он только в конце работы со сценой (финальный рендеринг).
Работая со сценой можно сразу отслеживать максимально приближенный результат визуализации. Для этого используется возможность preview рендеринга (предварительной визуализации). Ее преимущество в том, что не тратится большое количество времени для получения результата. Однако качество изображения будет значительно ниже. Так, например, для получения отрендеренного высококачественного изображения (high-quality) разрешением 2500х1400 на железе i7 – 980 (4ГГц) 24гб ram. потратится около 2ч. 30мин. Превью (preview) на разрешении 1200х800 можно получить в течение 1-2 мин.
Проходы визуализации
Проходом визуализации (render pass) называется отрендеренное изображение определенного свойства сцены отдельно от других. Оно используется для композитинга.
Типы проходов рендеринга:
- основной проход – итоговое полученное изображение. Оно включает в себя все проходы;
- проход теней – изображение, включающее в себя тени, которые отбрасывают объекты;
- проход освещения – визуализация нескольких проходов освещения;
- проход глубины – изображение карты глубины;
- проход свечения и др.
Проходы визуализации используются для экономии памяти. На этапе композитинга они позволяют легко вносить правки и изменять итоговый результат.
Планирование работы
- сбор информации и материалов
- изучение различных подходов к визуализации
- установка необходимого программного обеспечения для работы системы
- настройка сети
- настройка общего сетевого диска
- настройка программного обеспечения
- подготовка трехмерной сцены к визуализации
- визуализация на одной машине с разными конфигурациями машины
- настройка системы для распределенного рендеринга Afanasy
- распределенная визуализация с разными конфигурациями машины
- получение результатов
- анализ и оценка полученных результатов
Для работы будет использован система для распределенного рендеринга Afanasy, трехмерный программный пакет Autodesk Maya, программы для рендера конечных изображений в программе Maya – Redshift, Arnold, Mental Ray.
Распределенный рендеринг.
Распределенный рендеринг позволяет распределять одну задачу визуализации одного изображения между несколькими компьютерами в сети, то есть производить визуализацию мощностями нескольких компьютеров.
При распределенной визуализации анимации (секвенции) между компьютерами распределяются кадры. Каждая машина будет рендерить по кадру. Как только компьютер освободится, он начнет рендерить следующий кадр и так по кругу.
Рис. 1. Распределение работы между нодами
При распределенной визуализации одного кадра, основная идея состоит в том, что разделение различных частей конвейера рендеринга и распределение между узлами различных частей задачи ведет к сокращению времени на визуализацию. Кадр, который требуется отрендерить, делится на небольшие участки (бакиты). Каждой машине в сети раздаются некоторое их количество. Результаты просчетов собираются в конечное итоговое изображение.
Рис. 2. Разбиение кадра на бакиты
Все необходимые данные для распределенного рендеринга должны храниться на сервере или общем сетевом диске, к которому будут обращаться вычислительные узлы. Этот диск хранит файлы сцен, текстуры, настройки. Он же принимает выходные данные – итоговый результат.
Вычислительный кластер.
Вычислительный кластер – это группа узлов, которые переназначены для решения распределенных задач в параллельном режиме, с большой производительностью и используются как единый ресурс [4]. Каждый вычислительный узел – это компьютер или нода, которая имеет собственную оперативную память, операционную систему и т.д. Чем больше компьютеров находится в вычислительной сети, тем меньше времени требуется на визуализацию сцены.
Узлы должны быть объединены высокопроизводительной коммуникационной сетью, обладающей минимальными задержками и широкой полосой пропускания информации, то есть компьютеры должны видеть друг друга через сетевое окружение.
На все машины следует установить идентичное программное обеспечение, плагины. Если компьютеры не зоне досягаемости необходимо использовать утилиты, обеспечивающие удаленный доступ, для работы с удаленными машинами.
Для того чтобы добиться быстрой сборки конечного результата и быстрого распределения задания на все машины необходим общий сетевой диск. Он должен быть виден всем машинам под одним и тем же именем. Очень важно организовать общую сетевую папку. Всем узлам необходимо видеть одни и те же файлы проекта и текстуры в программном пакете, для того чтобы правильно работать с проектом, который они рендерят. Необходимо открыть доступ к папке с файлами проекта. Для этого следует подключить сетевой диск или создать сетевой путь.
В настоящее время кластеры имеют широкое применение по всему миру. С момента своего появления они сразу получили признание. В 1994 году в научном космическом центре NASA был создан первый кластер Beowulf, который состоял из 16 компьютеров на базе процессоров 486DX4 с тактовой частотой 100MHz. На каждом узле было 16 мегабайт оперативной памяти, была установлена операционная система Linux. Со временем появились такие вычислительные кластеры как:
- AC3 Velocity Cluster
- Thunder
- NCSA NT Supercluster
- Blue Gene/P
- IBM Roadrunner
- SGI Altix ICE 8200 и др.
Так же вычислительные кластеры имеются в различных университетах.
Вычислительный кластер КФУ.
Вычислительный кластер, использующийся в университете, представляет собой группу вычислительных узлов, которые объединены высокоскоростными каналами связи. К основным компонентам кластера входит:
- управляющий узел
- вычислительные узлы Big Data
- узлы с GPU
- система хранения данных
- сеть коммуникации
- программное обеспечение (IBM Platform HPC)
- сервисная и транспортная сеть
- узлы с архитектурой x86
Узлы с графическими процессорами представляют собой многопроцессорные сервера с модулями ускорения вычисления GPU NVIDIA. Используемый графический ускоритель NVIDIA Tesla K80. Для работы используются 19 нод. Кластер работает под управлением операционной системы Red Hat на базе Linux.
Рис. 3. Кластер
Средства визуализации
Существует множество различных программных пакетов (3d редакторов), c помощью которых можно моделировать 3D объекты и создавать на основе этих моделей фотореалистичные изображения. К ним относятся Autodesk Maya, Blender, Autodesk 3ds Max, Houdini, Modo, Cinema 4D, ZBrush, Autodesk Softimage, LightWave 3D, Rhinoceros 3D и др. В ходе работы будет использована программа Autodesk Maya. Этот программный пакет имеет огромный функционал и возможности, позволяет заниматься моделированием, текстурированием, анимированием, композитингом, рендерингом. Maya популярна среди крупных компаний, работающих над масштабными проектами в рекламе, кино, игровой индустрии. Программу можно легко подстроить под себя, что делает ее удобной в работе.
Программы, которые работают с трехмерной графикой, имеют хотя бы один встроенный рендерер (программа производящая рендеринг). Однако есть возможность подключить внешний рендерер в качестве плагина. Самые известные инструменты визуализации, которые могут использоваться как плагины во множестве программ – это MentalRay, VRay, Arnold, Redshift, Octane, RenderMan, Brazil R/S, Maxwell Render, Indigo Renderer, YafRay, POV-Ray.
Одни из самых популярных визуализаторов – это Redshift, VRay, Arnold, MentalRay. Все они поддерживают технологию распределенного рендеринга, могут производить визуализацию с использованием алгоритма трассировки луча, позволяют получить очень фотореалистичные изображения. Их используют как в больших проектах (создание фильмов), так и небольших (графика в рекламном ролике, дизайн). Redshift и Arnold являются более доступными для пользователей программными пакетами по сравнению с MentalRay, более дорогим визуализатором.
У каждого рендерера есть сильные и слабые стороны. Arnold, Mental Ray используют при рендеринге в качестве вычислительной платформы центральный процессор CPU. Преимущества Arnold рендерера это высокая оптимизация, гибкость и система плагинов, к которым относятся процедурные функции, шейдера, свои драйвера и прочее. Однако визуализация замедляется из-за данных, которые находятся в кэш памяти. Они увеличивают используемую оперативную и дисковую память.
Программа Redshift использует графический процессор GPU. Это первый в мире полностью ускоренный на GPU рендерер. Для работы необходима видеокарта от Nvidia. Он поддерживает алгоритмы brute-force GI, Photon Mapping, Irradiance Cache, Irradiance Point Cloud. Это техника глобального освещения со смещением. При визуализации данные подгружаются из оперативной памяти или жесткого диска в видеопамять графического процессора. Достаточно 1 гигабайта видеопамяти для того чтобы рендерить сложные сцены.
Сегодня уже множество новых программ для рендера конечных изображений используют мощности видеокарты (GPU). Некоторые работают полностью в облаке и не рендерят на вычислительном узле даже превью.
У каждого рендерера есть собственные шейдеры. При настройке сцены под определенный рендерер, следует перенастраивать материалы.
Вычислительные платформы
Рендеринг изображения происходит силами видеокарты (GPU) или центрального процессора компьютера (CPU). GPU рендер выполняет вычисления в графическом процессоре видеокарты. Достоинством GPU процессоров является огромная вычислительная мощность. При большом объеме информации, которая обрабатывается, GPU имеет явное преимущество. GPU применяется для обработки видео, ускорения в научных вычислениях, обработке данных, в расчете физики. В случае, когда на одной ноде свыше 2-х видеокарт, процессор не будет успевать обеспечивать запросы GPU в процессе вычисления, что приведет к ожиданию и потере полезного времени. Следовательно, бессмысленно использовать больше двух видеокарт для рендера 1 кадра на одной машине. CPU работает лучше с задачами, которые следует выполнять последовательно.
Рендеринг можно разделить на две группы по принципу действия: biased («настраиваемый») и unbiased («не настраиваемый») [5]. Biased рендер просчитывает все физические эффекты поочередно, затем соединяет их. Создается карта освещенности пространства изображения, для того чтобы понять какие участки просчитывать точно, а какие нет. Если участок слабо освещен, то сложные расчеты не проводятся. Unbiased рендер начинает обрабатывать всю сцену целиком. Качество итогового изображения улучшается по мере просчета кадра.
Система управления распределенной визуализацией. Программа Deadline
Для экономии времени на рендеринг следует создать сервис 3D визуализации, который представляет собой вычислительный кластер с установленным программным обеспечением, со всеми настройками для распространенных 3D пакетов (рендер ферму).
Создается сервис 3D визуализации с помощью системы управления визуализацией. Она позволяет построить сервис визуализации с минимальными временными и трудовыми затратами. Система предоставляет интерфейс для передачи нужной сцены на кластер, постановки и выполнения задачи, выдачи результатов работы.
Программа Deadline представляет собой систему управления рендером, инструмент для рендеринга для операционных систем Windows, Linux, Mac OS X. Она предлагает широкий диапазон управления для визуализации рендер фермой. Deadline поддерживает более 80 различных 3D пакетов. Программа позволяет безопасно подключаться и контролировать сразу несколько рендер ферм одновременно с одного экрана.[6]
Система управления распределенной визуализацией Deadline состоит из 3-х компонентов:
- база данных
- репозиторий (хранилище)
- один или несколько клиентов
База данных является глобальным компонентом системы управления визуализацией. В ней хранятся рабочие места, их настройки и конфигурации. Клиенты получают доступ базе данных через соединение по сети.
В репозитории хранятся плагины, скрипты, журналы и любые вспомогательные файлы (файлы сцены). Клиенты так же получают доступ к хранилищу по сети.
Клиент визуализации – это компьютер, через который пользователь запускает визуализацию. Он распределяет данные между нодами (узлами) и собирает результаты.
Рис. 4. Структура системы управления рендером Deadline
Программа Afanasy
Afanasy – это бесплатная программа для распределенного рендеринга. С помощью нее можно создать сервис для управления распределенной визуализацией. Она быстро объединяет удаленные компьютеры подключенные к сети для параллельного просчета. Afanasy обеспечивает мониторинг процесса распределенной визуализации. [8]
Рис. 5. Выполнение распределенного рендеринга
Также есть возможность отслеживать использование центрального процессора, оперативной памяти, жесткого диска, сетевого трафика, скорость работы дисковых операции ввода-вывода. Это помогает определить, что замедляет процесс визуализации. Можно одновременно выполнять несколько задач.
Рис. 6. Отслеживание характеристик
Подход к визуализации
Изучив различные подходы к визуализации 3D сцен, выполним рендеринг на одной машине, затем на вычислительном кластере с двумя конфигурациями. Сначала выберем в качестве вычислительной платформы на узлах центральный процессор (CPU), затем графический процессор (GPU). Далее проведем сравнение конфигураций.
Установка программного обеспечения
На машину с CPU – Intel Core i7-4770 3.40GHz 8ГБ Ram и GPU – NVIDIA GeForce GTX 660 1.5 GB был установлен программный пакет Autodesk Maya 2017 SP3.Также были установлены визуализаторы Arnold, Redshift.
На машину с CPU - Intel Core i3-3110M 2.40GHz 6ГБ Ram были установлены программы Maya, Mental Ray.
Вычислительный кластер на котором будет проведена визуализация состоит из трех нод. На каждой ноде CPU – Intel Core i7-4770 3.40GHz 8ГБ Ram и GPU – NVIDIA GeForce GTX 660 1.5 GB. На все машины были установлены необходимые программы. В качестве системы управления распределенной визуализацией была выбрана и установлена программа Afanasy.
Важно установить одни и те же версии программ на все компьютеры, для того чтобы не возникало ошибок в дальнейшей работе.
Все используемые вычислительные узлы под управлением операционной системы Windows.
Настройка сети
Все ноды вычислительного кластера должны находиться в сети. При этом они должны быть в одной сети. Для этого можно использовать маршрутизатор или коммутатор.
В данном случае все компьютеры находятся в одной локальной сети. Включим обнаружение сети и отключим защиту с помощью пароля на всех нодах. Также определим имена узлов (dml_itis, sumrak-rabota, itis-14-1406).
Настройка общего сетевого диска
На вычислительном узле dml_itis создадим папку. Открываем общий доступ к папке, подключаем сетевой диск. Выбираем произвольную букву для диска. В итоге появился новый диск на компьютере. На узлах клиентах так же подключаем общий сетевой диск.
Все ноды кластера должны видеть его. В общей папке будут храниться файлы сцены.
Настройка программного обеспечения
Запустив программу Autodesk Maya, подключаем программы для рендеринга в качестве плагина.
Настройка системы для распределенного рендеринга Afanasy.
Установив программу для распределенного рендеринга Afanasy на все ноды, настроем сервер и клиентов.
Сервером является компьютер, который отправляет различные задачи на другие клиентские компьютеры. В корневом каталоге установленной программы запустим файл start.cmd. На панели задач закрепится опция меню программы Afanasy. Выбрав в меню set to server укажем IP-адрес сервера. Также укажем путь к программе Autodesk Maya, выбрав в меню software, далее setup soft и maya. Указываем файл maya.exe.
Теперь запускаем сервер. Переходим в каталог \start\AFANASY и запускаем файл _afserver.cmd. Итак мы запустили сервер. Далее через меню запускаем start watch. Появится окно для мониторинга процесса рендеринга.
Запускаем в меню submit job. Появится окно для настройки работы, которая будет выполняться.
Запускаем в меню local render. Добавили ноду сервер для визуализации.
Теперь сервер настроен полностью и готов выполнять работу.
Аналогично запускаем на клиентах start.cmd. Указываем IP-адрес сервера и путь к программе Autodesk Maya. Запускаем визуализацию local render. Убедимся что в командной строке указано render registered. Также в окне мониторинга во вкладке renders появились клиенты.
Рис. 7. Окно мониторинга
Настройка трехмерной сцены
Настроим сцену для рендеринга. Необходимо настроить шейдеры под необходимый визуализатор, выбрать ракурс, настроить освещение, тени, установить разрешение.
Визуализация на одной машине с разными конфигурациями машины.
Сначала будем рендерить на одной машине.
На рис.8 сцена с гербом, которая содержит 635 732 полигонов.
Рис. 8. Сцена с гербом.
На рис. 9 отрендеренная сцена с гербом. Был использован визуализатор – Arnold. Рендеринг выполнялся на машине с CPU – Intel Core i7-4770 3.40GHz 8ГБ Ram. Разрешение 1920х1080. Время выполнения 26 сек.
Рис. 9. Отрендеренная сцена с гербом.
Далее сцена с гербом была отрендеренна с использованием визуализатора – Redshift. Рендеринг выполнялся на машине с GPU – NVIDIA GeForce GTX 660 1.5 GB 8ГБ Ram. Разрешение 1920х1080. Время выполнения 9.05 сек.
Далее сравнительная информация приведена в таблице 1.
Таблица 1.
Рис. 10. Сцена с кремлем.
Рис. 11. Свияжск
Рис. 12. Осенний лес.
Рис. 13. Рынок
Так же была отрендеренна сцена с торнадо с двумя конфигурациями. Объект был создан из частиц. При рендере c использованием визуализатора Redshift, необходимо было использовать программное обеспечение OpenVDB, для кэширования флюидных симуляций. Это было сделано для настройки сцены под Redshift. Результаты в таблице 2.
Рис. 14. Торнадо
Таблица 2.
Распределенная визуализация с разными конфигурациями машины.
Теперь перейдем к распределенному рендерингу. Перенесем в общую сетевую папку необходимые файлы проекта. Выберем на сервере в меню submit job.
Рис. 15. Окно начало работы
В окне Afanasy Starter выберем файл проекта. Указываем путь к общей сетевой папке. Выбираем средство для визуализации Maya. Указываем директорию для выходных данных в общей сетевой папке. Устанавливаем диапазон кадров и значение FTP (frames per task) или «кадры в задаче», то есть количество кадров отправляемых на рендер на одну ноду.
Будет отрендеренна анимация торнадо в сцена с торнадо. Сначала отрендерим с использованием визуализатора Redshift на графическом процессоре.
Рис. 16. Отслеживание рендеринга каждого кадра
Рис. 17. Мониторинг работы
Далее отрендерим с использованием визуализатора Arnold на CPU.
Также для мониторинга можно использовать веб-браузер. Для этого в меню нужно выбрать Web GUI или в браузере в адресную строку ввести IP-адрес сервера и порт, который указан в файле конфигурации.
Рис. 18. Web GUI
Результаты распределенного рендеринга в таблице 3.
Таблица 3.
Анализ и оценка полученных результатов
Получив результаты можно с уверенностью говорить, что рендеринг на GPU позволяет значительно сократить время на визуализацию высокореалистичных 3D сцен. А использование технологии распределенного рендеринга позволяет еще уменьшить время, затрачиваемое на рендер. Просмотрев результаты можно сказать, что визуализация с использованием графического процессора в качестве вычислительной платформы позволяет сократить время на рендер примерно в 25 раз. Но это зависит от сложности, загруженности сцены. Время затраты рендеринг обратно пропорционально количеству нод, используемых для визуализации.
Заключение
Выполнение правильной настройки вычислительного кластера позволит значительно сократить время выполнения визуализации. Не придется настраивать кластер при выполнении визуализации следующего проекта, останется поменять лишь сетевой путь к папке ресурсов, то есть дальнейшего вмешательства может и не потребоваться.
Созданный сервис позволит получить доступ к ресурсам рендер фермы, эффективно и удобно взаимодействовать с ней. Он сможет эффективно использоваться для рендеринга анимационных роликов, высокореалистичных изображений и других проектов.
Вычислительная мощность GPU по сравнению с CPU намного выше. Наличие большего количества вычислительных ядер по сравнению с CPU и наличие собственной памяти с высокоскоростной шиной являются достоинствами графического ускорителя. Благодаря большому количеству ядер GPU выдает высокую производительность на распараллеливаемых задачах. Использование графических ускорителей в распределенном рендеринге позволяет значительно сокращать затрачиваемое время.
Источник: docplayer.ru