Garima Kochhar, Deepthi Cherlopalle, Joshua Weage. HPC and AI Innovation Lab, ottobre 2019
Non applicabile
Nel mondo dell'HPC di oggi, il processore EPYC di ultima generazione di AMD, nome in codice Rome, non ha bisogno di presentazioni. Negli ultimi mesi abbiamo valutato i sistemi basati a Roma nell'HPC and AI Innovation Lab e Dell Technologies ha recentemente annunciato
server che supportano questa architettura di processore. Questo primo blog della serie Rome parlerà dell'architettura del processore Rome, di come può essere ottimizzata per le prestazioni HPC e presenterà le prestazioni iniziali del micro-benchmark. I blog successivi descriveranno le prestazioni delle applicazioni nei domini di CFD, CAE, dinamica molecolare, simulazione meteorologica e altre applicazioni.
Rome è la CPU EPYC di 2a generazione di AMD, che aggiorna la loro Naples di 1a generazione. Abbiamo parlato di Napoli in questo blog l'anno scorso.
Una delle maggiori differenze architetturali tra Napoli e Roma che avvantaggia l'HPC è il nuovo die IO a Roma. In Rome, ogni processore è un pacchetto multi-chip composto da un massimo di 9 chiplet , come mostrato in Figura 1. È presente un die I/O centrale a 14 nm che contiene tutte le funzioni di I/O e memoria: controller di memoria, collegamenti fabric Infinity all'interno del socket e della connettività tra socket e PCI-E. Ci sono otto controller di memoria per socket che supportano otto canali di memoria che eseguono DDR4 a 3200 MT/s. Un server a socket singolo può supportare fino a 130 corsie PCIe Gen4. Un sistema a doppio socket può supportare fino a 160 corsie PCIe Gen4.
(Figura 1. Pacchetto multi-chip Rome con un die I/O centrale e die fino a otto core)
Intorno al die I/O centrale ci sono fino a otto chiplet core a 7 nm. Il chiplet core è chiamato core cache die o CCD. Ogni CCD ha core CPU basati sulla microarchitettura Zen2, cache L2 e cache L3 da 32 MB. Il CCD stesso ha due Core Cache Complexes (CCX), ognuno dei quali ha fino a quattro core e 16 MB di cache L3. La Figura 2 mostra un CCX.
(Figura.2 Un CCX con quattro core e 16 MB di cache L3 condivisa)
I diversi modelli di CPU Rome hanno un numero diverso di core,
ma tutti hanno un die di I/O centrale.
All'estremità superiore c'è un modello di CPU a 64 core, ad esempio l'EPYC 7702. L'output di lstopo mostra che questo processore ha 16 CCX per socket, ogni CCX ha quattro core come mostrato in Figure.3 e 4, producendo così 64 core per socket. 16 MB di memoria L3 per CCX, ovvero 32 MB di L3 per CCD, per un totale di 256 MB di memoria cache L3. Si noti, tuttavia, che la cache L3 totale in Rome non è condivisa da tutti i core. La cache L3 da 16 MB in ogni CCX è indipendente ed è condivisa solo dai core del CCX, come illustrato nella Figura 2.
Una CPU a 24 core come EPYC 7402 ha 128 MB di cache L3. L'output di lstopo nelle Figure 3 e 4 illustra che questo modello ha tre core per CCX e 8 CCX per socket.
(Figure 3 e 4 : uscita lstopo per CPU a 64 e 24 core)
Indipendentemente dal numero di CCD, ogni processore Rome è logicamente diviso in quattro quadranti con CCD distribuiti nel modo più uniforme possibile tra i quadranti e due canali di memoria in ogni quadrante. Il die di I/O centrale può essere considerato come un supporto logico dei quattro quadranti del socket.
L'IO centrale di Roma aiuta a migliorare le latenze di memoria rispetto a quelle misurate a Napoli. Inoltre, consente di configurare la CPU come un singolo dominio NUMA, consentendo l'accesso uniforme alla memoria per tutti i core nel socket. Questo è spiegato di seguito.
I quattro quadranti logici di un processore Rome consentono di partizionare la CPU in domini NUMA diversi. Questa impostazione è denominata NUMA per socket o NPS.
Laddove disponibile, NPS4 è consigliato per l'HPC poiché dovrebbe fornire la migliore larghezza di banda della memoria, latenze di memoria più basse e le nostre applicazioni tendono a essere compatibili con NUMA. Se NPS4 non è disponibile, si consiglia l'NPS più alto supportato dal modello di CPU: NPS2 o anche NPS1.
Data la moltitudine di opzioni NUMA disponibili sulle piattaforme basate su Rome, il BIOS PowerEdge consente due diversi metodi di enumerazione dei core nell'enumerazione MADT. L'enumerazione lineare numera i core in ordine, riempiendo un socket CCX, CCD prima di passare al socket successivo. In una CPU 32c, i core da 0 a 31 si trovano sul primo socket, i core da 32 a 63 sul secondo socket. L'enumerazione Round Robin numera i core nelle aree NUMA. In questo caso, i core pari si trovano sul primo socket, i core dispari sul secondo socket. Per semplicità, consigliamo l'enumerazione lineare per HPC. Vedere la Figura 5 per un esempio di enumerazione lineare dei core su un server 64c a doppio socket configurato in NPS4. Nella figura, ogni scatola di quattro core è un CCX, ogni set di otto core contigui è un CCD.
(Figura 5 . Enumerazione lineare dei core su un sistema a doppio socket, 64c per socket, configurazione NPS4 su un modello di CPU a 8 CCD)
Un'altra opzione del BIOS specifica per Rome è denominata Preferred IO Device. Si tratta di un'importante manopola di ottimizzazione per la larghezza di banda InfiniBand e la velocità dei messaggi. Consente alla piattaforma di assegnare priorità al traffico per un dispositivo IO. Questa opzione è disponibile sulle piattaforme Rome a uno e due socket e il dispositivo InfiniBand nella piattaforma deve essere selezionato come dispositivo preferito nel menu del BIOS per ottenere la frequenza completa dei messaggi quando tutti i core della CPU sono attivi.
Analogamente a Naples, Rome supporta anche l'hyper-threadingo il processore logico. Per HPC, questa opzione viene lasciata disabilitata, ma alcune applicazioni possono trarre vantaggio dall'abilitazione del processore logico. Dai un'occhiata ai nostri blog successivi sugli studi applicativi della dinamica molecolare.
Analogamente a Napoli, anche Roma consente CCX come dominio NUMA. Questa opzione espone ogni CCX come nodo NUMA. In un sistema con CPU dual-socket con 16 CCX per CPU, questa impostazione esporrà 32 domini NUMA. In questo esempio, ogni socket ha 8 CCD, ovvero 16 CCX. Ogni CCX può essere abilitato come proprio dominio NUMA, fornendo 16 nodi NUMA per socket e 32 in un sistema a due socket. Per HPC, si consiglia di lasciare CCX come dominio NUMA nell'opzione predefinita disabilitata. L'abilitazione di questa opzione dovrebbe aiutare gli ambienti virtualizzati.
Analogamente a Napoli, Rome consente di impostare il sistema in modalità Performance Determinism o Power Determinism . In Performance Determinism, il sistema funziona con la frequenza prevista per il modello di CPU, riducendo la variabilità tra più server. In Power Determinism, il sistema funziona al TDP massimo disponibile del modello di CPU. Ciò amplifica le variazioni da parte a parte nel processo di produzione, consentendo ad alcuni server di essere più veloci di altri. Tutti i server possono consumare la massima potenza nominale della CPU, rendendo il consumo energetico deterministico, ma consentendo alcune variazioni di prestazioni su più server.
Come ci si aspetterebbe dalle piattaforme PowerEdge, il BIOS dispone di un'opzione meta denominata System Profile. Selezionando il profilo di sistema Performance Optimized , verrà abilitata la modalità Turbo Boost, disattivati gli stati C e verrà impostato il dispositivo di scorrimento del determinismo su Power Determinism, ottimizzando le prestazioni.
Molti dei nostri lettori potrebbero essere saltati direttamente a questa sezione, quindi ci tufferemo subito.
Nel laboratorio per l'innovazione dell HPC e dell'intelligenza artificiale, abbiamo creato un cluster di 64 server con sede a Roma che chiamiamo Minerva. Oltre all'ammasso omogeneo di Minerva, abbiamo alcuni altri campioni di CPU Rome che siamo stati in grado di valutare. Il nostro banco di prova è descritto nella Tabella 1 e nella Tabella 2.
(Tabella.1 Rome modelli di CPU valutati in questo studio)
CPU | Core per socket | Config | Base Clock | TDP |
---|---|---|---|---|
7702 | 64c | 4 centesimi per CCX | 2,0 GHz | 200W |
7502 | 32c | 4 centesimi per CCX | 2,5 GHz | 180W |
7452 | 32c | 4 centesimi per CCX | 2,35 GHz | 155 W |
7402 | 24c | 3 centesimi per CCX | 2,8 GHz | 180W |
(Tabella 2 Banco di prova)
Componente | Dettagli |
---|---|
Server | PowerEdge C6525 |
Processore | Come mostrato nella Tabella 1. A due socket |
Memoria | 256 GB, 16 da 16 GB, 3.200 MT/s, DDR4 |
Interconnessione | ConnectX-6 Mellanox Infini Band HDR100 |
Sistema operativo | Red Hat Enterprise Linux 7.6 |
Kernel | 3.10.0.957.27.2.e17.x86_64 |
Disco | Modulo SSD M.2 SATA da 240 GB |
I test della larghezza di banda della memoria su Rome sono presentati nella Figura 6. Questi test sono stati eseguiti in modalità NPS4. Abbiamo misurato una larghezza di banda di memoria di ~270-300 GB/s sul nostro PowerEdge C6525 a doppio socket quando abbiamo utilizzato tutti i core del server nei quattro modelli di CPU elencati nella Tabella 1. Quando viene utilizzato un solo core per CCX, la larghezza di banda della memoria di sistema è ~9-17% superiore a quella misurata con tutti i core.
La maggior parte dei carichi di lavoro HPC sottoscriverà completamente tutti i core del sistema oppure i centri HPC verranno eseguiti in modalità a throughput elevato con più processi su ogni server. Di conseguenza, la larghezza di banda della memoria all-core è la rappresentazione più accurata della larghezza di banda della memoria e delle funzionalità di larghezza di banda della memoria per core del sistema.
La Figura 6 mostra anche la larghezza di banda della memoria misurata sulla piattaforma EPYC Naples della generazione precedente, anch'essa in grado di supportare otto canali di memoria per socket ma con una velocità di 2.667 MT/s. La piattaforma Rome offre una larghezza di banda totale della memoria dal 5% al 19% migliore rispetto a Naples, e questo è dovuto principalmente alla memoria più veloce da 3200 MT/s. Anche con 64c per socket, il sistema Rome è in grado di fornire fino a 2 GB/s/core.
Confrontando le diverse configurazioni NPS, è stata misurata con NPS4 ~13% di larghezza di banda di memoria in più rispetto a NPS1, come mostrato nella Figura 7.
(Figura 6 . Larghezza di banda della memoria della terna NPS4 STREAM a doppio socket)
(Figura 7 . Larghezza di banda della memoria NPS1 vs NPS2 vs NPS 4)
La Figura 8 traccia la larghezza di banda InfiniBand single-core per test unidirezionali e bidirezionali. Il banco di prova ha utilizzato HDR100 in esecuzione a 100 Gb/s e il grafico mostra le prestazioni previste a livello di velocità di linea per questi test.
Figura 8. Larghezza di banda InfiniBand (single-core)
Figura 9. Velocità dei messaggi InfiniBand (tutti i core)
Successivamente sono stati condotti i test sulla frequenza dei messaggi utilizzando tutti i core su un socket nei due server sottoposti a test. Quando Preferred IO è abilitato nel BIOS e la scheda ConnectX-6 HDR100 è configurata come dispositivo preferito, la frequenza dei messaggi all-core è significativamente più elevata rispetto a quando Preferred IO non è abilitato, come mostrato nella Figura 9. Ciò dimostra l'importanza di questa opzione del BIOS durante l'ottimizzazione per HPC e soprattutto per la scalabilità delle applicazioni multi-nodo.
La microarchitettura di Roma può ritirare 16 DP FLOP/ciclo, il doppio di quello di Napoli che era di 8 FLOP/ciclo. Questo dà a Rome 4 volte il picco teorico di FLOPS su Naples, 2 volte dalla capacità di virgola mobile migliorata e 2 volte dal doppio del numero di core (64c vs 32c). La Figura.10 mostra i risultati HPL misurati per i quattro modelli di CPU Rome che abbiamo testato, insieme ai nostri risultati precedenti da un sistema con sede a Napoli. L'efficienza HP Rome viene indicata come valore percentuale sopra le barre del grafico ed è maggiore per i modelli di CPU con TDP inferiore.
I test sono stati eseguiti in modalità Power Determinism ed è stato misurato un delta di ~5% nelle prestazioni su 64 server configurati in modo identico. I risultati sono quindi in quella fascia di prestazioni.
(Figura 10 . HPL a server singolo in NPS4)
Successivamente, sono stati eseguiti test HPL a più nodi, i cui risultati sono riportati nella Figura 11. Le efficienze HPL per EPYC 7452 rimangono superiori al 90% su una scala a 64 nodi, ma i cali di efficienza dal 102% al 97% e di nuovo al 99% necessitano di un'ulteriore valutazione
(Figura 11 . HPL a più nodi, EPYC 7452 a due socket su HDR100 InfiniBand)
Gli studi iniziali sulle prestazioni dei server con sede a Roma mostrano le prestazioni previste per il nostro primo set di benchmark HPC. L'ottimizzazione del BIOS è importante durante la configurazione per ottenere le migliori prestazioni e le opzioni di ottimizzazione sono disponibili nel nostro profilo del carico di lavoro HPC del BIOS che può essere configurato in fabbrica o impostato utilizzando le utilità di gestione dei sistemi Dell EMC.
L'HPC and AI Innovation Lab dispone di un nuovo cluster PowerEdge Minerva da 64 server basato su Roma. Tieni d'occhio questo spazio per i prossimi blog che descrivono gli studi sulle prestazioni delle applicazioni sul nostro nuovo cluster Minerva.