суббота, 3 мая 2014 г.

Autodesk Maya 2015 и функции с GPU ускорением

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

Исследования проводились на рабочей станции X1240q от компании FORSITE. В станции использованы два GPU компании NVIDIA, а именно NVIDIA Quadro K2000 и NVIDIA Quadro K4000. В качестве основной операционной системы выбрана Microsoft Windows 8.1 Pro. Версия драйвера GPU – 332.76.
В драйвере версии 332.76 полноценно реализована поддержка NVIDIA CUDA 5.5 и NVIDIA CUDA 6.0, DirectX 11 и OpenGL 4.4. Новая версия Maya использует возможности данных API для достижения большой производительности в обработке виртуального пространства и сложной геометрии.
НА ЗАМЕТКУ. Пакет Autodesk Maya до сих пор использует API OpenGL 2.X для отображения виртуального пространства. Это объясняется тем, что программа должна работать на максимально большом списке доступного оборудования и поддерживаться графическими ускорителями различных вендоров.

Системная топология рабочей станции FORSITE X1240q с двумя GPU NVIDIA Quadro.
На приведенной выше иллюстрации показана системная топология рабочей станции FORSITE X1240q. В качестве основного GPU выступает модель Quadro K2000 в тоже время, в качестве со-ускорителя используется Quadro K4000, обладающая большим объемом памяти и большей производительностью. Основной графический процессор используется для вывода изображения на два Full HD дисплея, с общим разрешением в 3840x1080 точек.


ВАЖНО! В данной серии постов рассматривается только платформа профессиональной графики NVIDIA в которую входят графические ускорители линеек NVIDIA Quadro и NVIDIA Tesla. За счет оптимизации драйвера под такие приложения как Autodesk Maya, Autodesk Softimage, Autodesk Mudbox и  Side Effects Software Houdini, поддержка Open GL для них реализована наиболее полно.
Если приложение не требовательно к вычислительным ресурсам, то будут использованы возможности только одного графического процессора, в тоже время, такие приложения как Autodesk Maya будут использовать возможности второго и даже третьего ускорителя.

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

Пример трансформации положения камеры и реакция второго графического ускорителя в процессе обработки сцены. Красный – NVIDIA Quadro K2000, Зеленый – NVIDIA Quadro K4000.
Еще одна очень полезная функция современных графических ускорителей – возможность использовать их оперативную память для хранения и загрузки объектов сцены. Обычно, в процессе анимации или работы над моделью, вы можете использовать полноценную модель с текстурами и высоким количеством полигонов. Но это может существенно снизить производительность в процессе воспроизведения анимации или в процессе работы с моделями в сцене.
Такие графические ускорители как NVIDIA Quadro и NVIDIA Tesla обладают достаточными объемами памяти для того, чтобы поместить в нее достаточно сложную геометрию и использовать для отображения в упрощенном виде без использования полноценной оперативной памяти рабочей станции.
Вернемся к нашей сценке. Одна из камер, обладает небольшой анимацией, где она пролетает над железнодорожными путями и оборачивается вокруг оси Y на 120 градусов.
В процессе воспроизведения анимации программа воспроизводила ее со скоростью в среднем 6 – 8 кадров в секунду. Конечно, можно повысить скорость воспроизведения самыми различными способами, вплоть до приобретения более высокопроизводительных графических ускорителей. Но в большинстве случаев данный подход будет не самым оптимальным.

Воспроизведение анимации камеры без преобразования геометрии в GPU Cache.
В Autodesk Maya 2013 пользователи получили возможность использовать память и высокую производительность графических ускорителей для того, чтобы работать со сложной геометрией и большим количеством объектов. Рассмотрим GPU Cache подробнее и протестируем его на нашей сцене.
Создание кэша выполняется с помощью соответствующего меню Pipeline Cache => GPU Cache => Export All => [] или для …Export Selection => [] для выделенных объектов. В нашем случае мы создали кэш для шпал, рельс и креплений.
Окно GPU Cache Export Options с параметрами для экспорта модели в формат Alembic.
С помощью инструментария предоставляемого GPU Cache, все рельсы, шпалы и элементы креплений были экспортированы в формат Alembic (*.adc). Так как данные объекты не анимированы и просто статичны, был выбран режим Current Frame для параметра Cache time range.
Загрузив с помощью команды Pipeline Cache => GPU Cache => Import => [] полноценная модель была заменена на упрощенную из файла Alembic. В тоже время, данные были загружены в память второго графического ускорителя – NVIDIA Quadro K4000.
Повышенная производительность при воспроизведении анимации с GPU Cache геометрией.
При запуске воспроизведения анимации уже не прослеживается явного снижения производительности, и средняя частота кадров держится на 25 – 30 кадрах в секунду, что и демонстрирует иллюстрация выше. Проследить за тем, как используется память второго графического ускорителя можно на иллюстрации ниже. Здесь представлены данные загрузки ГП и объем используемой памяти (утилита GPU-Z).

Информация и статистика используемой графической памяти инструментом GPU Cache.
Управление GPU Cache и его тонкая настройка, выполняются с помощью глобальных параметров программы, доступных в меню Window => Settings / Preferences => Preferences => GPU Cache.
Глобальные параметры GPU Cache доступные в диалоговом окне Preferences.
По умолчанию Maya определяет второй доступный GPU в системе. В нашем случае – NVIDIA Quadro K4000 с 3Гб графической памяти, которая и используется для хранения кэш-данных.
Еще одна роль графических ускорителей в Maya 2015 – ускорение вычислений тесселяции геометрии. С внедрением библиотек и технологий OpenSubdiv от анимационной студии PIXAR, стало возможным работать с детализированной геометрией.
Доступ к OpenSubdiv можно получить из узла mesh любого полигонального объекта. Свиток Smooth Mesh содержит раскрывающийся список Subdivision Method, в котором выбирается оригинальный метод подразделенных поверхностей или OpenSubdiv. Дополнительный контроль метода подразделенных поверхностей осуществляется с помощью свитка OpenSubdiv Controls.

Свиток Smooth Mesh в узле mesh.
Рассмотрим то, как задействуется графический ускоритель в процессе работы с OpenSubdiv. Отметим, что OpenSubdiv отлично помогает в процессе работы с анимацией и деформацией геометрии. Однако в процессе создания новых элементов (граней, ребер и вершин) он может не так существенно повысить производительность.

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

Нагрузка на GPU с активным сглаживанием геометрии с применением OpenSubdiv.
Когда активизирован алгоритм тесселяции геометрии и в качестве текущего метода подразделения поверхностей выбран OpenSubdiv, алгоритм будет задействовать второй графический процессор для со-ускорения вычислений деформации геометрии и обработки сцены в процессе трансформации позиции камеры и других операций. На рисунке выше приведен пример реакции графического ускорителя на трансформацию нескольких выделенных полигонов при активизированном сглаживании геометрии и OpenSubdiv. А в процессе воспроизведения анимации, графический процессор будет использован для ускорения вычислений деформации геометрии.
В принципе, полноценный переход на Viewport 2.0 и поддержку новых стандартов тесселяции, помогают более наглядно и детальнее представить геометрию в сцене, а использование в качестве хранилища кэш данных память графических ускорителей позволило значительно увеличить производительность воспроизведения анимации. Объемы памяти современных GPU, достигающие 12Гб и выше, предоставляют отличную возможность создания кэша для анимированных эффектов, создающих геометрическую сетку. А связывание их с полноценными моделями, при последующей финальной визуализации загрузит их, и на изображении вы увидите полноценную модель.
Мы рассмотрели только малую часть из возможностей новой Maya, позволяющих применять GPU. Во второй части мы уделим внимание возможностям новой версии mental ray, в которой реализована поддержка вычислений Ambient Occlusion и Final Gather на GPU.
Ниже, представлены примеры ранних экспериментов с Viewport 2.0 и OpenSubdiv в Maya 2015. Эти видео были показаны 10 апреля в рамках моего вебинара посвящённого новой версии Maya.
Webinar Autodesk Maya 2015 Viewport 2.0 GPU Cache


Webinar Autodesk Maya 2015 - OpenSubdiv crease


Autodesk Maya 2015 New Features OpenSubdiv


До скорой встречи. Ваш dimson3d!

Комментариев нет: