Новые процессоры x86-архитектуры Intel и AMD по производительности опережают Itanium 2. однако большие серверы, как SMP, так и ccNUMA, традиционно строятся именно на платфoрме Intel Itanium, например HP Superdome [1] или SGI Altix [2]. В то же время для кластеров для высокопроизводительных вычислений (High Performance Computing, HPC) платформа х86 уже стала стандартом, например она применяется в суперкомпьютерах Cray XT5/6. Системы SGI Altix, конфигурации которых охватывают диапазон от больших серверов до средних суперкомпьютеров, также строятся на базе х86. Так, в Altix UV (UV — сокращение от "ультрафиолет") применяются четырех-, шести- и восьмиядерные Intel Xeon 7500 (Nehalem EX) [3]. Этот шаг разработчиков достаточно естествен — компания SGI в большой степени ориентирована на рынок НРС, и ей требуются быстрые и при этом относительно недорогие микропроцесоры.

Компания SGI выпускает массово-параллельные системы архитектуры ссNUMA (cache coherent non-uniform memory access) с 1996 года: сначала Origin на базе MIPS, а с 2003 года Altix на Itanium 2, в которых используется собственное высокопроизводительное межсоединение NUMAlink. Применение в Altix UV процессоров Xeon с более быстродействующими, чем у Opteron в Сray XT, ядрами, дает SGI потенциальные преимущества в производительности при равном числе ядер. В сочетании с уникальной архитектурой это подогревает интерес к Altix UV.

 

Архитектура Altix UV

Узлы Altix UV (рис. 1) представляют собой небольшие SMP-серверы стандартной архитектуры, размещенные в конструктиве лезвий и дополненные специальной аппаратурой для работы в составе большой ccNUMA-системы Altix UV c архитектурой NUMAflex [3]. Лезвия содержат один или два процессорных разъема для Xeon 7500 c микроархитектурой Nehalem EX, соединенные между собой двумя каналами QPI. По одному такому каналу идет от каждого микропроцессора к подсистеме ввода/вывода и еще по одному — к хабу UV_Hub и к межсоединению (рис. 1).

 

Рис. 1. Блок-схема узла SGI Altix UV

 

В поставляемых конфигурациях применяются разные модели Xeon, c разным числом ядер и разными частотами, например X7560/2,26 ГГц, X7542/2,66 ГГц и др. В них каждое ядро имеет кэш старшего уровня емкостью 3 Мбайт (итого 24 Мбайт для восьмиядерных микропроцессоров). В этих микропроцессорах имеется два двухканальных контроллера оперативной памяти, а всего к разъему через буфер Intel SMB (Scalable Memory Buffer) подсоединяется до 16 модулей DIMM DDR3/1066 регистрового типа, с поддержкой кодов ЕСС [5, 6]. Таким образом, на лезвие приходится от 8 до 16 ядер Xeon, а суммарная пропускная способность каналов QPI превышает 100 Гбайт/с при двунаправленной передаче.

Хаб UV представляет собой полузаказную микросхему UV_Hub — основу разработки SGI, определяющую архитектуру Altix UV. Так, UV_Hub отвечает за глобальную адресацию памяти по всей системе, обеспечение когерентности кэша и разгрузку процессора от выполнения некоторых специальных функций. Хаб содержит глобальное регистровое устройство (GRU), устройство активной памяти (AMU) и блоки поддержания интерфейсов QPI (Quick Path Interconnect) и NUMAlink. Общая пропускная способность QPI-портов составляет порядка 50 Гбайт/с, NUMAlink — 40 Гбайт/с.

Cуперкомпьютеры семейства XT

Большинство крупнейших суперкомпьютерных установок мира – это кластеры, однако система Cray Jaguar, возглавляющая список Top500, кластером не является, хотя тип ее архитектуры – массовый параллелизм – тот же, что и у кластеров. Именно такие системы можно называть суперкомпьютерами в узком смысле: их основные компоненты спроектированы разработчиками исключительно для использования в этих вычислительных системах.

Глобальное регистровое устройство обеспечивает основные для системы Altix UV возможность масштабироваться до 256 тыс. ядер и памяти в 8 Пбайт за счет расширенной адресации. Управление памятью в Altix UV двухуровневое: внутри лезвия когерентность памяти обеспечивают встроенные в Xeon контроллеры памяти; за поддержание когерентности памяти между различными лезвиями отвечает UV_Hub. Микропроцессоры Xeon имеют 44 бит для адресов физической памяти и 48 бит для адресов виртуальной памяти, а UV_Hub расширяет адресацию физической памяти до 53 бит и виртуальной — до 60 бит [3]. Легко подсчитать, что при использовании "базовой" адресации процессорами возможно построение систем, содержащих до 16 Тбайт. Таким конфигурациям отвечают модели Altix UV 1000, имеющие до 256 процессорных разъема (до 2048 ядер) [5,6]. Эти системы используют одну общую операционную систему Linux и представляются пользователю в виде единой ccNUMA-системы. Такие конфигурации, в свою очередь, могут выступать в качестве строительных блоков для еще более крупных систем Altix UV. Например, NUMAflex допускает расширение до 16384 узлов, 32768 разъемов микропроцессоров и 262144 ядер, используя при этом уже расширенную адресацию. При обращении к расширенной памяти применяются операции типа Get/Put. Такие конфигурации Altix UV относятся к парционируемым (разбиваемым на разделы) глобально адресуемым системам (PGAS).

Для обеспечения когерентности кэша в больших ccNUMA-системах еще со времен серверов Origin применяется подход на основе каталогов — UV_Hub использует для этого память на FB DIMM (рис. 1), а для ускорения работы задействуется также дополнительная память RLDRAM [4,5].

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

Еще одна функция GRU — инициализация страниц оперативной памяти, которая для систем, масштабируемых до уровня петабайтов, может быть узким местом в производительности, требуя затрат времени минутного диапазона. При использовании UV_Hub и NUMAlink 5 инициализацию удается выполнить за секунды благодаря распределенному выполнению с небольшим вмешательством процессоров или вообще без него. Кроме того, GRU обеспечивает аппаратную поддержку функции BCopy (копирование блоков данных из памяти в память). Эта функция применима в системах распараллеливания с обменом сообщениями — для посылки сообщения из одного лезвия в другое — и в многонитиевых приложениях для репликации структур данных, доступных только для чтения (с целью исключения конкуренции по доступу к данным).

В предыдущем поколении Altix ускоренные функции BCOPY используются для пересылок выравненных на определенную границу структур данных, а в UV_Hub эффективная BCOPY поддерживается и для данных без выравнивания. Кроме того, BCOPY в Altix UV работает в адресном пространстве пользователя, что уменьшает накладные расходы: не нужно копировать в буферы Linux и обратно.

Наконец, GRU позволяет ускорить векторные операции с памятью, включая действия с фиксированным шагом и операции сборки/разборки (gather/scatter), управляемые списком.

Устройство AMU предназначено для выполнения атомарных операций с памятью (AMO) и поддерживает два типа подобных операций, первый из которых полностью аналогичен операциям, реализованным в Xeon, а второй — реализация от SGI. Пользователь может переключаться между этими типами, в зависимости от требований эффективности. К переменным, за доступ к которым нет конкуренции, эффективнее обращаться через Intel АМО, а к переменным, за доступ к которым идет "состязание", и к переменным, используемым в операциях с барьерами и редукциями, лучше применять вариант SGI. Последнее обусловлено тем, что в хабе имеется специальный кэш для модификации содержимого памяти [3].

 

Межсоединение

Рис. 2. Топология межсоединения в шасси SGI Altix UV

Работу NUMAlink 5 обеспечивают 16-портовые маршрутизаторы, а для каналов применяются кабельные соединения. Одно шасси с узлами-лезвиями вмещает до 16 лезвий и имеет коммутаторную топологию (рис. 2), использующую спаренные узлы, связанные двумя каналами NUMAlink 5. Путь между любыми узлами занимает не более трех "прыжков".

В стойке размещается два таких шасси, и до восьми стоек (16 шасси) могут быть объединены в топологию толстого дерева (рис. 3). Максимальная конфигурация с такой топологией включает 512 узлов, 1024 разъема для микропроцессоров и 8192 ядра. В такой конфигурации используются маршрутизаторы, расположенные в шасси, и дополнительные внешние маршрутизаторы. Конфигурация, показанная на рис. 3, включает 256 разъемов (до 2048 ядер) и 16 внешних коммутаторов, а конфигурация, содержащая 1024 разъема, — в четыре раза больше шасси и вдвое больше внешних коммутаторов. Возможно создание еще более крупных конфигураций, и тогда системы с 256 разъемами и топологией толстого дерева рассматриваются как строительные блоки для еще больших систем. Эти блоки соединяются по топологии двухмерного тора — 64 таких блока по 256 разъемов каждый могут быть объединены в тор 8х8.

Применение различных топологий нацелено на достижение максимальной половинной пропускной способности (одна половина системы может обмениваться данными с другой половиной системы) и минимизацию задержек при коммуникациях с наиболее удаленными узлами. Достигаемая половинная пропускная способность превышает 15 Тбайт/с.

Рис. 3. Межсоединение Altix UV с 256 процессорными разъемами (2048 ядер) с конфигурацией толстого дерева. Показана только честь кабелей (каналов)

 

В большинстве случаев обращение в память происходит через локальный узел (лезвие) или топологически близкое лезвие, но даже в худшем случае (в конфигурации из 262144 ядер) максимальная задержка при использовании средств распараллеливания MPI меньше 2 мкс [3]. Если же сопоставить небольшие конфигурации, имеющие простую топологию, с технологией Infiniband, то производительность межсоединения NUMAlink оказывается выше.

 

Особенности и модели

Все перечисленные архитектурные особенности Altix UV необходимы для достижения эффективности при работе HPC-приложений, для которых в первую очередь предназначена система ускорения работы MPI-приложений (MOE, MPI Offload Engine), аналогичная известной TCP Offload Engine. Задача МОЕ — разгрузка процессоров от коммуникационной рабочей нагрузки, которая переносится теперь на микросхемы UV_Hub. Система МОЕ позволяет уменьшить задержки выполнения функций MPI_Send и ускорить выполнение барьерных операций и редукции.

Реинкарнация Origin

Последние поколения микропроцессоров SGI R1x000 явно не отличались высокими показателями производительности, а бизнес компании складывался не очень удачно — представляется, что с переходом к активному использованию архитектуры IA-64 компания SGI получит реальные шансы вернуть себе утраченные позиции.

МОЕ используется в МРТ (Message Passing Toolkit), реализации MPI от SGI, и, кроме того, МОЕ можно задействовать при использовании низкоуровневого API — эти средства могут применяться компиляторами языков, ориентированными на функциональность, например PGAS (Partitioned Global Address Space Languages) или UPC (Unified Parallel C).

Другая особенность Altix UV — масштабируемая до пета-уровня адресация памяти, высокие возможности масштабирования подсистемы ввода/вывода (свыше 1 Тбайт/с), масштабирование вычислительной производительности до пета-уровня. Для систем с таким уровнем масштабирования необходима соответствующая надежность: изоляция ошибок, защита путей данных, мониторинг состояния и др. Протоколы NUMAlink 5 и микросхема UV_Hub имеют дополнительные возможности контроля ошибок и средства повторения операций [3].

Линейка Altix UV включает три группы моделей: младшие — UV 10 (до четырех процессоров и 32 ядер), cредние — UV 100 (до 96 микропроцессоров Xeon 7500), старшие — UV 1000 (до 256 Xeon). Максимальная емкость оперативной памяти у этих моделей составляет 1, 6 и 16 Тбайт соответственно. Пиковая производительность UV 1000 может достигать 18,5 TFLOPS [6].

По сравнению с другими системами архитектур SMP и ccNUMA, например HP Superdome 2 или IBM Power 795, Altix UV имеет более высокие возможности масштабирования. То же справедливо и для более дешевой альтернативы SMP-системам, vSMP Foundation от ScaleMP. На данный момент Altix UV — лидер производительности на тестах SPECint_rate2006 и SPECfp_rate2006. Cистемы в конфигурации из 128 Xeon 7560/2,26 ГГц (1024 ядра) на базовых тестах достигли показателей 20600 и 16000 соответственно. Занимающие второе место серверы Power 795 на базе 4 ГГц Power7 (32 процессора, 256 ядер) имеют пиковые показатели 11300 и 10500 соответственно. Остальные системы этого класса находятся далеко позади.

На тестах SPECjbb2005 система UV 1000 с 64 Xeon 7560 имеет производительность 26 328 027, а Power 795 на 32 микропроцессорах — 21 058 767 единиц. Остальные конкуренты также далеко позади. На тестах STREAM система Altix UV 1000 с 2048 ядрами демонстрирует пропускную способность при доступе к памяти около 4 Тбайт/с (3,8 Тбайт/с на операциях copy и scale, 4,4 Тбайт/с — на add и triad). Это наивысший результат, 32-процессорная векторная система NEC SX-7 имеет только около 0,9 Тбайт/с, Power 595 на базе Power6/5 ГГц — от 0,6 до 0,8 Тбайт/с.

***

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

Литература

  1. М. Кузьминский. Реинкарнация Origin // Открытые системы. — 2003. - N7-8. — С.12-15.
  2. М. Кузьминский. Superdome для бизнес-критичных приложений // Открытые системы. — 2010. — N7. — С. 16-19.
  3. Technical Advances in the SGI Altix UV Archiecture, SGI whitepaper, P/N 4192, 2009.
  4. R. Shiveley. A Catalyst for Mission-Critical Transformation, Intel whitepaper, May 2010.
  5. R. Uebelmesser. SGI Altix UV, Ter@tech Forum, 2010.
  6. SGI Altix UV Datasheet, SGI, 2010.

Михаил Кузьминский (kus@free.net) – старший научный сотрудник учреждения РАН «Институт органической химии им. Н. Д. Зелинского» (Москва).