Суперкомпьютер Sunway BlueLight, ставший одним из результатов программы 863 [1], еще в конце 2011 года занял 14-е место в Top500 и 39-е — в рейтинге энергоэффективных высокопроизводительных вычислительных систем Green500. Этот суперкомпьютер, в отличие от ряда других массово-параллельных систем, был построен на базе узлов с разработанными и производимыми в Китае 64-разрядными RISC-микропроцессорами SW1600 третьего поколения семейства ShenWei, созданного в КНР в основном для военного применения. В конце 2016 года китайцы уже не просто заняли два первых места в ноябрьском списке Top500, обогнав по производительности системы из США, но и продемонстрировали мировому сообществу суперкомпьютер Sunway TaihuLight на базе собственных 260-ядерных процессоров четвертого поколения SW26010. Данная система стала первым в мире суперкомпьютером с пиковой производительностью свыше 100 PFLOPS и заняла при этом 4-е место в Green500, обойдя системы на базе Intel Xeon Phi x200 (Knights Landing, KNL) [2]. На тесте HPCG суперкомпьютер Sunway TaihuLight занял 4-е место. Теперь на него обратил внимание и Джек Донгарра [3], один из составителей рейтинга Тор500.
Главное достижение четвертого поколения ShenWei — это оригинальная архитектура процессора SW26010, который, как и Intel KNL, содержит большое число процессорных ядер и имеет близкую к старшей модели KNL пиковую производительность (чуть больше 3 TFLOPS, см. таблицу) выполнения операций с плавающей запятой двойной точности (DP). Как и KNL, SW26010 позволяет создавать гомогенные суперкомпьютеры (без акселераторов), хотя сами по себе многоядерные SW26010 гетерогенны, а не гомогенны, как KNL.
Процессоры Xeon Phi KNL и SW26010 |
Процессор SW26010 (рис. 1) [4, 5] имеет 260 ядер и включает четыре группы ядер СG (Core Group). Каждая группа содержит кластер из 64 вычислительных элементов (Computing Processing Element, CPE), которые и образуют основу вычислительной мощности процессора. Кроме CPE, связанных в кластере решеткой-массивом 8×8, каждая группа CG имеет одно свое ядро общего назначения — процессорный элемент управления (Management Processing Element, MPE). Процессор SW26010 имеет тактовую частоту 1,45 ГГц, однако по какой технологии он изготовлен, точных сведений нет: Донгарра указывает на 28 нм (https://science.energy.gov/~/media/ascr/ascac/pdf/meetings/201609/Dongarra-ascac-sunway.pdf), однако в [5] говорится о 40 нм.
Рис. 1. Архитектура SW26010 |
Элементы CPE и MPE имеют 64-разрядную RISC-архитектуру с поддержкой 256-разрядных векторов (по четыре числа двойной точности, вдвое короче, чем у KNL) и команд «умножить и сложить». Каждый MPE содержит два векторных конвейера, cоответственно, все 256 CPE дают 256×8 DP-результатов за такт и еще четыре MPE дают 4×8×2 результатов. И если умножить это на 1,45 ГГц, получается, что суммарная пиковая производительность SW26010 составляет 3062 GFLOPS.
Кроме процессорных ядер CPE и MPE, каждая СG содержит свой работающий с DDR3 контроллер памяти (Memory Controller, MC), а объединяются CG через общую для SW26010 «сеть на микросхеме» (Network on Chip, NoC). Процессор поддерживает связь с другими устройствами через системный интерфейс SI (рис. 1). Разработчики говорят об «общей глубоко объединенной многоядерной архитектуре» (Deeply Fused Many-Core, DFMC). Число CPE и топология их соединения в других DFMC-процессорах могут отличаться, а топология NoC — это решетка, кольцо или перекрестный коммутатор (crossbar), и она может подбираться в зависимости от количества компонентов в DFMC (число CG, MPЕ и MC может меняться [5]). Поэтому DFMC можно охарактеризовать как высокомасштабируемую гетерогенную микроархитектуру, ориентированную на высокопроизводительные вычисления.
Каждая группа CG имеет собственное адресное пространство памяти, связывающей ядро MPE и кластер CPE через контроллер MC. Ядра CPE и MPE имеют совместимую 64-разрядную RISC-архитектуру, напоминающую DEC Alpha [5], образованную из 212 команд, работающих с 8-, 16-, 32- и 64-разрядными операндами. Кроме того, CPE поддерживают коммуникации на уровне регистров и передачи потоков данных, а также синхронизацию в их кластере. Cуперскалярный уровень в MPE поддерживает декодирование сразу четырех команд и возможность параллельного выполнения семи команд, а в CPE декодируются и выполняются параллельно по две команды [6].
В DFMC память разделяется между MPE и CPE, а когерентность кэша достигается только между MPE. В MPE имеется двухуровневый кэш: кэш первого уровня команд (I) и данных (D) емкостью по 32 Кбайт и общий кэш второго уровня для команд и данных (256 Кбайт). В этих кэшах используются строки размером 128 байт. Кэши первого уровня в MPE являются четырехканальными наборно-ассоциативными, а кэш второго уровня — восьмиканальным. В СPE устроено по-другому: здесь имеются кэш команд первого уровня емкостью 16 Кбайт и сверхоперативная память SPM (scratch pad memory) емкостью 64 Кбайт c NUMA-задержками. Кроме того, в кластере CPE предусмотрен еще общий кэш второго уровня для команд [5]. В отличие от кэша, сверхоперативная память не содержит копию данных из основной памяти и может быть сконфигурирована как быстрый буфер, напрямую управляемый пользователем, или как программно-эмулируемый кэш, который дает автоматическое кэширование данных, что, естественно, сильно уменьшает производительность. Здесь усматривается некая аналогия со сверхоперативной памятью MCDRAM в KNL. Выбор SPM по сравнению с D-кэшем позволяет упростить аппаратную реализацию.
Слабое место SW26010 — иерархия памяти. Процессоры Intel при работе с современной памятью DDR4 поддерживают более высокую пропускную способность, чем SW26010. По размерам буфера и кэшей СPE-кластеры уступают не только доступным на рынке GPU и MIC-ускорителям Intel (в том числе KNL), но и процессорам Xeon E5-26XX v4 и v3. Поэтому важнейшей при оптимизации программ для SW26010 задачей является уменьшение нагрузки на память, особенно в СPE-кластере.
Полнофункциональное ядро MPE может работать в системном или пользовательском режимах, поддерживая функции прерывания и управления памятью и реализуя внеочередное спекулятивное выполнение команд. На MPE эффективно выполняются последовательные части программ.
Ядра CPE работают только в пользовательском режиме, имеют ограниченные функции и не поддерживают прерывания. В них реализовано статическое предсказание переходов и поддерживаются команды с плавающей запятой типа «умножить и сложить» и деление / извлечение квадратного корня. СPE и MPE могут работать независимо, а SPM оснащен собственным адресным пространством, поэтому в CPE имеются команды для обмена данными между SPM и основной памятью. В CG есть общая память, но архитектура DFMC ориентируется на «кооперативную» технику, и CPE аппаратно поддерживают синхронизацию и межъядерные коммуникации, в частности передачу потоков данных и коммуникации на уровне регистров. При доступе в основную память, включая передачу потоков данных, CPE могут получить копию из кэша MPE.
Для взаимодействия ядер СPE внутри CG имеется аппаратура сети CPE_NET, которая и обеспечивает, например, коммуникации регистров и интерфейс c NoC.
Ядра MPE, занимая небольшую часть площади процессора и потребляя малую долю электроэнергии, предназначены для повышения общей производительности, а на CPE построена упрощенная микроархитектура, позволяющая получить высокую производительность для распараллеленных приложений с плавающей запятой. Для программиста независимость MPE от CPE означает, что можно сделать программу для выполнения на MPE или на кластере CPE. В целом, скорее всего, для оптимизации программ на SW26010 требуется больше ресурсов на программирование, чем в случае KNL.
Процессор SW26010 использует технологию систем на кристалле: кроме контроллеров MC, там интегрированы интерфейсы PCIe 3.0, Gigabit Ethernet и стандарта JTAG для тестирования и отладки микросхем.
Cуперкомпьютер Sunway TaihuLight включает шесть систем: вычислительную, сетевую, внешней памяти, обслуживания и диагностики, электропитания и охлаждения, программного обеспечения (рис. 2) — и представляет собой иерархическую систему с общей пиковой производительностью 125 PFLOPS (93 PFLOPS на Linpack HPL в Top500) на базе однопроцессорных вычислительных узлов, имеющих память по 32 Гбайт (по 8 Гбайт на CG). Два вычислительных узла образуют карту, четыре карты — плату, а из 32 плат собирается суперузел на 256 вычислительных узлов. Из четырех суперузлов состоит кабинет, а весь Sunway TaihuLight состоит из 40 кабинетов. Cуперузел имеет полносвязанный скрещиваемый коммутатор для поддержки вычислительно интенсивных работ.
Рис. 2. Общая архитектура Sunway TaihuLight |
Сетевая система суперкомпьютера трехуровневая: на верхнем находится центральная коммутаторная сеть, через которую работают все суперузлы; на среднем — суперузловая сеть; на нижнем — сеть совместного использования ресурсов, связывающая ресурсы с суперузлами и обеспечивающая службы коммуникаций ввода-вывода и отказоустойчивости вычислительных узлов. Бисекционная полоса пропускания в Sunway TaihuLight составляет 70 Тбайт/с, пропускная способность канала сети — 16 Гбайт/с, а диаметр сети (наибольшее число переходов между узлами) равен семи.
Система внешней памяти включает сеть внешней памяти, подсистему управления и дисковый массив с общей памятью 20 Пбайт, имеющий системную консоль, управляющий сервер и сеть для управления всей системой. Донгарра в докладе в министерстве энергетики США указывал на наличие в Sunway TaihuLight 288 SSD-дисков емкостью по 800 Гбайт и общую пропускную способность ввода-вывода на уровне 288 Гбайт/с.
Cистема обслуживания и диагностики отвечает за интерактивное управление узлами, суперузлами и вычислительной системой в целом — мониторинг cостояния Sunway TaihuLight, обнаружение сбоев, ведение протоколов и т. п. Охлаждение вычислительной и сетевой систем основано на непрямом водяном охлаждении, а в системе внешней памяти применяется смешанное воздушно-водяное охлаждение.
Система программного обеспечения Sunway TaihuLight базируется на Linux-подобной операционной системе Raise OS 2.0.5 с компиляторами для языков Фортран, Cи/C++ с расширениями Sunway OpenACC (применяется OpenAСС 2.0 со специальными дополнениями для Sunway TaihuLight; OpenACC 2.0 поддерживается в компиляторе GCC 6). Для распараллеливания внутри CG применяется Sunway OpenACC, для четырех групп CG внутри процессора SW26010 можно применять распараллеливание на OpenMP или MPI, а между узлами — MPI. Обеспечиваются и базовые математические библиотеки, для чего применима библиотека xMath, сопоставимая с коммерческими библиотеками типа MKL и др. (это описано в указанном выше докладе в министерстве энергетики США).
Cлабое место Sunway TaihuLight — недостаточно высокая пропускная способность памяти, обусловленная особенностями SW26010, а также не самые высокие параметры быстродействия межсоединения [3]. Как видно из списка тестов HPCG, по показателю отношения производительности к пиковому значению Sunway TaihuLight уступает всем суперкомпьютерам, кроме системы «Ломоносов».
В [4] указано, что Sunway TaihuLight ориентирован не только на традиционные HPC-вычисления, но и на обработку больших массивов данных. Первая доступная информация об ожидаемой производительности относилась к FPGA-моделиро-
ванию SW26010. В Национальном суперкомпьютерном центре в Уси, где установлен Sunway TaihuLight, выполняется множество различных приложений, включая расчеты атмосферных моделей и приложения вычислительной гидродинамики, молекулярной динамики и др., для которых приводятся данные о достигнутой производительности. Однако там нет информации по эталонным программам, широко используемым в HPC. Появились только данные для GTC-P/PIC с использованием на нижнем уровне OpenACC, а выше — MPI.
В [6] приводится подробное описание оптимизации на SW26010 широко применяемого в вычислительной гидродинамике программного комплекса OpenFOAM, написанного на C++. Эта оптимизация включала применение коммуникации регистров в кластере CPE, векторизацию и др. Однако на кластере CPE поддерживается только среда на Cи. Кроме того, для OpenFOAM особенно важна пропускная способность памяти: например, на кластере CPE оптимизированный код выполняется в восемь раз быстрее, чем на MPE, и на 18% быстрее, чем на одном процессорном ядре Intel Xeon E5-2695 v3 / 2,3 ГГц. Таким образом, весьма вероятно, что для достижения высокой эффективности приложений на Sunway TaihuLight/SW26010 потребуется большая работа программистов.
***
Специалисты Поднебесной уже доказали, что могут обойти США в области высокопроизводительных вычислительных систем, однако пока имеется отставание по высокоскоростной памяти. Нет открытых данных и по возможности организации широкомасштабного производства китайских процессоров и по их стоимости. Продемонстрированные на Sunway TaihuLight данные о производительности приложений пока почти не относятся к эталонным, активно используемым во всем мире, что затрудняет сравнение. Вполне вероятно, что для оптимизации приложений еще потребуются значительные доработки — даже OpenACC используется не настолько часто, и работы для программистов здесь будет больше, чем в случае Intel KNL.
Появление процессоров Xeon Phi и ShenWei нового поколения, имеющих производительность и количество ядер, сравнимые с акселераторами, включая GPU, а также создание на их основе суперкомпьютеров, лидирующих в Top500, — это отражение новой тенденции, которая выражается в ориентации на гомогенные узлы без применения дополнительных акселераторов.
Литература
- Дмитрий Волков. Стратегические ИТ: китайский сюрприз 863 // Открытые системы.СУБД. — 2010. — № 3. — С. 32–37. URL: www.osp.ru/os/2010/03/13001879 (дата обращения: 18.03.2017).
- Михаил Кузьминский. Из ускорителей в процессоры // Открытые системы.СУБД. — 2016. — № 3. — С. 26–28. URL: www.osp.ru/os/2016/03/13050252/ (дата обращения: 17.03.2017).
- Dongarra J. Report on the Sunway TaihuLight System // PDF). www.netlib.org. Retrieved June. — 2016. — Т. 20.
- Fu H. et al. The Sunway TaihuLight supercomputer: system and applications // Science China Information Sciences. — 2016. — Т. 59. — № 7. — С. 072001.
- Zheng F. et al. Cooperative computing techniques for a deeply fused and heterogeneous many-core processor architecture // Journal of Computer Science and Technology. — 2015. — Т. 30. — № 1. — С. 145–162.
- Meng D. et al. Hybrid Implementation and Optimization of OpenFOAM on the SW26010 Many-core Processor. 2016. URL: http://hpc.sjtu.edu.cn/hpcchina16_openfoam.pdf (дата обращения: 17.03.2017).
Михаил Кузьминский (kus@free.net) — сотрудник, Институт органической химии РАН (Москва).