Санкт-Петербургский государственный политехнический университет – крупнейшее учебное заведение и исследовательский центр Северо-Западного региона, один из самых известных технических университетов России. После получения статуса Научно-исследовательского университета руководством СПбГПУ был поставлен вопрос об открытии новых перспективных направлений работ и подготовки специалистов, а также расширении сотрудничества с научными и промышленными организациями. В качестве одного из таких направлений были выбраны высокопроизводительные вычисления, в области которых в СПбГПУ ведутся работы по запросам иностранных и российских заказчиков, для этого использутся собственные рабочие станции и кластерные суперкомпьютеры небольшой и средней мощности – от сотен гигафлопсов до нескольких терафлопсов, а иногда и зарубежные суперкомпьютеры значительно большей мощности. Например, для крупной зарубежной аэрокосмической компании решается задача, требующая для одного расчета суперкомпьютера производительностью 100 TFLOPS в течение десяти суток. В приложениях используются такие модели параллельной организации программ, как MPI-модель, тредовая модель над общей памятью OpenMP и смешанная модель MPI/ OpenMP.
При развертывании проекта по высокопроизводительным вычислениям в первую очередь требовалось принять решение о выборе базовых вычислительных средств и стратегии организации работ с ними. Можно было выбрать стандартное решение — установить кластер с большой пиковой производительностью, ориентированный на выполнение MPI-программ и, возможно, содержащий большое количеством графических процессоров. Это обеспечило бы большую пиковую производительность и высокие показатели на тесте Linpack, однако этот вариант СПбГПУ не устраивал.
Во-первых, высокие пиковая производительность и производительность на тесте Linpack (80-90%) не гарантируют успешного применения суперкомпьютера для многочисленных реальных промышленных приложений, требующих интенсивной (возможно, нерегулярной) работы с памятью. На таких задачах реальная производительность часто составляет не более 5-10% пиковой, например в аэрогидродинамических расчетах и метеорологии. При увеличении количества ядер в процессорах реальная производительность на таких задачах по отношению к пиковой может еще больше снизиться из-за возрастающих конфликтов обращений ядер к памяти. Таким образом, процессоры оказываются чувствительными к задержкам по памяти, а введение многоядерности для поднятия реальной производительности теряет смысл.
Суперкластеры — между прошлым и будущим.
Успехи в области микропроцессоров и коммуникационных сетей, а также наличие разнообразного открытого программного обеспечения создали предпосылки для разработки суперкомпьютеров на базе коммерчески доступных компонентов, толерантных к задержкам обращений к памяти за счет использования возможности работать с памятью с высокими темпами. Максим Кудрявцев, Леонид Эйсымонт, Денис Мошкин, Михаил Полунин |
Проект было решено сориентировать на оптимизацию реальной производительности за счет обеспечения эффективной работы множества ядер. Требовалось найти варианты оборудования, обеспечивающие масштабирование производительности при увеличении числа ядер, задействованных в выполнении приложений. Доступные сегодня на рынке многосокетные платы с многоядерными процессорами позволяют достигнуть определенных результатов в этом направлении.
Во-вторых, достижение высокой реальной производительности сильно зависит от эффективности обменов между параллельными процессами. Один из вариантов оптимальной организации обменов возможен за счет выполнения параллельных вычислений над логически общей памятью. В этом случае взаимодействие процессов будет не двусторонним (как в MPI-программах), а односторонним, что позволяет оптимизировать накладные расходы и одновременно повысить продуктивность программирования при разработке приложений. Многосокетные платы обеспечивают работу с общей памятью в пределах вычислительного узла (сотни гигабайтов — терабайт), а реальные задачи требуют общей памяти на порядки большего объема. В мировой практике эта проблема решается либо кардинально, путем разработки мультитредовых процессоров с аппаратной поддержкой виртуальной памяти, отражаемой на множество вычислительных узлов и специальных сетей с малыми задержками передачи сообщений (суперкомпьютеры Cray XMT, XMT-2), либо за счет применения в сочетании с обычными процессорами коммуникационных сетей, эффективно реализующих режим работы RDMA (Remote Direct Memory Access — «доступ к памяти удаленного узла»). Обеспечение эффективной работы с общей памятью через RDMA требует малых задержек при передаче коротких сообщений, однако имеющиеся коммерчески доступные сети обладают не очень высокими характеристиками, а зарубежные заказные сети с такими возможностями труднодоступны. В связи с этим в проекте СПбГПУ было решено использовать высокореактивную сеть «МВС-экспресс» (разработка ИПМ РАН и НИИ «Квант»), поверх которой установлен набор программных средств класса PGAS (Partitioned Global Address Space — «разделенная глобально адресуемая память») – библиотеки Shmem, GASNet, ARMCI, а также языки UPC и СAF.
DARPA UHPC — дорога к экзафлопсам
В начале августа 2010 года появились сообщения о начале работ на Западе по программе DARPA UHPC — создания принципиально новых высокопроизводительных компьютеров экзафлопсного уровня. Эта программа определит направления работ в области суперкомпьютеров на предстоящее десятилетие. Леонид Эйсымонт |
В-третьих, в дополнение к уже решаемым в СПбГПУ задачам требовалось развернуть работы над новыми суперкомпьютерными технологиями. Было выбрано направление исследований и разработок в области архитектуры и программного обеспечения перспективных суперкомпьютеров. Для этих суперкомпьютеров характерно применение моделей вычислений с общей памятью, достижение высокой энергоэффективности и отказоустойчивости при реальной производительности в наиболее мощных образцах на уровне экзафлопса. В рамках этого направления планировалось также организовать подготовку специалистов.
Архитектура системы для СПбГПУ
Суперкомпьютерный программно-технологический комплекс СПбГПУ (ПТК) содержит восемь вычислительных узлов (рис. 1), каждый узел представляет собой 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 в каждом, а внутри сокетов можно выделить чип-сокеты: чип-сокет 0 – ядра С0-С5, чип-сокет 1 – ядра С6-С11,... чип-сокет 7 – ядра С42-С47. MC1 и MC2 – двухканальные контроллеры памяти, DRAM0 – DRAM7 – модули памяти, IB-adapter – адаптеры сети Infiniband, MВС-adapter – адаптер сети «МВС-экспресс». Красные линии между сокетами – 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. Главная цель тестирования ПТК — выяснить, мешают ли процессорные ядра друг другу внутри узла и при работе с межузловой сетью?
Толерантность одного 4-сокетного узла
Если ядра узла мешают друг другу при работе с памятью, то при увеличении их количества среднее время на одно обращение к памяти должно увеличиваться. Если этого не происходит и среднее время уменьшается, то это означает, что с увеличением нагрузки на память проявляется свойство выполнения запросов с эффективностью, определяемой не задержкой выполнения этого обращения, а темпом выполнения этих обращений. Такой эффект возникает из-за параллельного и конвейерного выполнения множества обращений и называется толерантностью к задержкам выполнения обращений к памяти. Для пользователя это свойство проявится в виде роста реальной производительности при увеличении количества используемых ядер, а если толерантности нет или ее недостаточно, то вместо роста будет сначала замедление и прекращение роста производительности, а потом – деградация.
Выбранные четырехсокетные узлы действительно обладают более высокими свойствами толерантности к задержкам выполнения обращений к памяти, чем двухсокетные узлы на процессорах с меньшим количеством ядер. На рис. 2 приведены результаты в виде APEX-поверхностей, полученные на тесте APEX-MAP оценки эффективности подсистемы памяти в разных режимах пространственной (L – «попадание в кэш-строку» и «правильность преднакачки в кэш») и временной (A – «попадание в один и тот же адрес») локализации обращений к памяти. Представлено среднее наблюдаемое тестом количество тактов процессора, за которое происходит одно обращение к памяти, в зависимости от пространственно-временной локализации обращений к ней.
При анализе важно выделять две точки APEX-поверхности. Точка (L) с координатами (L=6536, A=0,001) — это лучшая пространственно-временная локализация, такой режим работы с памятью характерен для теста Linpack или при умножении плотно заполненных матриц. Точка (G) с координатами (L= 1, A=1,00) соответствует самой плохой пространственно-временной локализации — в окрестности этой точки по профилю работы с памятью находятся многие реальные расчетные задачи и задачи, решаемые в современных информационных системах (работа с разреженными матрицами, расчетные задачи на нерегулярных перестраиваемых сетках, работа с графовыми базами данных).
Рис. 2. Демонстрация толерантности — результаты на тесте APEX-MAP для одного узла (одно ядро и максимальное количество ядер) |
APEX-поверхность для идеального суперкомпьютера, толерантного к задержкам обращений к памяти, должна располагаться как можно ниже и иметь плоскую форму, что и стремятся обеспечить в зарубежных проектах перспективных стратегических суперкомпьютеров (Cray Baker, IBM BlueWaters, Tianhe-1A, К computer).
Вычислительный узел ПТК оказался достаточно толерантен к задержкам по памяти, однако были замечены и некоторые особенности. Например, «седловидность» APEX-поверхности, которая связана с большими потерями на обеспечение кэш-когерентности в четырехсокетных платах по сравнению с двухсокетными, что заметно, если эффект от применения кэш-памяти не становится определяющим с увеличением временной локализации.
Рис. 3. Тест FT (NASA npb 3.3.1) – трехмерное преобразование Фурье |
Тест APEX-MAP – искусственный, поэтому особый интерес представляет оценка толерантности на тестах, приближенных к прикладным областям. Для этого был выбран известный пакет тестов npb 3.3.1. Тест FT (рис. 3) – это трехмерное быстрое преобразование Фурье, для него характерна плохая пространственная, но высокая временная локализация обращений к памяти. Тест UA (рис. 4) — это расчет распределения тепла при движении разогретого шара в трехмерном пространстве, используются расчеты на регулярной неравномерной сетке, динамически изменяемой во времени по мере продвижения шарика. Это задача с плохой пространственно-временной локализацией обращений к памяти. Результаты на тесте UA (рис. 4) особенно ценны, поскольку этот тест по режиму работы с памятью гораздо хуже теста FT, а его профиль максимально приближен к точке G APEX-поверхностей (рис. 2).
Из рис. 3 и рис. 4 видно, что эффективности памяти четырехсокетной платы достаточно для решения таких задач.
Установлено, что ядро Westmere почти в два раза лучше по производительности, чем ядро MagnyCourse, но ядер в четырехсокетной плате с процессорами MagnyCourse в четыре раза больше, и если удается эффективно использовать до 48 ядер, то в целом одна четырехсокетная плата по производительности оказывается в два-четыре раза лучше, чем двухсокетная. Кроме того, для реализации вычислительных узлов ПТК и БК не на лезвиях это означает пропорциональный выигрыш по габаритам, а также заметный выигрыш по энергопотреблению и стоимости.
Рис. 4. Результаты теста UA |
Примечательно, что такие результаты получены на программах с моделью организации OpenMP, в которой не учитывается структура платы, пропускные способности внутриузловой сети и не применяются специальные методы оптимизации работы с внутриузловой памятью, учитывающие неоднородность доступа к модулям внутриузловой памяти (модель памяти PGAS). Известно, что применение PGAS-методов оптимизации при параллельном программировании для таких узлов может повысить производительность еще на порядок, что открывает для прикладных программистов возможности существенной дальнейшей оптимизации своих программ.
Эффективность применения нескольких узлов
Рис. 5. Тест FT (NASA npb 3.3.1) — эффект ограничения использования ядер узлов |
Поскольку один четырехсокетный узел содержит 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-методами оптимизации, методами размещения на ядрах вычислений и данных.
Предпочтительным компилятором на установках такого типа оказался gcc, а среди реализаций MPI некоторыми преимуществами обладает OpenMPI.
Сейчас на ПТК СПбГПУ начата работа по оптимизации счета задач гидротурбулентности, одновременно использующих MPI и OpenMP. Это наиболее подходящий для данных установок класс задач — используется эффективная реализация общей памяти на узле, а нагрузка на межузловые обмены явно меньше, чем для программ, использующих только MPI. Кроме того, была проведена работа по тестированию и усовершенствованию программного обеспечения сети «МВС-экспресс», проведены эксперименты сравнительного использования средств MPI/Infiniband и Shmem/"МВС-экспресс" на некоторых задачах. Показано, что за счет большей реактивности «МВС-экспресс» на ряде приложений можно получить по крайней мере в два раза более быстрые программы, при этом обеспечив заметно меньшую их сложность, повысить продуктивность программирования.
Даешь Рефал
Сегодня в отечественном ИТ-сообществе обсуждается идея возрождения работ по обработке нечисловой информации, в частности с помощью языка Рефал, который очень удобен для операций с символьными данными. Предлагается осуществить на СПбГПУ ПТК реализацию этого языка с многоуровневым распараллеливанием программ в процессе выполнения.
Символьная обработка была популярна в 70-х и 80-х годах (языки Лисп, Пролог, Снобол и т. п.), а сегодня интерес к ней возродился из-за появления множества нечисловых приложений, среди которых: аналитические выкладки, задачи искусственного интеллекта, системы автоматического проектирования, задачи понимания данных и др. Системы символьной обработки всегда требовали мощной поддержки выполнения программ, поскольку плохо соответствовали архитектуре обычных компьютеров. Это снижало их эффективность и даже инициировало в свое время работы по специальным символьным процессорам и динамическим схемам распараллеливания. Сейчас такие схемы распараллеливания интересны сами по себе, поскольку создание экстремальных по производительности суперкомпьютеров экзафлопсного уровня требует параллелизма на уровне 109 процессов, а ручное распараллеливание при написании программы для таких систем весьма затруднительно.
Созданный Валентином Турчиным непроцедурный функциональный язык Рефал был одной из наиболее удачных разработок советских времен и относится к числу немногих бесспорно признанных во всем мире. Язык применялся в ряде проектов, о которых мало известно даже сейчас.
Этот язык чаще применялся при разработке компиляторов языков высокого уровня для изделий новой техники. Причина – высокая скорость разработки, что было важно для вычислительных систем специального назначения стационарного и бортового типа. При этом даже было не так важно, что компиляторы получались на порядок медленнее, чем созданные обычными средствами. Например, Рефал применялся при разработке компилятора языка ПСИ-Фортран для бортового компьютера корабля многоразового использования «Буран» (1983-1986 годы) и языка С3-Фортран (1985-1986 годы) для бортовых машин ракетной техники. Задача по созданию компилятора языка Фортран для автоматизации разработки программ решения баллистических задач была поставлена правительством перед сотрудниками ИПМ АН СССР весной 1983 года вместе с двумя другими задачами (автоматизация разработки управляющих программ и создание системы предстартовых испытаний). Требовалось быстро разработать эффективный компилятор для бортовой машины космического корабля «Буран» с языка программирования типа Фортран, который бы дополнительно обладал следующими тремя особенностями:
- специальная организация распределения памяти и организация управления запуском процессов;
- автоматизация программирования вычислений над вещественными числами посредством операций целочисленной арифметики (автоматизация масштабирования);
- обеспечение высокого качества оптимизации программ (допускалась потеря эффективности по сравнению с разработанными вручную программами не более 10%), причем с сохранением ясности отображения исходной программы в объектную.
Задача была решена, и первая версия компилятора появилась уже осенью 1983 года.
Практическое применение Рефала возобновилось в начале 2000-х годов – появилась версия языка с возможностями распараллеливания программ посредством использования функций библиотеки MPI, была разработана первая имитационная модель мультитредового потокового суперкомпьютера с управлением потоком данных в рамках проекта «Беркут», ставшего началом работ по суперкомпьютеру стратегического назначения «Ангара».
Итоги и планы
Кроме научных сотрудников СПбГПУ, в проекте приняли участие специалисты компании «ВТ-Консалтинг», НИИ «Квант», «Е-Троник», ИПМ РАН, РОСТА, ИПС РАН, МСЦ, причем некоторые из организаций формально не были участниками контракта с СПбГПУ. Движущей силой к объединению был интерес к изучению функционирования нового оборудования. Сейчас к проекту подключаются организации из промышленности и научной сферы.
Стихийно сложившаяся работа сотрудников разных организаций по изучению новых аппаратных средств и программного обеспечения – обычное явление для развитых стран; правда, в этих странах такая активность поддерживается государством. Так, в США по аналогичной модели был создан Центр PERCS при Ливерморской лаборатории Министерства энергетики США, а в Китае задачи оценочного тестирования решаются в суперкомпьютерном центре, где установлен компьютер Tianhe-1A.
На базе СПбГПУ целесообразно создать Центр оценочного тестирования, анализа и прогнозирования, который поможет составить объективную картину реального состояния дел в области российских и зарубежных суперкомпьютерных технологий, проводимых в мире исследований. Такие работы отдельными отечественными организациями уже ведутся, однако создание Центра в СПбГПУ позволит скоординировать эту деятельность, а за счет подключения студентов и молодых специалистов позволит увеличить объемы выполняемых исследований и анализируемой информации.
Для развития суперкомпьютерной базы СПбГПУ планируется ряд модернизаций: введение второго адаптера Infiniband в вычислительных узлах, переход на процессоры AMD Interlagos, удвоение количества вычислительных узлов и добавление процессоров (графических ускорителей), добавление восьмисокетных (80-ядерных) вычислительных узлов, введение узлов с мультитредовыми микропроцессорами Niagara-3. Возможен и вариант введения дополнительно двухсокетных плат, что окажется эффективным для MPI-программ. Такой смешанный вариант использовался, например, в японском суперкомпьютере Tsubame 2.0, который с лета 2010 года входит в десятку Top500.
Реализация в проекте СПбГПУ таких планов позволит оценить эффект от новых решений сразу по нескольким направлениям. Например, проанализировать целесообразность включения в конфигурацию мультитредовых микропроцессоров (в этом направлении идут Китай при создании собственных суперкомпьютеров стратегического назначения и США). Пиковая производительность модернизированного ПТК должна составить около 20 ТFLOPS, что, казалось бы, далеко не экзафлопс. Однако архитектурные особенности уже имеющихся и планируемых к освоению средств позволяют не просто решать задачи с большей эффективностью, а в принципе решать некоторые недоступные ранее задачи, и тест UA – пример такой задачи. Проводимые на аппаратных средствах, аналогичных СпбГПУ ПТК, исследования и разработки позволят найти путь к созданию в будущем на отечественной элементной базе энергоэффективных и отказоустойчивых систем экзафлопсного уровня производительности и, что немаловажно, подготовить специалистов, способных создавать и эксплуатировать такие системы.
***
Выбранные направления работ в СПбГПУ в области высокопроизводительных вычислений и подготовки специалистов в сфере экстремальных (экзафлопсных) технологий идут в русле недавно сформулированной госкорпорацией «Росатом» Концепции развития экзафлопсных суперкомпьютерных технологий в России. Важно и то, что вокруг этих работ происходит естественное формирование коллектива специалистов из разных организаций, свидетельствующее об актуальности и высокой сложности задачи создания высокопроизводительных систем нового поколения, для решения которой необходимы межведомственные организационные меры и координация.
Александр Речинский (Alexander.Rechinsky@avalon.ru) – проректор по информатизации СПбГПУ (Санкт-Петербург), Виктор Горбунов (vitech@rdi-kvant.ru) – заместитель директора НИИ «Квант», Леонид Эйсымонт (verger-lk@yandex.ru) – заместитель директора компании «ВТ-Консалтинг» (Москва)