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

0
234 views
«Мальчишки и девчонки, а также их родители», кто из нас не видел хотя бы одного мультипликационного творения студии Pixar? «Суперсемейка», «В поисках Немо», «Корпорация монстров», «Тачки» – эти и другие полнометражные картины, созданные аниматорами Pixar, поражают не только сюжетной выдумкой и мастерством сценического исполнения, но также великолепной реалистичной графикой, буквально оживляющей мультперсонажи и окружающую обстановку. Однако мало кому известно, что эти популярнейшие фильмы были созданы во многом благодаря аппаратным технологиям и программному обеспечению Intel.
Да, да, не стоит удивляться – не только аппаратные платформы Intel, но также инструменты Intel для разработки ПО, созданные подразделением Software and Solutions Group (SSG), помогают программистам создавать максимально быстродействующие приложения, используемые, в том числе, и в мультипликации. Корпорация Intel уделяет самое пристальное внимание проблемам разработчиков ПО, и в очередной раз подтвердила это, предложив программные инструменты, помогающие использовать преимущества многоядерных процессоров.
Новые или обновленные инструменты Intel для разработки ПО — всемирно признанные компиляторы, средства анализа и новая библиотека Intel Threading Building Blocks — делают процесс создание многопоточных приложений более легким, позволяют определять число доступных ядер и писать код, поддерживающий масштабирование в соответствии с увеличением вычислительной мощности. Результаты, а именно – повышение быстродействия ПО и ускорение разработки новых, усовершенствованных приложений – чрезвычайно привлекательны. Используя распараллеленные приложения и успешно решая проблемы переноса ПО с систем на базе одноядерных процессоров на многоядерные платформы, специалисты студии Pixar убедились в преимуществах программных инструментов SSG.
Объединяя творческий подход с передовыми технологиями, сотрудники Pixar стремятся создавать максимально реалистичные мультфильмы. Завершив предварительную работу над сценами новой картины, аниматоры Pixar отправляют данные для окончательной обработки в комплексе визуализации, состоящем из ферм рабочих станций под управлением ПО RenderMan*. Студия Pixar занимается созданием мультфильмов более 20 лет, и ее ПО RenderMan уже давно адаптировано к параллельным вычислительным средам. Правда, изначально в цифровой обработке сцен были задействованы серверы с одноядерными процессорами, что привело к перегруженности серверного центра Pixar. Для дальнейшего эффективного повышения вычислительной мощности требовалось что-то другое – вот тогда специалисты Pixar обратили внимание на многоядерные процессоры и многопоточные приложения.
«Новые многоядерные процессоры Intel с отличным соотношением производительности и энергопотребления позволяют нам наращивать производительность комплекса визуализации без его расширения, — заявила Дана Батали (Dana Batali), руководитель проекта разработки и модернизации ПО RenderMan. — Два ядра, использующие общую память, обрабатывают графические данные почти так же быстро, как два процессора с раздельной памятью, благодаря чему мы экономим значительную сумму на покупке оперативной памяти».
Однако аппаратные средства — это только одна сторона медали. Создать многопоточную версию ПО RenderMan было непросто, но это был очень важный шаг. Новая версия RenderMan должна была поддерживать не только двухъядерные процессоры, но и обеспечивать возможность перехода на многоядерные процессоры без изменения кода. Приступая к работе над проектом, специалисты Pixar решили воспользоваться инструментами Intel и помощью экспертов Intel.
«Обладая глубочайшими знаниями и богатым опытом разработки ПО, специалисты корпорации Intel по-настоящему помогли нам ускорить создание новой версии приложения RenderMan, подробно объяснив концепции многопоточности и научив эффективно использовать инструменты Intel для разработки ПО», — сказала Дана Батали.
Такие инструменты, поддерживающие как 32-разрядные, так и 64-разрядные приложения, помогают разработчикам создавать многопоточный код с учетом масштабирования при увеличении числа процессорных ядер, заблаговременно определять потенциальные ошибки, находить в коде «узкие места» и анализировать общее быстродействие приложений.
 
IntelThreadingBuildingBlocks 1.0
Intel Threading Building Blocks 1.0 — это библиотека, которая расширяет возможности языка C++, значительно облегчая создание параллельных приложений. Она упрощает распараллеливание приложений на несколько исполняемых потоков и позволяет повышать быстродействие кода, скрывая при этом низкоуровневые нюансы распределения потоков между ядрами процессора и избавляя разработчиков от написания, тестирования и оптимизации типичных параллельных алгоритмов и структур данных.
Используя библиотеку Intel Threading Building Blocks, можно создавать приложения, автоматически определяющие количество доступных ядер и регулирующие в соответствии с этим свою работу. Это сокращает объем кода, который приходится переписывать для адаптации к будущим процессорам с большим числом ядер, к тому же приложения, использующие эту библиотеку, лучше масштабируются, и их проще разрабатывать.
 
IntelThreadChecker 3.0
Intel Thread Checker 3.0 — это инструмент анализа многопоточных приложений, который помогает писать многопоточный код, сводя к минимуму вероятность ошибок. Благодаря передовому запатентованному механизму защиты от ошибок, он обеспечивает безопасность в многопоточной среде, указывая на самые малозаметные ошибки в многопоточных 32- и 64-разрядных приложениях. Инструмент Intel Thread Checker 3.0 позволяет разобраться в тончайших нюансах использования потоков Windows*, POSIX или OpenMP. В этом смысле он уникален.
«Один из наших разработчиков рассказал, что благодаря инструменту Intel Thread Checker он смог всего лишь за один вечер найти проблему, на диагностику которой в противном случае ушли бы недели или даже месяцы», — поделилась информацией Дана Батали.
 
IntelThreadProfiler 3.0
Инструмент Intel Thread Profiler 3.0 для ОС Windows предоставляет информацию о взаимодействии потоков в приложении. Он визуализирует выполнение потоков, указывая при этом на «узкие места» и другие подобные проблемы. Кроме того, он позволяет узнать, сколько ядер процессора используются приложением достаточно эффективно, и указывает процент кода, параллельное выполнение которого организовано для конкретной аппаратной платформы не лучшим образом.
Используя инструмент Intel Thread Profiler 3.0, разработчики могут быстро создавать многопоточные прототипы однопоточных фрагментов кода, определяя фрагменты, распараллеливание которых обеспечит максимальную выгоду.
 
Разработчики ПО понимают, что их успех неразрывно связан с многоядерными процессорами и многопоточными приложениями: достаточно сказать, что в 2005-2006 годах число пользователей инструментов, выпущенных подразделением SSG и служащих для создания многопоточного кода, удвоилось. А новые инструменты помогут создавать еще более полезные приложения.