Многоядерные технологии Intel: на службе мультипликации

Кто из нас не видел хотя бы одного мультипликационного творения студии Pixar? "Суперсемейка", "В поисках Немо", "Корпорация монстров", "Тачки" - эти и другие полнометражные картины, созданные аниматорами Pixar, поражают не только сюжетной выдумкой и мастерством сценического исполнения, но также реалистичной графикой, буквально оживляющей мультперсонажи и окружающую обстановку.

Однако мало кому известно, что эти популярнейшие фильмы были созданы во многом благодаря аппаратным технологиям и программному обеспечению Intel. Не только аппаратные платформы Intel, но также инструменты Intel для разработки ПО, созданные подразделением Software and Solutions Group (SSG), помогают программистам создавать максимально быстродействующие приложения, используемые, в том числе, и в мультипликации.

Объединяя творческий подход с передовыми технологиями, сотрудники Pixar стремятся создавать максимально реалистичные мультфильмы. Завершив предварительную работу над сценами новой картины, аниматоры Pixar отправляют данные для окончательной обработки в комплексе визуализации, состоящем из ферм рабочих станций под управлением ПО RenderMan. Студия Pixar занимается созданием мультфильмов более 20 лет, и ее ПО RenderMan уже давно адаптировано к параллельным вычислительным средам.

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

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

Такие инструменты, поддерживающие как 32-разрядные, так и 64-разрядные приложения, помогают разработчикам создавать многопоточный код с учетом масштабирования при увеличении числа процессорных ядер, заблаговременно определять потенциальные ошибки, находить в коде "узкие места" и анализировать общее быстродействие приложений.

Intel Threading Building Blocks 1.0 - это библиотека, которая расширяет возможности языка C++, значительно облегчая создание параллельных приложений. Она упрощает распараллеливание приложений на несколько исполняемых потоков и позволяет повышать быстродействие кода, скрывая при этом низкоуровневые нюансы распределения потоков между ядрами процессора и избавляя разработчиков от написания, тестирования и оптимизации типичных параллельных алгоритмов и структур данных. Используя библиотеку Intel Threading Building Blocks, можно создавать приложения, автоматически определяющие количество доступных ядер и регулирующие в соответствии с этим свою работу. Это сокращает объем кода, который приходится переписывать для адаптации к будущим процессорам с большим числом ядер, к тому же приложения, использующие эту библиотеку, лучше масштабируются, и их проще разрабатывать.

Intel Thread Checker 3.0 - это инструмент анализа многопоточных приложений, который помогает писать многопоточный код, сводя к минимуму вероятность ошибок. Благодаря передовому запатентованному механизму защиты от ошибок, он обеспечивает безопасность в многопоточной среде, указывая на самые малозаметные ошибки в многопоточных 32- и 64-разрядных приложениях. Инструмент Intel Thread Checker 3.0 позволяет разобраться в тончайших нюансах использования потоков Windows, POSIX или OpenMP.

Инструмент Intel Thread Profiler 3.0 для ОС Windows предоставляет информацию о взаимодействии потоков в приложении. Он визуализирует выполнение потоков, указывая при этом на "узкие места" и другие подобные проблемы. Кроме того, он позволяет узнать, сколько ядер процессора используются приложением достаточно эффективно, и указывает процент кода, параллельное выполнение которого организовано для конкретной аппаратной платформы не лучшим образом. Используя инструмент Intel Thread Profiler 3.0, разработчики могут быстро создавать многопоточные прототипы однопоточных фрагментов кода, определяя фрагменты, распараллеливание которых обеспечит максимальную выгоду.

©1997-2024 Компьютерная газета