Суперкомпьютер 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
Процессоры 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
Рис. 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
Рис. 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, — это отражение новой тенденции, которая выражается в ориентации на гомогенные узлы без применения дополнительных акселераторов.

Литература

  1. Дмитрий Волков. Стратегические ИТ: китайский сюрприз 863 // Открытые системы.СУБД. — 2010. — № 3. — С. 32–37. URL: www.osp.ru/os/2010/03/13001879 (дата обращения: 18.03.2017).
  2. Михаил Кузьминский. Из ускорителей в процессоры // Открытые системы.СУБД. — 2016. — № 3. — С. 26–28. URL: www.osp.ru/os/2016/03/13050252/ (дата обращения: 17.03.2017).
  3. Dongarra J. Report on the Sunway TaihuLight System // PDF). www.netlib.org. Retrieved June. — 2016. — Т. 20.
  4. Fu H. et al. The Sunway TaihuLight supercomputer: system and applications // Science China Information Sciences. — 2016. — Т. 59. — № 7. — С. 072001.
  5. 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.
  6. 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) — сотрудник, Институт органической химии РАН (Москва).