С 1 по 5 апреля 2013 года в ЮУрГУ (Южно-уральский государственный университет) прошла международная научная конференция «Параллельные вычислительные технологии (ПаВТ) 2013». Во время конференции Андрей Сёмин, технический директор направления высокопроизводительных вычислений компании Intel в регионе ЕМЕА провел круглый стол для московских журналистов.
Андрей Сёмин: Любые сопроцессоры оптимизированы для решения того или иного типа задач. Исторически многие процессоры выполняли только целочисленные операции, но для ускорения вычислений в числах с плавающей запятой выпускали математические сопроцессоры: например для процессоров Intel 8080 был создан сопроцессоры Intel I8231 , ускорявший вычисления с плавающей запятой. Сопроцессоры выпускались не только Intel, а и другими компаниями, но тогда они были известны небольшому количеству специалистов. Когда стали развиваться такие приложения, как электронные таблицы, появился графический интерфейс Windows для платформ PC, стало понятно, что сопроцессоры могут быть полезны всем. Вскоре математические сопроцессоры с набором инструкций x87 для обработки чисел с плавающей запятой были интегрированы в центральный процессор. Декадой позже, с ростом популярности мультимедийных приложений обработки звука и видео для персональных компьютеров, в центральный процессор семейства Pentium был интегрирован наборы инструкций MMX позволявший, впервые для процессоров Intel, вести векторизованную обработку данных.
Аналогичная ситуация происходит и с развитием параллельных вычислений. Всё больше приложений поддерживают векторную обработку данных и могут выполнять большое количество параллельных программных потоков. Часть таких приложений сегодня достаточно эффективно используют на графические ускорители: это, прежде всего, компьютерные игры и приложения обрабатывающие видео данные.
В сфере высокопроизводительных вычислений многие приложения хорошо распараллеливаются и используют векторизованную обработку данных.
Итак, Xeon Phi и вся концепция ManyCore – это большое количество унифицированных ядер?
Да. Мы в Intel рассматривали разные варианты: например, в проекте Larrabeе были использованы разные вычислительные ядра – были как обычные ядра с набором инструкций на базе x86, так и специализированные: использовавшиеся для обработки текстур, что требовалось для Larrabeе как графического процессора. Но, в конце концов, для Intel Xeon Phi решили остановиться на наборе одинаковых простых ядер. Основная причина была в том, что ядра с разной архитектурой в одном процессоре значительно сложнее программировать, чем набор одинаковых ядер. Larrabee изначально был ориентирован на решение графических задач, движок которых можно запрограммировать один раз и использовать многократно через программные интерфейсы библиотек типа DirectX или OpenGL. Для многофункционального сопроцессора это нереально: приложения в области высокопроизводительных вычислениях написаны с использованием компилируемых языков программирования как Fortran, C, C++, и имеют значительно большее разнообразие используемых алгоритмов по сравнению с графическим конвейером.
По сути дела Xeon Phi – это продукт, востребованный рынком HPC: сопроцессор для выполнения параллельных вычислений из большого количества простых ядер. Этот рынок быстро растет, в связи с ростом интереса к обработке больших массивов данных (Big Data) он будет расти еще быстрее.
А готовы ли программисты к переходу на параллельные вычисления? Есть ли у них все необходимые инструменты для этого?
Конечно. Для Intel Xeon Phi уже есть компиляторы Fortran, C, C++, математические библиотеки реализующие набор библиотек популярных в высокопроизводительных вычислениях функций BLAS, LAPACK, FFTW, и др., профилировщики, отладчики. Естественно, что набор доступных инструментов для Intel Xeon Phi со временем будет расширяться и улучшаться, но сейчас есть полный набор инструментов для разработки, отладки и оптимизации приложений.
Несмотря на то, что перенос приложений на Intel Xeon Phi очень прост, оптимизация их работы все равно может потребоваться. Это естественно, поскольку архитектура Intel MIC (Many Integrated Cores) – это некоторое революционное преобразование, переход от около дюжины потоков на процессоре к работе с 240 потоками доступными на одном кристалле.
При этом часто возникают проблемы масштабирования приложений: насколько эффективно приложение может использовать 240 потоков на процессоре с 8 ГБ оперативной памяти? Многие инженерные задачи до сих пор работали на кластерах, используя 128 ядер в 8 узлах. Однако, в кластере обычно доступно по 2 ГБ памяти на каждое ядро. Очевидно, что не все задачи можно будет перевести на Xeon Phi, и, наверное, не нужно – часть задач могут успешно продолжать считаться на Intel Xeon.
Не надо забывать и о том, что большое количество алгоритмов и приложений было написано 40-50 лет назад, а их разработчики уже отошли от активной деятельности. Тут ничего не поделаешь. Часто попытка распараллелить и векторизовать такой код приводит к изменению результатов вычислений: теряется повторяемость результатов.
Повторяемость результатов – важнейший вопрос. Поясните, в чем здесь проблема.
Даже сложение трех чисел с плавающей запятой можно выполнить несколькими путями, и получить разные результаты. Сложить первое со вторым сначала, или второе с третьим. Если из этих чисел одно очень большое (с точки зрения разрядности регистра процессора), а другое – очень маленькое, то результат будет зависеть от расставления скобок и порядка вычислений. Все зависит от того, как будет происходить округление и какие части будут при этом теряться.
Алгоритмы могут параллелиться по-разному, и в большинстве случаев невозможно гарантировать порядок выполнения операций в параллельных потоках, и поэтому численные результаты могут быть разными. Регистры во всех процессорах имеют конечные размеры.
Есть ли рекомендации, где надо использовать Xeon Phi?
Сопроцессор Intel Xeon Phi можно использовать в четырех различных режимах. Есть еще один – тривиальный: это когда сопроцессор можно просто не использовать, а считать задачу только на процессорах Xeon.
Первый режим во многом повторяет использование GPU – это работа в режиме offload, когда часть функций выгружается для исполнения на сопроцессоре Xeon Phi. Приложение, выполняемое на центральном процессоре Xeon, передает часть функций и соответственно данных для обработки на сопроцессор Intel Xeon Phi, и результат выполнения выгруженной функции возвращается обратно.
Второй режим – полное исполнение приложения только на Xeon Phi. Это возможно, поскольку сопроцессор – это по сути дела независимый вычислительный узел. Здесь есть только одно ограничение: приложение должно эффективно использовать 240 потоков доступных в сопроцессоре Intel Xeon Phi и ему должно хватать 8 ГБ оперативной памяти для работы.
В третьем режиме приложение частично работает на Xeon и частично на Xeon Phi. Такой подход позволяет без значительных затрат на портирование использовать все ресурсы вычислительного узла. Недостаток этого режима – проблема балансировки нагрузки. Ядра на Xeon более производительны, но на Phi их больше, поэтому требуются некоторые усилия разработчиков по соответствующему разделению работы между ядрами Xeon и Xeon Phi пропорционально их вычислительной мощности для конкретной задачи.
Пятый режим заключается в том, задача выполняется на Xeon Phi и только некоторые ее моменты выгружаются для выполнения на Xeon.
Именно благодаря наличию нескольких режимов работы, в которых Xeon Phi кооперативно выполняет решаемую задачу с центральным процессором, он называется сопроцессором, а не ускорителем.
Итак, графические ускорители и Xeon Phi не конкуренты друг другу?
Они действительно работают по-разному, но в то же время они могут решать одинаковые задачи. Есть приложения, где одинаково хорошо работают те и другие.
Важно подчеркнуть, что для Intel архитектура Intel MIC и семейство Intel Xeon Phi – это стратегическая платформа, рассчитанная на много лет. У нас уже разрабатываются несколько следующих поколений этого сопроцессора.
Одна из популярных тенденций сегодня – Big Data. Объем информации растет экспоненциально, и мы должны учиться отыскивать в этом океане крупицы нужной нам информации. Для этого могут пригодиться будущие поколения Phi. Проблема появилась не вчера, в частности, физики в ЦЕРН работают над подобной проблемой уже много лет.
Почему именно такой формфактор был выбран для Phi? Он ведь не оптимален?
Мы в Intel всегда стараемся максимально использовать то, что уже сделано. Использование некоторых наработок проекта Larrabee позволяло сократить время выхода сопроцессора Intel Xeon Phi на рынок. Для Larrabee, была доступна отлаженная и валидированная аппаратная платформа. В этом компромисс. Второе – использование наработок Intel для ОС Linux для Xeon и микро ОС проекта Larrabee – это позволило быстро выпустить эффективную ОС на базе Linux, чтобы можно было использовать сопроцессор Intel Xeon Phi как отдельный вычислительный узел. Третье – обычно, после того как Intel выдает производителям серверных плат документацию и первые образцы процессоров платы проходит 6-9 месяцев до выхода коммерческого продукта на рынок. В случае Phi выпуск карточки в формате PCI Express позволило нам значительно сократить время выхода сопроцессора на рынок.
Поэтому я согласен с тем, что формфактор может быть не самым оптимальным, но зато мы вышли на рынок в нужный момент. Не надо забывать, что Intel – коммерческая компания, и каждый проект должен зарабатывать деньги на свое существование самостоятельно. На разработку семейства сопроцессоров Intel MIC будет затрачено около 1 миллиарда долларов. Это самый большой по площади кристалл, который мы когда-либо делали. Это самый тепловыделяющий кристалл. Очень много вещей при его разработке мы делали в первый раз.
Одним продуктом нельзя перекрыть все возможные направления его использования. Intel ведет какие-то разработки в этом направлении?
Я уже говорил об этом: универсальное решение не может быть самым эффективным. Специализированное решение всегда лучше с точки зрения конкретной задачи, для которой это решение создано. Универсальное решение может выигрывать только с точки зрения общей стоимости владения, в частности, в плане разработки ПО и долгосрочной стоимости владения.
Несколько лет назад у Intel была единая архитектура Netburst для всего спектра решений – от ноутбуков до тяжелых серверов. С тех пор ситуация изменилась: мы разрабатываем оптимизированные решения для различных сегментов применения. У нас появился процессор Atom, который успешно используется в смартфонах и нетбуках. Продолжается развитие процессоров Core и Xeon. Появились специализированные сопроцессоры для высокопараллельных вычислений Intel Xeon Phi. Мы сохраняем микроархитектуру Itanium, так как она очень востребована на рынке отказоустойчивых решений. Наши решения диктуются рынком: если рынок растет и принимает наш продукт – мы его развиваем. Если рынок меняется и предъявляет новые требования к процессорам – мы создаем новые решения для этого рынка.
Заканчивая про Intel Xeon Phi, хотелось бы отметить еще один важный момент: это наличие в России такого надежного и интересного партнера, как группа компаний РСК. Только благодаря нашему тесному сотрудничеству появление нового сопроцессора совпало по времени с выходом и внедрением суперкомпьютеров на его основе. Причем это единственное суперкомпьютерное решение, которое было доступно за пределами США, и было выполнено с большим количеством инноваций: в области архитектуры системы и ее инфраструктуры. Это очень важно. Такого в нашей истории пока не было. Очень важно и то, что в России могут делаться и делаются конкурентные суперкомпьютерные решения на мировом уровне. Это не менее важно, чем появление самого процессора. Стоит вспомнить, что и первый смартфон на основе процессора Atom, появился в России одним из первых среди других стран. Это не случайно. Тем самым руководство Intel подчеркивает высокий уровень технического образования российских пользователей и компаний – создателей конечных решений.