Суперкластер с глобально адресуемой памятью в СПбГПУ

Компания Е-Троник завершила проект в Санкт-Петербургском государственном политехническом университете (СПбГПУ) по созданию небольшого экспериментального суперкластера.
Проект задумывался давно, и целью его реализации и проведения исследовательских работ, являлось принятие решения о выборе базовых вычислительных средств и стратегии организации дальнейших работ с ними. Конечно же можно было выбрать одно из стандартных решений — создать некую кластерную систему с максимальной пиковой производительностью, ориентированной на выполнение MPI-программ и содержащей большое количество графических процессоров, что обеспечило бы большую пиковую производительность и высокие показатели на тесте Linpack. Однако в процессе написания технических требований к системе, стороны пришли к пониманию, что это вариант — неприемлем, поскольку:

  • высокая пиковая производительность и производительность на тесте Linpack (80-90%) не гарантируют успешного применения суперкомпьютера для многочисленных реальных промышленных приложений, требующих интенсивной (возможно, нерегулярной) работы с памятью. На таких задачах реальная производительность часто составляет не более 5-10% пиковой, например в аэрогидродинамических расчетах и метеорологии.
    При увеличении же количества ядер в процессорах реальная производительность на таких задачах по отношению к пиковой может еще больше снизиться из-за возрастающих конфликтов обращений ядер к памяти. Таким образом, процессоры оказываются чувствительными к задержкам по памяти, а введение многоядерности для поднятия реальной производительности теряет смысл.
  • Достижение высокой реальной производительности сильно зависит от эффективности обменов между параллельными процессами. Один из вариантов оптимальной организации обменов возможен за счет выполнения параллельных вычислений над логически общей памятью. В этом случае взаимодействие процессов будет не двусторонним (как в MPI-программах), а односторонним, что позволяет оптимизировать накладные расходы и одновременно повысить продуктивность программирования при разработке приложений. Многосокетные платы обеспечивают работу с общей памятью в пределах вычислительного узла (сотни гигабайтов — терабайт), а реальные задачи требуют общей памяти на порядки большего объема.
    В мировой практике эта проблема решается либо путем разработки мультитредовых процессоров с аппаратной поддержкой виртуальной памяти, отражаемой на множество вычислительных узлов и специальных сетей с малыми задержками передачи сообщений (суперкомпьютеры Cray XMT, XMT-2), либо за счет применения в сочетании с обычными процессорами коммуникационных сетей, эффективно реализующих режим работы RDMA (Remote Direct Memory Access — «доступ к памяти удаленного узла»).
  • СПбГПУ хотелось провести работы с новыми суперкомпьютерными технологиями.

Поэтому проект было решено сориентировать на оптимизацию реальной производительности за счет обеспечения эффективной работы множества ядер. Требовалось найти варианты оборудования, обеспечивающие масштабирование производительности при увеличении числа ядер, задействованных в выполнении приложений.

Архитектура системы для СПбГПУ

Созданный экспериментальный суперкластерный программно-технологический комплекс (ПТК) в СПбГПУ сейчас содержит восемь вычислительных узлов, каждый из которых представляет собой 4-сокетную серверную плату Supermicro c четырьмя 12-ядерными процессорами Opteron 6174 (AMD MagnyCours/2,2 ГГц), общедоступной памятью 128 Гбайт (возможно расширение до 512 Гбайт), диск на 1 Тбайт и сетевые адаптеры.
Все узлы связаны вежду собой четырьмя коммуникационными сетями: Infiniband 4x QDR компании Qlogic; cети 10 Gigabit Ethernet и Gigabit Ethernet; «МВС-Экспресс». Последняя из названных сетей способна передавать короткие сообщения в несколько раз быстрее, чем любая из известных на сегодняшний день коммерческих сетей, что очень важно при реализации общей памяти узлов.
Кроме них имеются: узел управления, узел мониторинга, узел резервного копирования, система хранения объемом 20 Тбайт, подключенная к вычислительным узлам через сеть 10 Gigabit Ethernet.

рис. 1

Плата каждого вычислительного узла имеет четыре сокета с установленными процессорами MagnyCours в каждом.
Красные линии между сокетами – 8-разрядные линки HyperTransport c пропускной способностью в одну сторону 6,4 Гбайта/с, пропускная способность одного чип-сокета с модулем памяти – 28,8 Гбайт/с, односторонняя пропускная способность интерфейса PCI-экспресс 2.0 – 8 Гбайт/с, односторонняя пропускная способность линка сети Infiniband QDR – 4 Гбайт/с.
Чип-сокеты внутри одного сокета соединены 24-разрядным интерфейсом HyperTransport – 19,2 Гбайт/с. Пиковая производительность одного ядра на скалярных операциях – 8,8 GFLOPS, а всего 12-ядерного микропроцессора – 105,6 GFLOPS.

Такая архитектура узла обеспечивает эффективную работу множества процессорных ядер с распределенной внутриузловой памятью через единое виртуальное адресное пространство, что позволяет использовать перспективные модели параллельной организации программ с односторонними взаимодействиями процессов (OpenMP, PGAS), причем не ограничивая возможности применения моделей с двусторонними взаимодействиями (MPI). Эффективность обеспечивается за счет сильной связности внутриузловой сети («каждый с каждым»), построенной на достаточно быстрых линках, а также благодаря высокой суммарной пропускной способности памяти, обеспечиваемой восемью двухканальными контроллерами памяти МС и восемью модулями памяти DRAM.

Результаты оценочного тестирования

Для оценки возможностей суперкластера было проведено оценочное тестирование, результаты которого сравнивались с характеристиками базового кластера (БК), построенного по обычной схеме с двухсокетными платами на базе шестиядерных Xeon 5670 (Westmere) и сети Infiniband 4х QDR.
Главная цель тестирования — выяснить, мешают ли процессорные ядра друг другу внутри узла при работе с межузловой сетью или нет …

Если процессорные ядра узла мешают друг другу при работе с памятью, то при увеличении их количества среднее время на одно обращение к памяти должно увеличиваться. Если этого не происходит и среднее время уменьшается, то это означает, что с увеличением нагрузки на память проявляется свойство выполнения запросов с эффективностью, определяемой не задержкой выполнения этого обращения, а темпом выполнения этих обращений.
Такой эффект возникает из-за параллельного и конвейерного выполнения множества обращений и называется толерантностью к задержкам выполнения обращений к памяти. Для пользователя это проявится в виде роста реальной производительности при увеличении количества используемых ядер, а если толерантности нет или ее недостаточно, то вместо роста будет сначала замедление и прекращение роста производительности, а потом – деградация.

Выбранные четырехсокетные узлы обладают более высокими свойствами толерантности к задержкам выполнения обращений к памяти, чем двухсокетные узлы на процессорах с меньшим количеством ядер. На рисунке приведены результаты в виде APEX-поверхностей, полученные на тесте APEX-MAP оценки эффективности подсистемы памяти в разных режимах пространственной (L – «попадание в кэш-строку» и «правильность преднакачки в кэш») и временной (A – «попадание в один и тот же адрес») локализации обращений к памяти.

рис. 2

При рассмотрении результатов теста APEX-MAP, важно выделять две точки APEX-поверхности. Точка (L) с координатами (L=6536, A=0,001) — это лучшая пространственно-временная локализация, такой режим работы с памятью характерен для теста Linpack или при умножении плотно заполненных матриц. Точка (G) с координатами (L= 1, A=1,00) соответствует самой плохой пространственно-временной локализации — в окрестности этой точки по профилю работы с памятью находятся многие реальные расчетные задачи и задачи, решаемые в современных информационных системах (работа с разреженными матрицами, расчетные задачи на нерегулярных перестраиваемых сетках, работа с графовыми базами данных).

APEX-поверхность для идеального суперкомпьютера, толерантного к задержкам обращений к памяти, должна располагаться как можно ниже и иметь плоскую форму, что и стремятся обеспечить в зарубежных проектах перспективных стратегических суперкомпьютеров (Cray Baker, IBM BlueWaters, Tianhe-1A, К computer).

Хочется отметить, что наш вычислительный узел оказался достаточно толерантен к задержкам по памяти, однако были замечены и некоторые особенности. Например, «седловидность» APEX-поверхности, которая связана с большими потерями на обеспечение кэш-когерентности в четырехсокетных платах по сравнению с двухсокетными, что заметно, если эффект от применения кэш-памяти не становится определяющим с увеличением временной локализации.

рис. 3

Однако, тест APEX-MAP – искусственный, поэтому особый интерес представляет оценка толерантности на тестах, приближенных к прикладным областям. Для этого был выбран известный пакет тестов npb 3.3.1. Тест FT (рис. 3) – это трехмерное быстрое преобразование Фурье, для него характерна плохая пространственная, но высокая временная локализация обращений к памяти. Тест UA (рис. 4) — это расчет распределения тепла при движении разогретого шара в трехмерном пространстве, используются расчеты на регулярной неравномерной сетке, динамически изменяемой во времени по мере продвижения шарика. Это задача с плохой пространственно-временной локализацией обращений к памяти. Результаты на тесте UA особенно ценны, поскольку этот тест по режиму работы с памятью гораздо хуже теста FT, а его профиль максимально приближен к точке G APEX-поверхностей (рис. 2).

Из рис. 3 и рис. 4 видно, что эффективности памяти четырехсокетной платы достаточно для решения таких задач.

Установлено, что ядро Westmere почти в два раза лучше по производительности, чем ядро MagnyCourse, но ядер в четырехсокетной плате с процессорами MagnyCourse в четыре раза больше, и если удается эффективно использовать до 48 ядер, то в целом одна четырехсокетная плата по производительности оказывается в два-четыре раза лучше, чем двухсокетная. Кроме того, для реализации вычислительных узлов ПТК и БК не на лезвиях это означает пропорциональный выигрыш по габаритам, а также заметный выигрыш по энергопотреблению и стоимости.

рис. 4Примечательно, что такие результаты получены на программах с моделью организации OpenMP, в которой не учитывается структура платы, пропускные способности внутриузловой сети и не применяются специальные методы оптимизации работы с внутриузловой памятью, учитывающие неоднородность доступа к модулям внутриузловой памяти (модель памяти PGAS). Известно, что применение PGAS-методов оптимизации при параллельном программировании для таких узлов может повысить производительность еще на порядок, что открывает для прикладных программистов возможности существенной дальнейшей оптимизации своих программ.

 

 

 

Исследования эффективности применения нескольких узлов

рис.5

Поскольку один четырехсокетный узел содержит 48 ядер, это означает, что для MPI-программ 48 процессов будут взаимодействовать внутри узла через множество линков HyperTransport сети платы, а вот с другими узлами они будут взаимодействовать через один адаптер сети Infiniband, что потенциально чревато конфликтами, влияние которых и требовалось оценить. Было получено, что на тестах npb 3.3.1 с MPI-моделью организации программ на множестве четырехсокетных узлов в большинстве случаев можно приблизительно с вдвое меньшим количеством узлов достичь тех же результатов по производительности, что и на двухсокетных узлах. Вместе с тем встречаются ситуации, когда мощности одного адаптера Infiniband не хватает для обслуживания такого большого числа ядер узла, что иллюстрирует график на рис. 5, где показан рост общей производительности для разного количества узлов и разного количества используемых ядер на узлах — в случае восьми узлов рост производительности прекращается, если на узле более 16 ядер. Возможным решением может оказаться добавление на плате еще одного адаптера Infiniband, что потребует применения специальных реализаций MPI, имеющихся в открытом доступе. Еще одно решение – использование разработанной в ИПМ РАН реализации MPI, которая одновременно работает с сетями Infiniband (длинные сообщения) и «МВС-экспресс» (короткие сообщения).

При использовании двухсокетных плат пока таких проблем не возникало, это их достоинство, хотя и для них иногда применяется решение с несколькими адаптерами.

Проведенные пусконаладочные работы и расчеты имеющихся MPI-задач из области молекулярной динамики выявили еще две проблемы работы ядер четырехсокетных узлов:

  • неудовлетворительная работа автоматического планировщика загрузки процессорных ядер в Linux, из-за чего требуется явная привязка вычислений к ядрам;
  • недостаточная эффективность внутриузловых взаимодействий между MPI-процессами — более предпочтительным вариантом организации программ выглядит MPI/OpenMPI либо OpenMP/PGAS, особенно в сочетании со специальными PGAS-методами оптимизации, методами размещения на ядрах вычислений и данных.

 

В заключении хочется отметить, что созданный экспериментального суперкластер не простаивает:

  • В СПбГПУ ведуться работы по оптимизации счета задач гидротурбулентности, одновременно использующих MPI и OpenMP.
  • Продолжается тестирование и усовершенствование программного обеспечения сети «МВС-экспресс», проведены эксперименты сравнительного использования средств MPI/Infiniband и Shmem/»МВС-экспресс» на некоторых задачах. Показано, что за счет большей реактивности «МВС-экспресс» на ряде приложений можно получить по крайней мере в два раза более быстрые программы, при этом обеспечив заметно меньшую их сложность, повысить продуктивность программирования.

И конечно же надо отметить, что кроме компании «Е-Троник» и научных сотрудников СПбГПУ, в проекте приняли участие специалисты компании «ВТ-Консалтинг», НИИ «Квант», ИПМ РАН, РОСТА, ИПС РАН, МСЦ. Движущей силой к объединению всех компаний, был интерес к изучению функционирования нового оборудования, которые продолжаются …

Статья в ином варианте на www.osp.ru