Сегодня, к сожалению, иногда рисуют довольно упрощенную картину состояния дел в области разработки суперкомпьютеров — развитие индустрии высокопроизводительных вычислений (High Performance Computing, HPC) часто видится только в черно-белом цвете, что порождает серию мифов.

Суперкомпьютер — это система с общей памятью. Классификацию суперкомпьютеров на машины с общей и распределенной памятью уже давно можно считать неактуальной. Действительно, несколько лет назад был достигнут потолок повышения тактовых частот, производительность одного процессорного ядра перестала расти с такой же скоростью, как десять лет назад, и для сохранения темпов увеличения производительности суперкомпьютеров разработчики стали использовать все больше процессорных элементов (ядер). Однако объединить сотни тысяч ядер в систему с общей памятью (cache-coherent Non-Uniform Memory Access, ccNUMA) технически невозможно — практически нельзя создать единый блок памяти с таким количеством портов и решить проблему масштабирования протокола кэш-когерентности. Остается единственный вариант — создание систем nccNUMA с распределенной памятью без кэширования удаленной памяти, но с архитектурной точки зрения это и есть суперкомпьютер с распределенной памятью. С развитием языков программирования класса PGAS стираются различия в программировании таких систем — суперкомпьютер с распределенной общей памятью и коммуникационной сетью с поддержкой PGAS представляет собой систему nccNUMA со всех точек зрения, кроме цены. Именно цена и стала препятствием на пути проектов аппаратной реализации nccNUMA — Cray X1/X2 и Cray XMT/XMT2.

MPP и кластеры отличаются по архитектуре и стилю программирования. С архитектурной точки зрения любая система с распределенной памятью — это объединение через локальную шину процессорных элементов, памяти и сетевых контроллеров, которые соединены при помощи коммутаторов в одну или несколько различных коммуникационных сетей. С этой точки зрения нет разницы между MPP и кластерами, причем и программирование для этих систем принципиально не отличается, если стандартом де-факто является MPI. Для программиста суперкомпьютер выглядит как множество узлов, передающих друг другу сообщения, и его не заботит количество коммуникационных сетей и их характеристики — для кластера с сетью Fast Ethernet и для интегрированной MPP-системы пишется одна и та же программа.

Суперкомпьютер «Ломоносов» – это лишь большой кластер. Разница между современным кластером и системой MPP не в архитектуре и не в модели программирования — главное свойство кластера состоит в использовании общедоступных компонентов. Кластером может быть как несколько ПК, соединенных локальной сетью, так и несколько стандартных серверов, установленных в обычные стойки, соединенных той или иной коммерчески доступной сетью. Основное преимущество кластеров — низкая цена и «демократичность», то есть отсутствие закрытых технологий. Суперкомпьютер «Ломоносов» нельзя назвать кластером в этом смысле — он не собран из доступных на рынке решений. Шасси и лезвия T-Blade2 разрабатывались исключительно под данный проект и специально нацелены на создание систем HPC высшего диапазона производительности — это заказные, а не массово доступные технологии. В T-Blade2, в отличие от коммерческих технологий, выше плотность размещения компонентов (в 2009 году было очень мало систем из 100 стоек), больше энергоэффективность (число блоков питания, вентиляторов и прочих служебных компонентов в пересчете на один узел), выше масштабируемость (используются специальные заказные сети для барьерной синхронизации и глобальной сихронизации прерываний таймера на узлах), больше надежность (исключено множество кабельных соединений). Кроме того, операционная система Clustrx написана специально для систем такого масштаба.

Высказывается также мнение, что этот суперкомпьютер не способен решать «тяжелые» задачи capability computing (см. «Флопсы и лошадиные силы», «Открытые системы», № 7, 2011). Действительно, обычно эта система применяется в многопользовательском режиме и решает множество задач (потребляющих до 20% ресурсов машины), но так удается обеспечивать загрузку на высоком уровне, и узлы простаивают только по той причине, что в очереди стоят задачи, требующие большего числа узлов, чем имеется в данный момент. Можно услышать мнение, что единственной задачей, которая однажды использовала ресурсы всего суперкомпьютера, был тест Linpack, запускавшийся для получения данных по Top500. Это не так — отдельным коллективам пользователей по запросу предоставляется приоритет, и они запускают задачу, использующую десятки тысяч ядер. Можно привести пример масштабирования задачи расчета аэроакустики на конфигурации из 30 тыс. ядер. Кроме того, «Ломоносов» занимает неплохую позицию в списке Graph500, опередив некоторые машины от Cray и IBM.

Настоящие суперкомпьютеры используются только для решения больших задач. Задачи, загружающие целиком всю машину, действительно встречаются, но обычно не занимают значительного процента времени: как правило, потребность в высокопродуктивных вычислениях (high productivity computing) оценивается не более чем в 10-15%, хотя, возможно, суперкомпьютеры из таких организаций, как Агентство национальной безопасности США, избегающих присутствия в списке Top500, работают в режиме счета одной задачи. Но даже если предположить такой вариант, что решается задача взлома серии шифров, то часто, исходя из эффективности распараллеливания, разумнее решать одновременно несколько задач с меньшим числом узлов, чем одну на всем суперкомпьютере.

Собрать кластер может и школьник, главное — сделать свою коммуникационную сеть. Действительно, все аппаратные компоненты кластера доступны, а программное обеспечение открыто, и если попытаться, даже не имея опыта, собрать кластер из 10-20 узлов, то никаких сложностей, скорее всего, не возникнет. Однако при числе узлов свыше 100 появятся проблемы управляемости, при 1000 возникают проблемы масштабируемости и деградации производительности, а при 10 тыс. узлов собрать нормально работающий кластер почти невозможно.

Очевидно, что от качества коммуникационной сети напрямую зависит эффективность работы суперкомпьютера, но, во-первых, даже имея идеальную коммуникационную сеть, невозможно избежать множества проблем с масштабированием, энергопотреблением, программированием, обеспечением отказоустойчивости и т. п. Во-вторых, наивно полагать, что если в обычный кластер вставить адаптеры заказной коммуникационной сети, то можно решать задачи класса capability computing. Скорее всего, такой улучшенный кластер просто не заработает полностью: коммуникационная сеть — это всего лишь один из аспектов многогранной проблемы создания суперкомпьютера, предназначенного для экстремального масштабирования.

Топология 3D-тор идеально подходит для «тяжелых» задач. Топология 3D-тор используется во множестве суперкомпьютеров из верхней части списка Top500 (все системы Cray и IBM серии BlueGene), но нельзя утверждать, что эта топология подходит для решения задач класса capability computing. Даже если учесть высокое качество коммуникационных сетей в этих системах, то бисекционная пропускная способность системы невысока и может составлять до нескольких процентов при размере системы в несколько десятков тысяч узлов. Это не составляет проблемы при решении физических задач, которые хорошо ложатся на топологию трехмерной сети, но при решении задач, для которых применяется схема обменов «все со всеми», узким местом становится бисекция, и хорошего масштабирования на размере системы в десятки-сотни тысяч узлов уже не получить. Вероятно поэтому в будущих системах IBM отказались от использования топологии 3D-тор (5D-тор для BlueGene/Q и трехуровневая сверхдорогая топология «все со всеми» в архитектуре PERCS). То же самое можно сказать про системы Cray: чип Gemini был построен на базе маршрутизатора YARC топологии high-radix, поддерживающего сети с высокой связностью, где связность – это число внешних портов коммутаторов, и лишь по экономическим причинам используется с той же топологией 3D-тор, которая применялась в сети предыдущего поколения Seastar. В будущем чипе Cray Aries предполагается использовать уже настоящую топологию high-radix. Даже 5D-тор в BlueGene/Q — это временное решение.

В чем же различие между суперкомпьютерами, почему MPP все же лучше кластеров? Самый важный параметр, по которому различаются системы разного класса, – это степень используемости компонентов массового рынка. Если в кластерах таких компонентов 100%, то в заказных системах их почти нет. Например, в суперкомпьютере «Ломоносов» все платы, включая модули памяти, — заказные, в то время как почти все кристаллы (процессор, мосты, чипы памяти и системного межсоединения) — компоненты массового рынка.

Другим важным параметром является степень интеграции суперкомпьютера. Как правило, заказные технологии являют пример более тесной интеграции за счет ориентации исключительно на HPC, а массовые технологии имеют меньшую степень интеграции в силу их универсальности. Иногда интеграция играет роль только при уменьшении энергопотребления, а зачастую применение массовых технологий не сказывается отрицательно на масштабируемости системы и является плюсом, так как позволяет использовать технологии, разработанные за деньги массового потребителя.

Общее мнение заключается в том, что материнские платы имеет смысл разрабатывать специализированно для HPC, так как потребительские продукты содержат много лишних компонентов, потребляющих энергию и не востребованных в HPC. С другой стороны, доминирование массовых процессоров в индустрии HPC сегодня несомненно. Компания Cray, ранее имевшая сильные позиции в разработке специализированных процессоров, ныне полагается на стандартные х86-процессоры, а процессоры, используемые IBM в заказных системах, являются доработками процессоров, предназначенных для более массовых, чем HPC, рынков. Более неприступными выглядят позиции заказных коммуникационных сетей – здесь ни Cray, ни IBM не планируют отказываться от собственных разработок. Но даже для высокопроизводительных систем отрыв заказных межсоединений от дешевого решения Infiniband не составляет нескольких порядков. К тому же применение отдельного чипа не повышает степени интеграции при установке массового процессора — используется та же шина PCI-Express/Hypertransport, а преимущество заказной сети заключается лишь в ее лучших характеристиках. Стоит ли разработка собственной сети возможных преимуществ – вопрос не технологий. Более привлекательным подходом видится разработка процессора и интегрированного в него адаптера коммуникационной сети, что позволит получить действительно большую степень интеграции, чем использование двух отдельных чипов, и даст реальный выигрыш по энергоэффективности и производительности. Но пока такая степень интеграции под силу лишь компании IBM, работающей как на рынке HPC, так и на рынке массовых систем.

В любом случае битва заказных и массовых технологий еще не закончена. Но не следует думать, что вторые представляют собой обязательно вынужденное зло, — в развитии HPC всегда будет существовать возможность компромисса при сочетании заказных и массовых технологий, что позволит обеспечить близкую к максимальной производительность при минимизации вложений.

***

Компания «Т-Платформы», работающая на рынке HPC уже почти десять лет, начала с создания кластеров на базе продукции компании Tyan, а потом подошла к разработке более интегрированных решений. Следующим шагом была разработка серверов-лезвий с уникальным для своего времени способом охлаждения и материнскими платами от Tyan и Supermicro. Затем началась разработка собственных плат, интеграция модулей управления и коммутаторов Infiniband и Ethernet внутри шасси. Оригинальная система охлаждения потребовала создания собственных модулей памяти, что стало очередным рубежом в разработке заказных технологий. Следующей ступенью должно стать создание собственных чипов. Такой путь достаточно типичен — именно по пути последовательного, плавного повышения уровня интеграции и количества заказных технологий идет сегодня развитие отечественных производителей.

Антон Корж (anton.korzh@t-platforms.ru) – архитектор, компания «Т-Платформы» (Москва).