Продукты семейства Intel® Threading Tools помогают повысить производительность ресурсоёмких приложений компьютерной графики

Создать новую статью

07.06.2008 19:45


Введение

Продукты семейства Intel® Threading Tools помогают компании Autodesk оптимизировать программное обеспечение Maya*. В статье рассказывается о совместной работе Autodesk с инженерами Intel над реализацией проекта по распараллеливанию модуля Maya Fluid Effects*.


Для компании Autodesk из Торонто настали хорошие времена. Maya*, флагманский продукт компании, занимает ведущее положение на рынке программного обеспечения для создания цифрового контента (DCC, Digital Content Creation) в области трёхмерного моделирования, анимации, спецэффектов и рендеринга. Художники, использующие Maya, создают потрясающие изображения для самых различных областей индустрии, начиная от цифровой печати и компьютерного дизайна и заканчивая телевидением и компьютерными играми.

Отдельно стоит отметить киноиндустрию. Несмотря на достаточно скромное прошлое компании в Канаде, где она была основана, программы Autodesk использовались при создании визуальных эффектов для ряда голливудских блокбастеров, имевших огромный успех в мировом прокате, в числе которых трилогия «Властелин колец» и приквелы «Звездных войн»*.


При этом для Autodesk и других компаний сегмента DCC планка требований постоянно повышается. Любителей кино и компьютерных игр уже не удивишь фотореалистичной графикой и надо приложить значительные усилия, чтобы визуальные эффекты не вызывали у них недоверия. Поэтому создание и рендеринг максимально детализированных образов продолжают оставаться одними из самых ресурсоемких операций компьютерной графики.


«Ведущие компьютерные студии полагаются на программное обеспечение Maya в реализации самых современных проектов, и важнейшим фактором для них является производительность», - поясняет инженер Autodesk Мартин Уотт (Martin Watt). «Ключевую роль для нас играет оптимизация любых процессов, например, повышение скорости интерактивного рисования или сокращение времени визуализации тысяч кадров».



(Нажмите на изображение для увеличения)


Изображение предоставлено Данканом Бринсмидом (Duncan Brinsmead), Autodesk


Объединенная команда инженеров Autodesk и Intel провела серьезную работу, реализуя параллельные вычисления в Maya Fluid Effects. Данный ресурсоемкий набор инструментов включает полноценный трехмерный вычислительный модуль и интерактивный двухмерный модуль, которые позволяют симулировать двухмерное движение текучей среды в режиме, приближенном к реальному времени. Выше представлен пример атмосферного эффекта, созданного с помощью Maya. Атмосферные эффекты, включая дым от грибовидного облака, являются одним из типов поддающегося симулированию движения текучей среды.


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


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


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


Команда инженеров Autodesk-Intel решает проблему многопоточности

Учитывая перемены в отрасли производства микрочипов, весной 2005 года компания Autodesk решила попробовать использовать технологию параллельных вычислений в модуле Maya Fluid Effect*. Целью работ стало ядро системы Maya Fluid Effects – модуль вычисления движений текучей среды, пропускающий данные через уравнения Навье-Стокса(Navier-Stokes equations), хорошо известные специалистам в области физики в качестве средства описания движения текучих сред.


Autodesk сотрудничала с инженерами компании Intel при работе над проектом многопоточных вычислений в рамках программы Intel по содействию клиентам в области совершенствования ПО. И даже несмотря на присутствие на проекте специалистов по многопоточным технологиям из Intel, Уотт немного волновался.


«Устранение ошибок в параллельных приложениях является исключительно сложной задачей», - говорит Уотт. «В прошлом мы потратили много времени на то, чтобы заставить части нашего программного кода корректно выполняться в многопоточной среде».


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


Успешная параллелизация программного обеспечения Maya преимущественно была достигнута благодаря использованию комплекта инструментов Intel® Threading Tools. Например, с помощью программы Intel® Thread Checker быстро удалось найти несколько трудноуловимых проблем с параллельными операциями. В условиях приближения срока завершения проекта альтернатива в виде ручного устранения ошибок в крупной и сложной системе Maya казалась малопривлекательной и, возможно, даже нереальной.


Intel® Thread Profiler помогла проанализировать узкие места и решить особенно важный недостаток, проявившийся уже на начальном этапе проекта. Одна часть распараллеленного модуля вычислений движения текучей среды работала медленнее, чем его первоначальный вариант.


« Продукт Intel® Thread Profiler помог быстро выявить проблемные области и показал причины замедления работы, в результате чего мы смогли реструктурировать программный код для обеспечения более высокой производительности многопоточных вычислений», - говорит Уотт.


Разработчики внесли поддержку дополнительных потоков, добавив несколько директив OpenMP* в код модуля движения текучей среды. Эти потоковые директивы выглядят как комментарии в других компиляторах (не использующих интерфейс OpenMP), которые просто игнорируют директивы компиляции. В отличие от этого компиляторы OpenMP, например Intel® C++ Compilers, находят директивы и реализуют многопоточность.


«Интерфейс OpenMP является полезным средством создания прототипов при распараллеливании алгоритмов, поскольку его очень легко применять к существующему программному коду», - говорит Уотт. «Его также легко включить и выключить, благодаря чему появляется возможность быстро сравнить результаты с включенной и выключенной поддержкой многопоточности».


Изображение предоставлено Мартином Уоттом, Autodesk

Мартин Уотт, инженер компании Autodesk, входил в состав команды инженеров Autodesk и Intel. «В прошлом мы потратили много времени на то, чтобы части нашего программного кода корректно работали в многопоточной среде» - говорит Уотт. «При работе над внедрением параллельных вычислений в Maya 7 мы смогли использовать программы Intel® Thread Checker и Intel® Thread Profiler для анализа нашего кода на предмет корректной параллельной работы и оценки полученной производительности».


И победа присуждается...

Результаты работы команды по созданию прототипа были поразительными. По словам Уотта, многопоточный вычислительный модуль движения текучей среды заработал на 85 процентов быстрее на компьютере с двумя процессорами Intel® Xeon®. Кроме этого, скорость работы возросла более чем на 115 процентов при использовании программы на двухпроцессорной системе Intel Xeon с технологией Hyper-Threading.


От вложений в многопоточность будут получены сходные «дивиденды» при использовании данной технологии на многоядерных платформах, число которых, как ожидается, в будущем только вырастет. Например, по прогнозам компании Intel, к концу 2006 года существенная часть поставок серверных процессоров компании, а также процессоров для мобильных устройств и персональных компьютеров семейства Pentium® будет приходиться на многоядерные системы.


В число дополнительных средств, использованных командой инженеров Autodesk и Intel, входила программа Intel® VTune™ Performance Analyzer, применявшаяся для определения тех операций, в которых вычислительный модуль движения текучей среды задействовал большую часть ресурсов процессора. Затем программный код был изучен на предмет степени его восприимчивости к технологии многопоточности. Эти данные позволили команде применить закон Амдаля (Amdahl's Law) для определения возможной степени повышения производительности за счет использования параллельных вычислений.


Закон Амдаля позволяет количественно оценить естественные закономерности выполнения программного кода: чем меньше программа зафиксирована на линейных и последовательных сегментах, тем больше возможностей повысить производительность за счет параллельных операций.


«Для чего применяется Закон Амдаля? Для того, чтобы понять, насколько еще можно повысить производительность», - говорит Роберт Рид (Robert Reed), один из инженеров Intel, работавших над проектом.


Ожидания пользователей

Многопоточный и более производительный программный код был готов в срок для включения в релиз Maya 7. И хотя это пока единственный случай быстрого и очевидного успеха технологии многопоточных вычислений, пример сотрудничества Intel и Autodesk сулит большой потенциал для конечных пользователей, на которых вот-вот «обрушится» поток многоядерных платформ: от карманных компьютеров и ноутбуков до рабочих станций и серверов.


Для непрерывного роста производительности при работе на данных платформах пользователям будет необходим доступ к расширенному портфелю многопоточных программ. Одним из пользователей программного обеспечения Maya является Роб Ван ден Брагт (Rob van den Bragt), начальник отдела компьютерной графики лондонской компании «The Mill», которая завоевала награду Оскар* за спецэффекты.


«Учитывая сложность симуляции движения текучей среды, нам нужна максимальная вычислительная мощность», - говорит Ван ден Брагт. «Поэтому известия о приросте производительности за счет поддержки многопоточности модулем вычисления текучей среды в Maya 7 были встречены нами с распростертыми объятиями».


Совместная работа с Intel произвела сильное впечатление на Уотта и его коллег-инженеров из Autodesk, задача которых заключается в том, чтобы такие нуждающиеся в высокой производительности клиенты, как Ван ден Брагт, оставались довольными.


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


Дополнительные ресурсы


Статьи


Центры разработки


Обучение