CPU, который нарисовал Шрека

Несколько часов назад я вернулся из Лос-Анжелеса. Во время поездки состоялось множество встреч разного рода, но одна заметно выделяется на общем фоне. Шутка ли, удалось поговорить с главой отдела R&D знаменитой студии DreamWorks Линкольном Уолленом (Lincoln Wallen), поделившимся информацией о технической стороне создания мультфильмов.

То, что все новые мультфильмы DreamWorks рисуются исключительно на процессорах Intel – не секрет. На вопрос – почему Intel? – Линкольн ответил просто: «Мы, знаете ли, привыкли выбирать лучшее». И уточнил, что под лучшим он имеет в виду не только производительность, но и энергоэффективность, управляемость, совместимость, а также поддержку со стороны производителя. Последнее в данном случае означает не просто круглосуточный телефонный номер, по которому можно позвонить и погрустить с хорошей девушкой, а оптимизацию приложений DreamWorks силами инженеров Intel. По крайней мере, мои источники в корпорации сообщили о наличии целого отдела в Intel Software and Services Group, занимающегося исключительно DreamWorks.

DreamWorks

Сегодня мультфильмы рассчитываются усилиями примерно 32 000 процессорных ядер. Процессоры самые разные, от 4- до 12-ядерных, и еще Линкольн обмолвился, что к концу года ждут 24-ядерники. На один мультфильм обычно уходит 4-5 лет, причем на вычисления – около двух лет. Скорость процессоров на сроки практически не влияет – она «лишь» добавляет простора для фантазии дизайнеров, что делает мультфильмы все более и более эффектными. Очевидно, что так будет и впредь. Одновременно в работе находятся 2-3 проекта. Так, сейчас на экраны выходит «Кунг-Фу Панда 2», по осени ожидается полнометражный мультфильм о Коте из «Шрека», а вообще в DreamWorks уже сегодня знают – чем конкретно будут заниматься до конца 2020 года.

Я уточнил – верно ли, что все вычисления идут только силами CPU? А как же GPU – такие мощные и многоядерные? Линкольн сказал, что GPU применяется только для черновых вычислений – например, когда дизайнеру надо побыстрее посмотреть какую-то сцену или трехмерную модель после внесенных изменений. Но то, что мы видим на экране – это уже результат трудов CPU. Почему так? Во-первых, вычисления на процессорах очень легко (и безопасно для результата) масштабируются. Когда считаешь картинку для нескольких проектов одновременно, и надо один ускорить, а второй, наоборот, притормозить, потому что у сценаристов родилась гениальная идея, это очень важно. На GPU подобная гибкость (с точностью до одного ядра) пока недостижима. Во-вторых, процессор способен эффективно взаимодействовать с поистине огромными объемами памяти. Точнее, это для нормального человека они огромные, а для дизайнеров DreamWorks и текстур, ими используемых, - в самый раз. Ни один GPU нужный студии объем памяти адресовать не способен.

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

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

А в целом, конечно, все логично. Если GPU толком нельзя доверить даже пережим серии «Теории большого взрыва», до создания вселенных – пусть и мультяшных - его пока допускать уж точно не стоит.
For more complete information about compiler optimizations, see our Optimization Notice.