Суперкомпьютеры, смена эпох
Облака и компьютерные системы, служащие для обработки больших объемов данных, могут стать альтернативными путями развития HPC
В 70-летней истории суперкомпьютеров несложно обнаружить очевидную периодичность: она делится на отрезки времени по 20-30 лет, каждый из них начинался с накопления знаний и опыта, затем наступал период расцвета и количественного роста, в недрах которого формировались предпосылки для качественного перехода на новую фазу.
Трудно поверить, но в конце 20-х годов суперкомпьютером назвали гигантский электромеханический табулятор, созданный IBM. Позже, в 40-е и даже 50-е годы эти невероятно шумные монстры, построенные на реле и шаговых искателях, все еще играли заметную роль, например они применялись для расчетов в атомных проектах. Первым в современном понимании этого слова суперкомпьютером стал CDC 1604, созданный Сеймуром Креем в 1960 году. Заложенные в него идеи стали руководством к пользованию надолго, почти на 30 лет. Вплоть до начала 90-х суперкомпьютеры все еще имели один или максимум несколько очень сложных центральных процессоров. Далее наступил момент, когда задуманные для совсем иных целей микропроцессоры достигли определенного уровня зрелости, и тогда именно эти рыночные продукты стали основой для систем с массовым параллелизмом. С их появлением суперкомпьютеры потеряли свою элитарность, их стало намного больше и началась совсем иная эпоха, ее символом стал список Top500, публикуемый с 1993 года. Статистика Top500 свидетельствует, что на протяжении последующих лет наблюдался линейный рост производительности на тесте Linpack, из чего теперь делают вывод, что и далее эта закономерность сохранится, поэтому в 2018 году тем или иным образом будет преодолен экзафлопсный барьер.
Но и этой эпохе конец неизбежен, нас ожидают качественно новые решения. Тем более что меняется и сама сфера применения HPC (High-Performance Computing, высокопроизводительные вычисления). До последнего времени суперкомпьютерами в основном решались расчетные задачи и задачи физического моделирования, а сейчас к ним прибавляются задачи, связанные с обработкой больших массивов данных. На пути их решения отчасти стоит непреодоленное увлечение гигантизмом. И от академических ученых, и от самых высокопоставленных чиновников можно слышать утверждения о значимости суперкомпьютеров для благосостояния нации. Об успешности отрасли они судят по месту, которое занял один отдельно взятый суперкомпьютер в престижном, по их представлению, списке Top500. Оставим в стороне руководящие такими людьми мотивы, но заметим, что эти проповедники напоминают стратегов, которые связывали победу одной из сторон во Второй мировой войне с созданием супероружия. Как известно, и оружия они не сделали, и войну проиграли.
Если мы говорим о значении HPC для общества, то целью должно стать не создание уникальных образцов суперкластеров с броскими названиями, эффективность которых никем и никогда не была показана и доказана ни на примере решения реальных больших задач, для которых размер действительно имеет значение, ни на максимальном использовании ресурсов за счет эффективного разделения мощности между пользователями. Если смотреть на вещи всерьез, то необходимо перестать рассматривать HPC как спорт высших достижений и не отождествлять его исключительно с суперкомпьютерами.
Несколько лет назад аналитики IDC предложили следующую классификацию по сегментам HPC в зависимости от их цены: свыше 500 тыс. долл. — суперкомпьютеры (supercomputing segment), от 250 до 499 — серверы масштаба подразделения (divisional segment), от 100 до 249 — серверы масштаба отдела (departmental segment) и ниже 100 — серверы рабочих групп (workgroup segment). В 2013 году мировой выпуск HPC-серверов оценивается почти в 12 млрд долл., систем хранения данных для HPC — в 4 млрд, ПО, в том числе приложения промежуточного слоя, — 5 млрд, сервис — 2 млрд, то есть всего около 22 млрд долл. При этом ежегодный рост затрат на суперкомпьютеры составляет 7-8%. Хотя подавляющая часть этой суммы тратится на три младших сегмента, эти колоссальные затраты не считаются оправданными, поскольку даже по самым оптимистическим оценкам коэффициент полезного действия суперкомпьютеров находится в пределах от 15 до 25%. Поэтому и бизнес, и государственные структуры, финансирующие HPC, больше волнуют не рекордные показатели, а возврат инвестиций.
Признаков наступающей новой эпохи HPC множество, среди них можно выделить два наиболее радикальных — облачные подходы к HPC, которые позволяют более эффективно распределять ресурсы между пользователями, и недавно возникшее направление в HPC, которое называют Data Intensive Computing, то есть компьютерные системы, ориентированные на работу с данными.
Облака и HPC
Облачная тематика в приложении к HPC набирает популярность, о достижениях в этой пока еще узкой области свидетельствует состоявшаяся в сентябре в Гейдельберге четвертая по счету конференция ISC Cloud 2013. Здесь с основным докладом выступил Джейсон Стоув, основатель и руководитель компании Cycle Computing, которая удивила всех показателями своих облачных решений. Специализация Cycle Computing — разработка ПО и методов для реализации HPC в облаке. Используя Amazon EC2, инженерам Cycle Computing удалось в 2011 году собрать кластер из 10 тыс. ядер, затем из 30 472, а в 2012 году количество ядер достигло 50 тыс. Все эти системы просуществовали несколько часов, ровно то время, которое было необходимо для решения определенной задачи, однако по своим показателям и та, и другая, и третья закономерно могут претендовать отнюдь не на последние места в списке Top500.
Возникает естественный вопрос, являются ли облака конкурентами суперкомпьютерам? Сторонний наблюдатель внешне едва ли обнаружит разницу между стойками облачного ЦОД и стойками суперкомпьютера, но на самом деле, невзирая на внешнее сходство, есть значительные различия. Облакам стремятся придать мгновенную готовность, неограниченную емкость ресурсов, большой выбор ПО, но главное — виртуализация. Основные свойства суперкомпьютеров совсем иные: никакой виртуализации, максимальное использование возможностей железа, все аппаратное обеспечение настроено на увеличение скорости счета. Общим качеством является высокая способность к масштабированию, задача может получить столько ресурсов, сколько ей требуется, причем технологии обеспечения масштабирования принципиально разные.
Критический момент — межсоединения, в общем случае скорость обмена между узлами суперкомпьютера будет всегда на порядки выше, чем между узлами облака. По этой причине облакам будет больше соответствовать нагрузка с естественным параллелизмом. По оценкам экспертов, сейчас такая нагрузка составляет от 5 до 10% всего объема задач, решаемых на суперкомпьютерах, но в будущем это соотношение будет меняться и процент будет увеличиваться за счет увеличения доли слабосвязанных приложений. До сих пор основная часть научных задач относилась к сильносвязанным приложениям, которые требуют интенсивного обмена данными между узлами, эффективность работы суперкомпьютеров определяется величиной задержки, отсюда в HPC следует стремление к совершенствованию системного интерконнекта и наличие разных архитектур, от простых кластеров Beowulf до высокопродуктивных систем с общей памятью. Но есть и другие задачи, и их становится все больше, где потребность в обмене между узлами значительно ниже, их относят к категории High Throughput Computing (HTC). Это задачи с большой нагрузкой, для них время решения не является существенным фактором, важно их решить хотя бы когда-нибудь, и облака будут использоваться главным образом для этого класса приложений.
Сегодня ряд компаний, в первую очередь Penguin, R-HPC, Amazon, Univa, SGI, Sabalcore и Gompute, предоставляют технологии и услуги для облаков, поддерживающих высокопроизводительные вычисления.
Пожалуй, самый характерный пример — Penguin Computing, один из первых вендоров, предложивших специализированное HPC-облако Penguin's On-Demand HPC Cloud Service (POD). Вычислительные узлы POD строятся на сдвоенных четырех- или шестиядерных процессорах Xeon либо на 12-ядерном процессоре AMD, работающих на частоте от 2,2 до 2,9 ГГц с памятью от 24 до128 Гбайт и локальной системой хранения до 1 Тбайт. Из узлов может набираться требуемая конфигурация с возможностью подключения двух графических процессоров Nvidia Tesla C2075 с 448 ядрами и 6 Гбайт памяти GDDR5, скорость обмена по шине — 144 Гбайт/с. В сеть POD процессоры объединены по Gigabit Ethernet/10-Gigabit Ethernet или InfiniBand. Облако POD HPC поддерживает более 150 готовых к использованию приложений (коммерческих или открытых), что делает его удобным во многих случаях. Если же их недостаточно, то можно воспользоваться инструментарием PODTools, включающим набор утилит для доступа в HPC-облако.
R-HPC и Amazon EC2 предлагают близкие по своим возможностям облака. Облако Cyclone, созданное в SGI, возможно, наиболее производительное, поскольку, помимо интерконнекта InfiniBand, в нем используется SGI NUMAlink, что позволяет собирать не только традиционные кластерные архитектуры, но и структуры более сложной топологии. Облако Cyclone ориентировано на задачи вычислительной биологии, вычислительной химии, вычислительного материаловедения, вычислительной газовой динамики, метода конечного элемента и др. Решение UniCloud от Univa класса Infrastructure as a Service (IaaS) служит для создания внутренней (локальной) инфраструктуры облака с использованием гипервизоров VMware, KVM или Xen, а в некоторых случаях еще и OpenStack или VMware vSphere. В UniCloud задействован уровень Infrastructure as a Service для создания необходимых конфигураций «на лету».
Компьютеры, ориентированные на данные
Вторая альтернатива — Data-Intensive Computing (DIC), компьютерные системы, служащие для обработки больших объемов данных. В противоположность ему обычные высокопроизводительные вычислительные системы (HPC) стоит назвать Compute-Intensive Computing (CIC). Не исключено, что DIC, который складывается сейчас как параллельное направление по отношению к CIC, со временем может оказаться более значимым.
Общая схема работы DIC разделяется на три фазы: сбор данных, извлечение информации из них и перевод информации в форму, удобную для восприятия человеком. Для определения производительности систем класса DIC предложена единица измерения BORPS (Billions Of Records Per Second, миллиард записей в секунду), в отличие от MIPS (Million Instructions Per Second, миллион инструкций в секунду) счет здесь идет не по количеству выполненных за единицу времени команд, а по числу обработанных записей. В недавнем прошлом в качестве основной платформы для DIC рассматривались различные грид-конфигурации, но в последнее время, в связи с появлением высокопроизводительных кластеров, собираемых из недорогих серверов-лезвий, предпочтение отдается им. От более известных кластеров, предназначенных для CIC, такие кластеры отличаются нижеследующими четырьмя особенностями.
Во-первых, в них используется совместное расположение программ и данных. При работе с Большими Данными чрезвычайно важно минимизировать их транспортировку. В большинстве известных HPC-систем, где нет такого требования, принято хранить основные данные в отдельных репозиторях и в процессе работы перемещать требуемые данные в соответствующие кластеры, где размещены задачи; по мере необходимости результаты возвращаются в репозитории. В случае с DIC складывается прямо противоположная ситуация. Здесь обычно распределенные данные и распределенная файловая система статично, на весь период решения задачи, загружаются в узлы кластера, а программы, реализующие алгоритмы обработки этих данных, подгружаются по мере того, как в них возникает потребность. Принцип перемещения кодов к данным особенно эффективен еще и потому, что размеры программ, выраженные в байтах, намного меньше, чем объем данных, и тем самым заметно снижается нагрузка на сеть, образующую кластер.
Второе отличие — иная программная модель. При реализации DIC обычно выбирают машинно-независимый подход, то есть операции над данными, выполняемые в приложениях, выражаются в терминах языка высокого уровня, независимо от особенностей той или иной аппаратной платформы и системы диспетчеризации, контролирующей последовательность, процесс исполнения, балансировку, коммуникации и перемещение программ и данных. Абстрагирование от «железа», достигаемое за счет использования инструментальных средств языка высокого уровня, важно по той причине, что позволяет выразить обработку данных в терминах потоков данных и использовать общие распределяемые библиотеки. В этом состоит главное отличие данной модели от обычной программной модели HPC, где с целью повышения скорости счета берется за основу машинно-зависимая модель, широко используется низкоуровневое управление выполнением задач и коммуникацией между узлами и опора делается на специализированные программные пакеты, добавляющие сложности к и так непростому параллельному программированию.
В-третьих, большое внимание уделяется надежности и готовности к работе. Очевидно, что параллелизм данных предполагает синхронность в их обработке, поток данных должен сохранять «ламинарность», поэтому система DIC более чувствительна к сбоям, нарушениям в коммуникации и программным ошибкам. Если данные привязаны к узлам, то сложно перестроить работу всего кластера при выходе из строя одного узла. Такие системы должны быть чрезвычайно отказоустойчивыми, что предполагает создание копий промежуточных результатов, автоматическое обнаружение вышедших из строя узлов с автоматическим распределением нагрузки между оставшимися и возможностью восстановления на ходу и повторных вычислений в случае необходимости.
И наконец, четвертое отличие — гарантированная масштабируемость. Аппаратная и программная архитектура систем класса DIC должна быть адаптирована к различным по размерам объемам данных во входном потоке.
Чаще всего перспективы DIC связывают с технологией MapReduce и ее реализациями на основе Hadoop. Но этот путь далеко не единственный, весьма интересные результаты показаны на высокопроизводительном кластере HPCC (High-Performance Computing Cluster), его еще называют DAS (Data Analytics Supercomputer). Кластер был создан несколько лет назад подразделением Risk Solutions в LexisNexis из недорогих серверов-лезвий. Совсем иной подход демонстрирует компьютер Gordon, созданный компаниями Appro и Intel для суперкомпьютерного центра в Сан-Диего. В 2011 году Gordon занял 48-е место в Top500. В 2012 году Appro, входящая во второй эшелон производителей HPC (в Top500 на тот момент было 24 собранных ею компьютера), перешла в собственность Cray. С этого момента Gordon стал официально именоваться Cray CS300-AC. От большинства более известных конкурентов Gordon отличается широкомасштабным использованием твердотельных накопителей, большими размерами памяти в узлах и более производительной межузловой коммуникацией с архитектурой «трехмерный тор».