Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Enjoy members-only rewards and discounts
  • Create and access a list of your products
  • Manage your Dell EMC sites, products, and product-level contacts using Company Administration.

Исследование производительности процессоров AMD EPYC: тесты STREAM, HPL, InfiniBand и WRF

Summary: AMD EPYC — STREAM, HPL, InfiniBand и WRF на Dell EMC PowerEdge R7425

This article may have been automatically translated. If you have any feedback regarding its quality, please let us know using the form at the bottom of this page.

Article Content


Symptoms

Авторы статьи: Гарима Кочхар (Garima Kochhar), Дипси Шерлопалле (Deepthi Cherlopalle), Джошуа Вейдж (Joshua Weage) из HPC and AI Innovation Lab. Сентябрь 2018 г.

Резюме

В HPC and AI Innovation Lab имеется новый кластер с 32 системами на базе AMD EPYC, соединенными через Mellanox EDR InfiniBand. Как и всегда, мы проводим оценку производительности в нашем новейшем кластере и хотим поделиться результатами. В этом блоге описываются результаты теста пропускной способности памяти, полученные на основе эталонных микротестов STREAM, HPL, InfiniBand по определению задержки и пропускной способности, а также результаты эталонного теста WRF, основанного на его собственных наборах данных.

Мы хотим узнать реальную производительность HPC-приложений на EPYC. Если у вас есть наборы данных, которые вы хотите опробовать на EPYC, свяжитесь со своей группой по работе с клиентами Dell, чтобы получить доступ к Innovation Lab.
 

Архитектура AMD Epyc

Процессоры AMD Epyc поддерживают восемь каналов памяти, до 16 модулей DIMM на процессор с двумя модулями DIMM на канал и до 32 ядер на процессор. Кроме того, платформа с процессорами AMD обеспечивает до 128 каналов PCI-E для периферийных устройств, таких как графические процессоры и накопители NVMe.
Сами ЦП представляют собой многокристальные интегральные схемы (ИС), собранные из четырех однокристальных ИС. Каждый кристалл содержит до восьми ядер Zen, два канала памяти DDR4 и 32 линии ввода-вывода. Ядра Zen в кристалле разделены на две группы по четыре ядра, называемые объединенными ядрами, которые совместно использует кэш-память 3 уровня. В процессоре все четыре кристалла связаны друг с другом посредством межсоединения Infinity Fabric. Это показано на рис. 1.

SLN313856_ru__1GKimage001
Рис. 1. Схема процессора EPYC. CCX — это объединенное ядро, которое включает до 4 ядер, совместно использующих кэш-память 3 уровня. M* — это каналы памяти, два канала обрабатываются каждым кристаллом. P* и G* — линии ввода-вывода. ∞ Infinity Fabric.



В однопроцессорной системе каждый кристалл предоставляет до 32 линий PCI-E, используя линии ввода-вывода P* и G*, показанные на рис. 1. Это дает процессору до 128 линий PCI-E, как показано на рис. 2. Если процессор используется в двухпроцессорной (2S) конфигурации, половина линий ввода-вывода каждого кристалла используется для подключения к одному из кристаллов другого процессора с помощью линий ввода-вывода G*, настроенных как Infinity Fabric. При этом для процессора с каналами ввода-вывода P* остаются 64 линии PCI-E и, по-прежнему, 128 линий PCI-E для платформы. Это показано на рис. 3.

SLN313856_ru__2GKimage002
Рис. 2. Линии PCI-E в EPYC 1S



SLN313856_ru__3GKimage003
Рис. 3. Схема EPYC 2S



SLN313856_ru__4GKimage004
Рис. 3. Схема EPYC 2S

 

Производительность на эталонных тестах STREAM

На первом этапе оценки EPYC мы измерили пропускную способность памяти платформы с помощью эталонного теста STREAM. Эти тесты проводились на сервере Dell EMC PowerEdge R7425 с двумя процессорами AMD EPYC 7601 (32 ядра, 2,2 ГГц), 16 x 16 Гбайт DIMM при 2400 МТ/с под управлением Red Hat® Enterprise Linux® 7.5.

Управление неравномерным доступом к памяти (NUMA) для EPYC может выполняться через параметр BIOS «Memory Interleaving» и сопоставляться с помощью утилит Linux, таких как numactl и lstopo.

По умолчанию для параметра Memory Interleaving установлено значение «Memory Channel Interleaving». В этом режиме два канала каждого кристалла чередуются. Это дает четыре узла NUMA на процессор и восемь узлов NUMA для операционной системы на двухпроцессорной системе.

«Memory Die Interleaving» — это параметр, при котором память всех четырех кристаллов на процессоре (т. е. 8 каналов памяти) чередуется. Это дает один узел NUMA на процессор и два узла NUMA в двухпроцессорной системе,

Функция «Memory Socket Interleaving» позволяет чередовать память между двумя процессорами, предоставляя один узел NUMA на двухпроцессорной платформе. Это эквивалентно отключению NUMA.    

Используя конфигурацию по умолчанию «Memory Channel Interleaving», помните, что в каждом процессоре имеется четыре кристалла, каждый кристалл предоставляет два канала памяти, и BIOS предоставляет восемь узлов NUMA на двухпроцессорной платформе. Результат выполнения команды «numactl» (рис. 4) показывает эти восемь узлов NUMA на двухпроцессорной платформе 2S, с одним узлом NUMA на кристалл.

SLN313856_ru__5GKimage005
Рис. 4. Результат выполнения команды «numactl» на EPYC 2S


Физически на платформе имеется четыре расстояния NUMA, как показано на рис. 4: к самому узлу NUMA (расстояние «10», выделено красным цветом), к трем узлам, которые используют один и тот же кристалл (расстояние «16», выделено синим цветом), к узлу на другом процессоре, который подключается напрямую через соединение Infinity Fabric (расстояние «22», зеленого цвета), к трем другим узлам удаленного процессора, доступ к которым осуществляется через два перехода с помощью Infinity Fabric между двумя процессорами, плюс внутренние соединение Infinity Fabric (расстояние «28», черного цвета).

Некоторые реализации и версии BIOS могут упростить эту физическую схему и предоставить операционной системе только три расстояния NUMA. Такое упрощение включает маскирование разницы в расстоянии между узлом NUMA 0 (в качестве примера) и узлами NUMA 4, 5, 6, 7, представляя узлы NUMA 4, 5, 6, 7 как равноудаленные от узла NUMA 0. Такая реализация показана на рис. 5. Возможность настройки схемы NUMA будет предусмотрена в следующей версии BIOS PowerEdge R7425. Упрощение схемы расстояний между узлами NUMA не изменяет реальную физическую структуру ядер, это делается главным образом для планировщика ОС. Для заданий HPC и MPI, которые поддерживают NUMA, эти различные представления должны быть несущественными.

SLN313856_ru__6GKimage006
Рис. 5. Результат выполнения команды «numactl» на EPYC 2S с упрощенными расстояниями NUMA


В дополнение к 8 узлам NUMA на двухпроцессорной платформе на рис. 4 и рис. 5 также показаны память и ядра, связанные с каждым узлом NUMA. В каждом узле NUMA имеется 32 Гбайт памяти из двух модулей DIMM емкостью 16 Гбайт (16 модулей DIMM на сервере, 8 на процессор, 1 модуль DIMM на канал). Каждый узел NUMA содержит восемь ядер локального кристалла. Нумерация ядер на платформе Dell EMC циклическая: сначала выполняется проход по всем узлам NUMA, а затем заполняется каждый узел NUMA.

Кроме того, для четкого понимания, какой из наборов из четырех ядер представляет собой объединенное ядро, можно использовать команду lstopo. Это четыре ядра кристалла, которые совместно используют кэш-память 3 уровня. Например, на рис. 6 показано, что узел NUMA 0 имеет 8 ядер, а на этом узле NUMA ядра 0, 16, 32, 48 совместно используют кэш-память 3-го уровня, а ядра 8, 24, 40, 56 совместно используют кэш-память 3-го уровня.

SLN313856_ru__7GKimage007
Рис. 6. Результаты команды lstopo на EPYC 2S

SLN313856_ru__8GKimage008
Рис. 7. Пропускная способность памяти платформы AMD EPYC

Результаты эталонного теста STREAM Triad (с учетом информации о структуре NUMA) для пропускной способности памяти представлены на рис. 7, при этом в BIOS установлен параметр «Memory Channel Interleaving». Обратите внимание, что двухранговые модули памяти 16 Гбайт 2667 МТ/с, используемые в данном стенде для испытания, работают со скоростью 2400 МТ/с на EPYC. Первый набор столбцов на рис. 7 показывает, что пропускная способность памяти двухпроцессорной платформы составляет 244 Гбайт/с при использовании всех ядер и 255,5 Гбайт/с при использовании половины ядер. Вторая отметка — это пропускная способность памяти одного процессора, которая составляет примерно половину всей двухпроцессорной платформы, как и ожидалось. Третья отметка показывает пропускную способность памяти узла NUMA на отдельном кристалле. Помните, что в каждом процессоре имеется четыре кристалла, а пропускная способность кристалла составляет примерно ¼ пропускной способности процессора. В кристалле имеется два объединенных ядра, а использование только ядер в одном объединенном ядре обеспечивает скорость около 30 Гбайт/с. Когда ядра используются в обоих объединенных процессорах на кристалле, можно достичь полной пропускной способности кристалла, около 32 Гбайт/с.

Пропускная способность памяти 2-процессорной платформы впечатляющая, 240-260 Гбайт/с, что является результатом использования восьми каналов памяти на каждый процессор платформы. Более того, одно ядро может обеспечить пропускную способность памяти около 24,5 Гбайт/с для локальной памяти, что идеально подходит для части приложений, использующих один поток.

На рис. 8 показано влияние структуры NUMA на удаленный доступ к памяти. На рисунке показана относительная пропускная способность памяти, когда ядра обращаются к памяти, которая находится не в одном домене NUMA. Доступ к памяти на том же сокете медленнее примерно на 30%, доступ к памяти на другом сокете медленнее примерно на 65%. Использование STREAM Triad показывает, что не оказывается заметного влияния на пропускную способность памяти при доступе к памяти на удаленном процессоре через один переход (узел 6, 1 Infinity Fabric между процессорами) или два перехода (узлы 4, 5, 7 — 1 переход Infinity Fabric между процессорами + 1 локальный переход Infinity Fabric). Для приложений, чувствительных к пропускной способности памяти, хорошее расположение памяти будет важно для производительности даже в пределах одного процессора.

SLN313856_ru__9GKimage009
Рис. 8. Влияние удаленного доступа к памяти
 

Результаты эталонного теста HPL

Далее мы измерили вычислительные возможности EPYC по результатам теста HPL. EPYC может поддерживать команды AVX и производительность 8 FLOP/цикл. На нашей платформе мы использовали Open MPI и библиотеки линейной алгебры BLIS для запуска HPL.

Теоретическая производительность нашей тестовой системы (два процессора Epyc 7601) составляет 64 ядра * 8 FLOP/цикл * тактовая частота 2,2 ГГц, что обеспечивает 1126 GFLOPS. Измерения показали 1133 GLOPS, что составляет эффективность 100,6%.

Мы также запускали HPL на EPYC 7551 (32 ядра, 2,0 ГГц), EPYC 7351 (16 ядер, 2,4 ГГц) и EPYC 7351P (1 процессор, 16 ядер, 2,4 ГГц). В ходе этих испытаний измеренная производительность HPL составила 102–106% от теоретической производительности.

Эффективность составляет более 100%, так как EPYC может поддерживать частоты в режиме Turbo выше базовой частоты во время теста HPL.
 

Задержки и пропускная способность InfiniBand

Затем мы проверили результаты эталонного микротеста задержки и пропускной способности InfiniBand между двумя серверами. Конфигурация, используемая для этих тестов, описана в Таблице 1. Результаты теста задержки и пропускной способности показаны на рис. 9 и рис. 10.


  Таблица 1. Испытательный стенд InfiniBand
Компонент Версия
Процессор Dell EMC PowerEdge R7425
Память Два 32-ядерных процессора AMD Epyc 7601, 2,2 ГГц
Профиль системы Управление энергопотреблением ЦП установлено на максимум, C-режимы отключены или включены, как отмечено, режим Turbo включен
ОС Red Hat Enterprise Linux 7.5
Ядро 3.10.0-862.el7.x86_64
OFED 4.4-1.0.0
Плата HCA Mellanox Connect X-5
Версия OSU 5.4.2
MPI hpcx-2.2.0 


SLN313856_ru__10GKimage010
Рис. 9. Задержка InfiniBand с коммутатором

Выполнение команды: mpirun -np 2 --allow-run-as-root -host node1,node2 -mca pml ucx -x UCX_NET_DEVICES=mlx5_0:1 -x UCX_TLS=rc_x -mca coll_fca_enable 0 -mca coll_hcoll_enable 0 -mca btl_openib_if_include mlx5_0:1  -report-bindings --bind-to core --map-by dist:span -mca rmaps_dist_device mlx5_0 numactl –cpunodebind=6 osu-micro-benchmarks-5.4.3/mpi/pt2pt/osu_latency

Были приняты меры, чтобы закрепить процесс MPI на узле NUMA, который ближе всего к HCA. Эта информация доступна в результатах команды «lstopo», и в нашем случае это был узел NUMA 6. Тесты задержки выполнялись как с OpenMPI, так и с HPC-X. Благодаря ускорению OpenMPI и MXM задержка составила 1,17 µс, а с OpenMPI и UCX задержка составила 1,10 µс. Здесь представлены результаты задержки, полученные с помощью HPC-X.

Из рис. 9 видно, что задержка в процессорах EPYC с включенными C-режимами составляет 1,07 µс, а задержка для всех размеров сообщений примерно на 2-9% лучше при включенных C-режимах по сравнению с отключенными C-режимами. Включение C-режимов позволяет неактивным ядрам находиться в более глубоком c-режиме, что обеспечивает более высокую частоту в режиме Turbo для активных ядер, что приводит к снижению задержек.

Результаты измерения пропускной способности представлены на рис. 10. Однонаправленная пропускная способность составила 12,4 Гбит/с, а двунаправленная пропускная способность составила 24,7 Гбит/с. Эти результаты соответствуют ожидаемым для EDR

SLN313856_ru__11GKimage011
Рис. 10. Пропускная способность InfiniBand

Выполнение команды: 

mpirun -np 2 --allow-run-as-root -host node208,node209 -mca pml ucx -x UCX_NET_DEVICES= mlx5_0:1 -x UCX_TLS=rc_x -mca coll_fca_enable 0 -mca coll_hcoll_enable 0 -mca btl_openib_if_include mlx5_0:1 --bind-to core -mca rmaps_dist_device mlx5_0 --report-bindings --display-map numactl --cpunodebind=6 osu-micro-benchmarks-5.4.3/mpi/pt2pt/osu_bibw

 

Табл. 2. Результаты команды «osu_mbw_mr» для одного узла NUMA
Процессор Узел NUMA (NN) Тестовая конфигурация Количество ядер в тесте на сервер Пропускная способность (Гбайт/с)
0 0 сервер1 NN0 - сервер2 NN0 8 6,9
0 1 сервер1 NN1 - сервер2 NN1 8 6,8
0 2 сервер1 NN2 - сервер2 NN2 8 6,8
0 3 сервер1 NN3 - сервер2 NN3 8 6,8
1 4 сервер1 NN4 - сервер2 NN4 8 12,1
1 5 сервер1 NN5 - сервер2 NN5 8 12,2
1 6 (локальный в HCA) сервер1 NN6 - сервер2 NN6 8 12,3
1 7 сервер1 NN7 - сервер2 NN7 8 12,1

Выполнение команды: 

mpirun -np 16 --allow-run-as-root –host server1,server2 -mca pml ucx -x UCX_NET_DEVICES=mlx5_0:1 -x UCX_TLS=rc_x -mca coll_fca_enable 0 -mca coll_hcoll_enable 0 -mca btl_openib_if_include mlx5_0:1 --report-bindings --bind-to core -mca rmaps_dist_device mlx5_0 numactl cpunodebind= osu-micro-benchmarks-5.4.3/mpi/pt2pt/osu_mbw_mr


Схема NUMA, описанная на рис. 3 и рис. 6, побудила нас проверить влияние локальности процесса на пропускную способность. Для этого теста использовался тест osu_mbw_mr, который измеряет совокупную однонаправленную пропускную способность между несколькими парами процессов. Цель данного теста — определить достигнутую пропускную способность и измерить скорость между отдельными узлами NUMA, используя все восемь ядер узла NUMA. Результаты данной проверки представлены в табл. 2. В тестовой конфигурации использовался профиль производительности (C-режимы отключены, режим Turbo включен).

Результаты показывают, что когда процессы выполняются на узле NUMA, подключенном к InfiniBand HCA (узел NUMA 6), совокупная пропускная способность составляет 12,3 Гбайт/с. Когда процессы выполняются на любом из трех других узлов NUMA, которые находятся на том же процессоре, что и HCA (процессор 1), совокупная пропускная способность примерно равна 12,1 Гбайт/с. Когда процессы выполняются на узлах NUMA в процессоре, удаленном от HCA, совокупная пропускная способность падает примерно до 6,8 Гбайт/с.

Следующий набор результатов, показанный в табл. 3, демонстрирует однонаправленную пропускную способность между отдельными процессорами. Для этого теста использовались все 32 ядра процессора. Измеренные значения составили 5,1 Гбайт/с при работе на локальном процессоре с HCA и 2,4 Гбайт/с при работе на удаленном процессоре с HCA. При использовании всех 64 ядер в наших тестовых серверах, измеренные значения составили 3,0 Гбайт/с при работе 64 процессов на каждом сервере.

Для повторной проверки этого последнего результата мы провели тест, используя все 8 узлов NUMA на обоих процессорах, при этом на каждом узле NUMA выполняется 2 процесса, что в сумме составляет 16 процессов на сервер. Измерения также показали 2,9 Гбайт/с.

Эти результаты показывают, что топология системы влияет на производительность связи. Это представляет интерес для тех случаев, когда важным фактором является схема связи «все-со-всеми» с несколькими процессами, которые взаимодействуют между серверами. Возможно, для других приложений пониженная пропускная способность при выполнении процессов на нескольких доменах NUMA, не влияет на производительность уровня приложений.


  Табл. 3. Результаты команды «osu_mbw_br» — уровень процессоров и системы
Процессор Узел NUMA Тестовая конфигурация Количество ядер в тесте на сервер Пропускная способность (Гбайт/с)
0
0
0
0
0
1
2
3
сервер 1 Процессор 0 -
сервер 2 Процессор 0
32 2,4
1
1
1
1
4
5
6 (локальный в HCA)
7
сервер 1 процессор 1 -
сервер 2 процессор 1
32 5,1

Выполнение команды: 

mpirun -np 64 --allow-run-as-root –rf rankfile -mca pml ucx -x UCX_NET_DEVICES= mlx5_0:1 -x UCX_TLS=rc_x -mca coll_fca_enable 0 -mca coll_hcoll_enable 0 -mca btl_openib_if_include mlx5_0:1 --report-bindings osu-micro-benchmarks-5.4.3/mpi/pt2pt/osu_mbw_mr

 
Процессор Узел NUMA Тестовая конфигурация Количество ядер в тесте на сервер Пропускная способность (Гбайт/с)
0
0
0
0
1
1
1
1
1
2
3
4
5
6 (локальный в HCA)
7
8
сервер 1 - сервер 2 64 3.0

Выполнение команды:

mpirun -np 128 --allow-run-as-root –rf rankfile -mca pml ucx -x UCX_NET_DEVICES= mlx5_0:1 -x UCX_TLS=rc_x -mca coll_fca_enable 0 -mca coll_hcoll_enable 0 -mca btl_openib_if_include mlx5_0:1 --report-bindings osu-micro-benchmarks-5.4.3/mpi/pt2pt/osu_mbw_mr

 
Процессор Узел NUMA Тестовая конфигурация Количество ядер в тесте на сервер Пропускная способность (Гбайт/с)
0 1 сервер 1 - сервер 2 2 2,9
0 2 2
0 3 2
0 4 2
1 5 2
1 6 (локальный в HCA) 2
1 7 2
1 8 2

Выполнение команды: 

mpirun -np 32 --allow-run-as-root –rf rankfile -mca pml ucx -x UCX_NET_DEVICES= mlx5_0:1 -x UCX_TLS=rc_x -mca coll_fca_enable 0 -mca coll_hcoll_enable 0 -mca btl_openib_if_include mlx5_0:1 --report-bindings osu-micro-benchmarks-5.4.3/mpi/pt2pt/osu_mbw_mr


Производительность уровня кластера HPL

После проверки производительности фабрики InfiniBand следующим испытанием было быстрое выполнение HPL по всему кластеру. Эти тесты проводились на 16-узловой системе с двумя процессорами EPYC 7601. Результаты приведены на рис. 11 и показывают ожидаемую масштабируемость HPL для 16 систем.

SLN313856_ru__12GKimage012
Рис. 11. HPL на 16 серверах

 

Производительность уровня кластера в WRF

Наконец, мы запустили приложение для прогнозирования погоды WRF. Испытательный стенд был такой же, как и в предыдущей версии, 16-узловая система с двумя процессорами EPYC 7601. Кроме того, мы провели ряд тестов на 4-узловой системе меньшего размера с двумя процессорами EPYC 7551. Все серверы имеют 16 Гбайт*16 RDIMM работающей со скоростью 2400 МТ/с и объединены друг с другом через Mellanox EDR InfiniBand.

SLN313856_ru__13GKimage013
Рис. 12. WRF conus 12 км, один узел

Мы использовали WRF версии 3.8.1 и версии 3.9.1 и протестировали наборы данных для conus 12 км и conus 2.5 км. Мы скомпилировали WRF и netcdf с помощью компиляторов Intel и запустили с Intel MPI. Мы опробовали различные схемы процессов и мозаичных схем с использованием как dmpar, так и параметра конфигурации dm+sm с OpenMP.

Мы работаем с AMD, чтобы определить другие параметры настройки компилятора для WRF.

Не была зафиксирована разница в производительности между WRF версии 3.8.1 и версии 3.9.1. Сравнивая dmpar и dm+sm, разумное сочетание процессов и плиток показало почти аналогичную производительность. Это показано на рис. 12.

SLN313856_ru__14GKimage014
Рис. 13. WRF conus 12 км, тесты кластера

SLN313856_ru__15GKimage015
Рис. 14. WRF conus 2,5 км, тесты кластера

Тесты на уровне кластера проводились с WRV версии 3.8.1 и конфигурацией dmpar с использованием всех ядер и 8 плиток в каждом прогоне.

Conus 12 км — это набор данных меньшего размера и производительность выравнивается после 8 узлов, 512 ядер на EPYC. Это показано на рис. 13. EPYC 7551 и EPYC 7601 — это 32-ядерные процессоры. У 7601 базовая тактовая частота и тактовая частота всех ядер в режиме Turbo на 10% и 6% выше, чем у 7551, соответственно. В тестах WRF conus 12 км производительность системы EPYC 7601 была на 3% выше, чем у 7551 при тестировании с 1, 2 и 4 узлами.

CONUS 2,5 км — это более крупный набор данных эталонного теста. По сравнению с 1 системой EPYC производительность масштабируется до 8 узлов (512 ядер), а затем начинает снижаться. С conus 2,5 км система EPYC 7601 также работает на 2–3% быстрее, чем EPYC 7551 в тестах с 1, 2 и 4 узлами, как показано на рис. 14.

 

Заключение и дальнейшие шаги

EPYC обеспечивает хорошую пропускную способность памяти и плотность ядер на процессор. С точки зрения HPC мы ожидаем приложений, которые смогут использовать доступную пропускную способность памяти и ядра процессора, чтобы получить все преимущества архитектуры EPYC. На сегодняшний день EPYC не поддерживает AVX512 или AVX2 в одном цикле, поэтому коды, которые имеют высокую векторизацию и могут эффективно использовать AVX2 или AVX512, могут быть неидеальными для EPYC.

В сценариях, где могут использоваться несколько накопителей NVMe, также может быть полезно решение с прямым подключением NVMe, которое возможно благодаря множеству линий PCI-E на EPYC.

В дальнейшем мы собираемся провести дополнительные тесты производительности с приложениями для высокопроизводительных вычислений.





Article Properties


Affected Product

High Performance Computing Solution Resources, PowerEdge R7425

Last Published Date

21 Feb 2021

Version

3

Article Type

Solution