Гаріма Кочхар, Діпті Черлопалле, Джошуа Віге. HPC та AI Innovation Lab, жовтень 2019 р.
Не застосовується
У сучасному світі HPC процесор AMD EPYC останнього покоління під кодовою назвою Rome навряд чи потребує представлення. Останні кілька місяців ми оцінювали системи на базі Риму в лабораторії інновацій HPC та AI , а нещодавно Dell Technologies анонсувала сервери, які підтримують цю архітектуру процесорів. У цьому першому блозі серії Rome ми обговоримо архітектуру процесора Rome, як її можна налаштувати на продуктивність HPC і представити початкову продуктивність мікро-еталонів. У наступних блогах буде описано продуктивність додатків у сферах CFD, CAE, молекулярної динаміки, моделювання погоди та інших застосувань.
Rome — це процесор EPYC 2-го покоління від AMD, який оновлює Naple 1-го покоління. Минулого року ми обговорювали Неаполь у цьому блозі .
Однією з найбільших архітектурних відмінностей між Неаполем і Римом, яка приносить користь HPC, є новий IO в Римі. У Римі кожен процесор являє собою багатокристальний пакет, що складається з 9 чиплетів , як показано на малюнку 1. Є один центральний 14-нм кристал вводу-виводу, який містить усі функції вводу-виводу та пам'яті – згадайте контролери пам'яті, тканинні зв'язки Infinity всередині сокета та міжсокетного підключення, а також PCI-e. На сокет припадає вісім контролерів пам'яті, які підтримують вісім каналів пам'яті під управлінням DDR4 зі швидкістю 3200 МТ/с. Односокетний сервер може підтримувати до 130 ліній PCIe Gen4. Двосокетна система може підтримувати до 160 ліній PCIe Gen4.
(Рис.1Римський багатокристальний корпус з одним центральним кристалом вводу-виводу та до восьмиядерних кристалів)
Навколо центральної кристала вводу-виводу знаходяться до восьми 7-нм сердечників. Чиплет ядра називається кристалом Core Cache або CCD. Кожна CCD має ядра процесора на базі мікроархітектури Zen2, кеш-пам'ять L2 і кеш-пам'ять L3 об'ємом 32 МБ. Сам CCD має два комплекси Core Cache Complex (CCX), кожен CCX має до чотирьох ядер і 16 МБ кеш-пам'яті L3. На малюнку 2 показаний ССХ.
(Малюнок.2 CCX з чотирма ядрами та спільною кеш-пам'яттю L3 16 МБ)
Різні моделі процесорів Rome мають різну кількість ядер, але всі вони мають один центральний кристал вводу-виводу.
На топовому торці знаходиться 64-ядерна модель процесора, наприклад, EPYC 7702. Вихід lstopo показує нам, що цей процесор має 16 CCX на сокет, кожен CCX має чотири ядра, як показано на рисунках 3 і 4, таким чином дає 64 ядра на сокет. 16 МБ L3 на CCX, тобто 32 МБ L3 на CCD, дають цьому процесору загалом 256 МБ кеш-пам'яті L3. Однак зауважте, що загальний кеш L3 у Римі не є спільним для всіх ядер. Кеш-пам'ять L3 розміром 16 МБ у кожному CCX є незалежною і використовується лише ядрами в CCX, як показано на малюнку 2.
24-ядерний процесор, такий як EPYC 7402, має 128 МБ кеш-пам'яті L3. Вихід lstopo на рисунках 3 і 4 ілюструє, що ця модель має три ядра на CCX і 8 CCX на сокет.
(Рис.3 і 4 lstopo вихід для 64-ядерних і 24-ядерних процесорів)
Незалежно від кількості ПЗЗ, кожен римський процесор логічно розділений на чотири квадранти , причому ПЗЗ розподілені максимально рівномірно по квадрантах і два канали пам'яті в кожному квадранті. Центральну кристал вводу-виводу можна розглядати як таку, що логічно підтримує чотири квадранти гнізда.
Центральний кристал IO в Римі допомагає покращити затримки пам'яті порівняно з тими, що вимірюються в Неаполі. Крім того, це дозволяє конфігурувати процесор як єдиний домен NUMA, забезпечуючи рівномірний доступ до пам'яті для всіх ядер сокета. Про це розказано нижче.
Чотири логічні квадранти в римському процесорі дозволяють розділити центральний процесор на різні домени NUMA. Цей параметр називається NUMA per socket або NPS.
Там, де це можливо, NPS4 рекомендується для HPC, оскільки очікується, що він забезпечить найкращу пропускну здатність пам'яті, найменші затримки пам'яті, а наші програми, як правило, знають NUMA. Там, де NPS4 недоступний, ми рекомендуємо найвищий NPS, що підтримується моделлю процесора - NPS2 або навіть NPS1.
З огляду на безліч опцій NUMA, доступних на платформах, розташованих у Римі, BIOS PowerEdge дозволяє два різні методи нумерації ядра під нумерацією MADT. Лінійне перерахування нумерує ядра по порядку, заповнюючи один CCX, CCD, сокет перед переходом до наступного сокета. На процесорі 32c ядра від 0 до 31 будуть на першому сокеті, ядра 32-63 на другому роз'ємі. Круговий перелік нумерує ядра в регіонах NUMA. При цьому на першому сокеті будуть парні жили, на другому - непарні. Для простоти ми рекомендуємо лінійний перебір для HPC. На рисунку 5 наведено приклад перерахування лінійних ядер на двосокетному сервері 64c, налаштованому в NPS4. На малюнку кожна коробка з чотирьох ядер є CCX, кожен набір суміжних восьми ядер є CCD.
(Рис.5 Лінійне перерахування ядер на двосокетній системі, 64c на сокет, конфігурація NPS4 на моделі процесора 8 CCD)
Ще одна опція BIOS для Риму називається Preferred IO Device. Це важлива ручка налаштування пропускної здатності та швидкості повідомлень InfiniBand. Це дозволяє платформі пріоритезувати трафік для одного пристрою вводу-виводу. Ця опція доступна як на односокетних, так і на двосокетних платформах Rome, і пристрій InfiniBand на платформі необхідно вибрати як бажаний пристрій у меню BIOS, щоб досягти повної частоти повідомлень, коли всі ядра процесора активні.
Подібно до Неаполя, Рим також підтримує гіперпоточністьабо логічний процесор. Для HPC ми залишаємо це вимкненим, але деякі програми можуть отримати вигоду від увімкнення логічного процесора. Шукайте наші подальші блоги, присвячені прикладним дослідженням молекулярної динаміки.
Подібно до Неаполя, Рим також дозволяє CCX як домен NUMA. Цей параметр відкриває кожен CCX як вузол NUMA. У системі з двосокетними процесорами з 16 CCX на процесор цей параметр відкриває 32 домени NUMA. У цьому прикладі кожен сокет має 8 CCD, тобто 16 CCX. Кожен CCX може бути включений як окремий домен NUMA, що дає 16 вузлів NUMA на сокет і 32 в системі з двома сокетами. Для HPC ми рекомендуємо залишити CCX як домен NUMA за замовчуванням вимкнено. Очікується, що увімкнення цього параметра допоможе віртуалізованим середовищам.
Подібно до Неаполя, Рим дозволяє встановити систему в режимі детермінізму продуктивності або детермінізму потужності . У детермінізмі продуктивності система працює на очікуваній частоті для моделі процесора, зменшуючи варіативність на кількох серверах. У Power Determinism система працює на максимально доступному TDP CPU моделі. Це посилює варіації виробничого процесу, дозволяючи деяким серверам бути швидшими за інші. Усі сервери можуть споживати максимальну номінальну потужність центрального процесора, що робить енергоспоживання детермінованим, але допускає деяку різницю продуктивності на кількох серверах.
Як і слід було очікувати від платформ PowerEdge, BIOS має мета-опцію під назвою «Системний профіль». Вибір профілю системи Performance Optimized увімкне режим турбонаддуву, вимкне C-стани та встановить повзунок детермінізму на Power Determinism, оптимізуючи продуктивність.
Багато хто з наших читачів, можливо, відразу перейшли до цього розділу, тому ми зануримося в нього.
У лабораторії інновацій HPC та штучного інтелекту ми створили кластер із 64 серверами в Римі, який ми називаємо Minerva. На додаток до однорідного кластера Minerva, у нас є кілька інших зразків процесорів Rome, які ми змогли оцінити. Наш випробувальний стенд описаний в Таблиці 1 і Таблиці 2.
(Табл. 1 Римські моделі процесорів, оцінені в цьому дослідженні)
ЦП | Кількість ядер на роз'єм | Конфігурація | Базовий годинник | ТДП |
---|---|---|---|---|
7702 | 64 С | 4c на CCX | 2,0 ГГц | 200 Вт |
7502 | 32 С | 4c на CCX | 2,5 ГГц | 180 Вт |
7452 | 32 С | 4c на CCX | 2,35 ГГц | 155 Вт |
7402 | 24с | 3c на CCX | 2,8 ГГц | 180 Вт |
(Табл.2 Випробувальний стенд)
Компонент | Деталі |
---|---|
Сервер | PowerEdge C6525 |
Процесор | Як показано в таблиці.1 подвійна розетка |
Пам'ять | 256 ГБ, 16x16 ГБ пам'яті 3200 МТ/с DDR4 |
З'єднання | ConnectX-6 Mellanox Infini Band HDR100 |
Операційна система | Red Hat Enterprise Linux 7.6 |
Ядра | 3.10.0.957.27.2.e17.x86_64 |
Диск | Модуль SATA SSD M.2 ємністю 240 ГБ |
Тести пропускної здатності пам'яті на Rome представлені на рис.6, ці тести проводилися в режимі NPS4. Ми виміряли пропускну здатність пам'яті ~270-300 ГБ/с на нашому двосокетному PowerEdge C6525 при використанні всіх ядер сервера в чотирьох моделях процесорів, перелічених у таблиці.1. Коли на CCX використовується лише одне ядро, пропускна здатність системної пам'яті на ~9-17% вища, ніж у всіх ядрах.
Більшість робочих навантажень HPC або повністю підписуються на всі ядра системи, або центри HPC працюють у режимі високої пропускної здатності з кількома завданнями на кожному сервері. Таким чином, пропускна здатність всеядерної пам'яті є більш точним відображенням пропускної здатності пам'яті та можливостей пропускної здатності пам'яті на ядро системи.
На малюнку 6 також показана пропускна здатність пам'яті, виміряна на платформі EPYC Naples попереднього покоління, яка також підтримувала вісім каналів пам'яті на сокет, але працювала зі швидкістю 2667 МТ/с. Римська платформа забезпечує на 5-19% кращу загальну пропускну здатність пам'яті, ніж Неаполь, і це в основному пов'язано з більш швидкою пам'яттю 3200 МТ/с. Навіть з 64c на сокет система Rome може забезпечити швидкість до 2 ГБ/с/ядро.
Порівнюючи різні конфігурації NPS, за допомогою NPS4 було виміряно на ~13% більшу пропускну здатність пам'яті порівняно з NPS1, як показано на рисунку 7.
(Рис.6 Пропускна здатність пам'яті Dual-socket NPS4 STREAM Triad)
(Рис.7 NPS1 vs NPS2 vs NPS 4 Пропускна здатність пам'яті)
На малюнку 8 побудована одноядерна смуга пропускання InfiniBand для однонаправлених і двонаправлених тестів. На тестовому стенді використовувався HDR100, що працює зі швидкістю 100 Гбіт/с, і графік показує очікувану продуктивність лінійної швидкості для цих тестів.
Рис.8 Пропускна здатність InfiniBand (одноядерна))
Рис.9 Швидкість повідомлень InfiniBand (всі ядра))
Далі були проведені тести швидкості повідомлень з використанням усіх ядер сокета на двох протестованих серверах. Коли в BIOS увімкнено бажаний вводу-вивід, а адаптер ConnectX-6 HDR100 налаштований як бажаний пристрій, частота повідомлень на всіх ядрах значно вища, ніж коли не ввімкнено, як показано на малюнку 9. Це ілюструє важливість цієї опції BIOS при налаштуванні на HPC і особливо для масштабованості багатовузлових додатків.
Римська мікроархітектура може виводити з ладу 16 DP FLOP/цикл, що вдвічі більше, ніж у Неаполі, який становив 8 FLOPS/цикл. Це дає Риму в 4 рази більше теоретичного піку FLOPS над Неаполем, в 2 рази більше можливостей з плаваючою комою і в 2 рази більше ядер (64c проти 32c). На малюнку 10 показані результати вимірювання HPL для чотирьох моделей процесорів Rome, які ми тестували, а також наші попередні результати з системи, розташованої в Неаполі. Ефективність Rome HPL відзначається як відсоткове значення над стовпчиками на графіку і є вищою для моделей процесорів з нижчим TDP.
Тести проводилися в режимі детермінізму потужності, і було виміряно ~5% дельту продуктивності на 64 однаково налаштованих серверах, таким чином, результати тут знаходяться в цьому діапазоні продуктивності.
(Рис.10 Односерверний HPL в NPS4)
Були виконані наступні багатовузлові HPL-тести, результати яких відображені на рис.11. Ефективність HPL для EPYC 7452 залишається вищою за 90% на 64-вузловому рівні, але падіння ефективності зі 102% до 97% і назад до 99% потребує подальшої оцінки
(Рис.11 Багатовузловий HPL, двосокетний EPYC 7452 через HDR100 InfiniBand)
Початкові дослідження продуктивності серверів, розташованих у Римі, показують очікувану продуктивність для нашого першого набору тестів HPC. Налаштування BIOS важливе під час налаштування для найкращої продуктивності, і параметри налаштування доступні в нашому профілі робочого навантаження BIOS HPC, який можна налаштувати на заводі або встановити за допомогою утиліт керування системами Dell EMC.
HPC та AI Innovation Lab мають новий кластер PowerEdge Minerva на 64 сервери в Римі. Слідкуйте за подальшими блогами, які описують дослідження продуктивності додатків у нашому новому кластері Minerva.