Garima Kochhar, Deepthi Cherlopalle, Joshua Weage. HPC och AI Innovation Lab, oktober 2019
Gäller ej
I dagens HPC-värld behöver AMD:s senaste generation EPYC-processor , med kodnamnet Rome , knappast någon närmare presentation. Vi har utvärderat Rom-baserade system i HPC och AI Innovation Lab de senaste månaderna, och Dell Technologies presenterade nyligen servrar som stöder den här processorarkitekturen. I det här första blogginlägget i Rome-serien kommer vi att diskutera Rome-processorarkitekturen, hur den kan finjusteras för HPC-prestanda och presentera inledande prestanda för mikroprestanda. Efterföljande bloggar kommer att beskriva applikationsprestanda över domänerna CFD, CAE, molekylär dynamik, vädersimulering och andra applikationer.
Rome är AMD:s 2:a generationens EPYC-processor och uppdaterar deras 1:a generation Naples. Vi diskuterade Neapel i den här bloggen förra året.
En av de största arkitektoniska skillnaderna mellan Neapel och Rom som gynnar HPC är den nya IO-matrisen i Rom. I Rom är varje processor ett flerchipspaket som består av upp till 9 chiplets som visas i figur 1. Det finns en central 14nm IO-matris som innehåller alla IO- och minnesfunktioner – tänk minneskontroller, Infinity-infrastrukturlänkar i sockeln och anslutningsmöjligheter mellan socklar och PCI-e. Det finns åtta minnesstyrenheter per sockel som har stöd för åtta minneskanaler som kör DDR4 vid 3 200 MT/s. En server med en sockel kan stödja upp till 130 PCIe Gen4-banor. Ett system med dubbla socklar kan stödja upp till 160 PCIe Gen4-banor.
(Figur 1Rome flerchipspaket med en central IO-matris och upp till åtta kärnor)
Runt den centrala IO-matrisen finns upp till åtta 7nm kärnchiplets. Kärnchipleten kallas en Core Cache-matris eller CCD. Varje CCD har CPU-kärnor baserade på Zen2-mikroarkitekturen, L2-cache och 32 MB L3-cache. Själva CCD:n har två Core Cache Complexes (CCX), varje CCX har upp till fyra kärnor och 16 MB L3-cache. Bild 2 visar ett CCX.
(Bild 2 En CCX med fyra kärnor och delat 16 MB L3-cacheminne)
De olika Rome CPU-modellerna har olika antal kärnor, men alla har en central IO-matris.
I den övre änden finns en CPU-modell med 64 kärnor, till exempel EPYC 7702. lstopo-utdata visar oss att denna processor har 16 CCX per sockel, varje CCX har fyra kärnor som visas i figur 3 och 4, vilket ger 64 kärnor per sockel. 16 MB L3 per CCX, dvs 32 MB L3 per CCD, ger denna processor totalt 256 MB L3-cache. Observera dock att den totala L3-cachen i Rom inte delas av alla kärnor. L3-cachen på 16 MB i varje CCX är oberoende och delas endast av kärnorna i CCX enligt bild 2.
En 24-kärnig processor som EPYC 7402 har 128 MB L3-cacheminne. lstopo-utgången i figur 3 och 4 illustrerar att denna modell har tre kärnor per CCX och 8 CCX per uttag.
(Bild 3 och 4 lstopo-utdata för processorer med 64 och 24 kärnor)
Oavsett antalet CCD:er är varje Rome-processor logiskt uppdelad i fyra kvadranter med CCD:er fördelade så jämnt över kvadranterna som möjligt och två minneskanaler i varje kvadrant. Den centrala IO-matrisen kan ses som ett logiskt stöd för sockelns fyra kvadranter.
Den centrala IO-matrisen i Rom hjälper till att förbättra minneslatenserna jämfört med de som uppmättes i Neapel. Dessutom kan processorn konfigureras som en enda NUMA-domän, vilket ger enhetlig minnesåtkomst för alla kärnor i sockeln. Detta förklaras nedan.
De fyra logiska kvadranterna i en Rome-processor gör att processorn kan delas upp i olika NUMA-domäner. Den här inställningen kallas NUMA per socket eller NPS.
NPS4 rekommenderas för HPC där det är tillgängligt, eftersom det förväntas ge den bästa minnesbandbredden, kortaste minneslatenser och våra program tenderar att vara NUMA-medvetna. Om NPS4 inte är tillgängligt rekommenderar vi den högsta NPS som stöds av CPU-modellen – NPS2, eller till och med NPS1.
Med tanke på de många NUMA-alternativ som finns tillgängliga på Rom-baserade plattformar tillåter PowerEdge BIOS två olika kärnuppräkningsmetoder under MADT-uppräkning. Linjär uppräkning numrerar kärnor i ordning, fyller en CCX, CCD, socket innan den flyttas till nästa socket. På en 32c-processor finns kärnorna 0 till 31 på den första sockeln, kärnorna 32–63 på den andra sockeln. Resursallokeringsuppräkning numrerar kärnorna i NUMA-regioner. I det här fallet kommer jämnt numrerade kärnor att finnas på den första sockeln, udda kärnor på den andra sockeln. För enkelhetens skull rekommenderar vi linjär uppräkning för HPC. I bild 5 finns ett exempel på linjär kärnuppräkning på en 64c-server med dubbla socklar konfigurerad i NPS4. I figuren är varje låda med fyra kärnor en CCX, varje uppsättning med sammanhängande åtta kärnor är en CCD.
(Bild 5 Linjär kärnuppräkning på ett system med två socklar, 64c per sockel, NPS4-konfiguration på en modell med 8 CCD-processorer)
Ett annat Rom-specifikt BIOS-alternativ kallas Preferred IO Device. Detta är en viktig inställningsratt för InfiniBand-bandbredd och meddelandehastighet. Det gör att plattformen kan prioritera trafik för en IO-enhet. Det här alternativet är tillgängligt på Rome-plattformar med både en och två socklar, och InfiniBand-enheten på plattformen måste väljas som föredragen enhet i BIOS-menyn för att uppnå full meddelandefrekvens när alla processorkärnor är aktiva.
I likhet med Neapel har Rom också stöd för hypertrådningeller logisk processor. För HPC lämnar vi detta inaktiverat, men vissa applikationer kan dra nytta av att aktivera logisk processor. Håll utkik efter våra efterföljande bloggar om tillämpningar av molekyldynamik.
I likhet med Neapel tillåter Rom också CCX som NUMA-domän. Det här alternativet exponerar varje CCX som en NUMA-nod. På ett system med processorer med dubbla socklar med 16 CCX:er per processor exponerar den här inställningen 32 NUMA-domäner. I det här exemplet har varje sockel 8 CCD:er, dvs. 16 CCX. Varje CCX kan aktiveras som en egen NUMA-domän, vilket ger 16 NUMA-noder per sockel och 32 i ett system med två socklar. För HPC rekommenderar vi att du lämnar CCX som NUMA-domän med standardalternativet inaktiverat. Att aktivera det här alternativet förväntas hjälpa virtualiserade miljöer.
I likhet med Neapel tillåter Rom att systemet ställs in i prestandadeterminism eller potensdeterminism . Vid prestandadeterminism arbetar systemet med den förväntade frekvensen för CPU-modellen, vilket minskar variationen mellan flera servrar. Vid Power Determinism arbetar systemet med den högsta tillgängliga TDP:n för CPU-modellen. Detta förstärker variationen från del till del i tillverkningsprocessen, vilket gör att vissa servrar kan vara snabbare än andra. Alla servrar kan förbruka processorns maximala märkeffekt, vilket gör strömförbrukningen deterministisk, men tillåter viss prestandavariation över flera servrar.
Som man kan förvänta sig av PowerEdge-plattformar har BIOS ett metaalternativ som heter System Profile. Om du väljer systemprofilen Prestandaoptimerad aktiveras turboförstärkningsläget, C-tillstånd inaktiveras och determinismreglaget ställs in på Energideterminism, vilket optimerar prestandan.
Många av våra läsare kanske har hoppat direkt till det här avsnittet, så vi dyker direkt in.
I HPC och AI Innovation Lab har vi byggt ut ett Rom-baserat kluster med 64 servrar som vi kallar Minerva. Förutom det homogena Minerva-klustret har vi några andra Rom CPU-prover som vi kunde utvärdera. Vår testbädd beskrivs i Tabell.1 och Tabell.2.
(Tabell.1 Rom CPU-modeller som utvärderats i denna studie)
Processor | Kärnor per sockel | Konfiguration | Basklockfrekvens | TDP |
---|---|---|---|---|
7702 | 64c | 4c per CCX | 2,0 GHz | 200 W |
7502 | 32c 32c | 4c per CCX | 2,5 GHz | 180 W |
7452 | 32c 32c | 4c per CCX | 2,35 GHz | 155 W |
7402 | 24c | 3c per CCX | 2,8 GHz | 180 W |
(Tabell.2 Testbädd)
Komponent | Detaljer |
---|---|
Server | PowerEdge C6525 |
Processor | Som visas i tabell.1 dubbla socklar |
Minne | 256 GB, 16 × 16 GB, 3 200 MT/s, DDR4 |
Interconnect | ConnectX-6 Mellanox Infini Band HDR100 |
Operativsystem | Red Hat Enterprise Linux 7.6 |
Kärna | 3.10.0.957.27.2.e17.x86_64 |
Disk | 240 GB SATA SSD M.2-modul |
Minnesbandbreddstester på Rome visas i figur 6, dessa tester kördes i NPS4-läge. Vi uppmätte ~270–300 GB/s minnesbandbredd på vår PowerEdge C6525 med dubbla socklar när vi använde alla kärnor i servern för de fyra processormodellerna som visas i tabellen.1. När endast en kärna används per CCX är systemets minnesbandbredd ~9–17 % högre än den som uppmäts med alla kärnor.
De flesta HPC-arbetsbelastningar prenumererar antingen helt på alla kärnor i systemet eller så körs HPC-center i läget för hög genomströmning med flera jobb på varje server. Därför är minnesbandbredden för alla kärnor den mer exakta representationen av systemets minnesbandbredd och minnesbandbredd-per-kärna-funktioner.
Bild 6 ritar också minnesbandbredden som uppmättes på den tidigare generationens EPYC Naples-plattform , som också hade stöd för åtta minneskanaler per socket men kördes med 2 667 MT/s. Rome-plattformen ger 5–19 % bättre total minnesbandbredd än Neapel, vilket främst beror på det snabbare minnet på 3 200 MT/s. Även med 64c per sockel kan Rome-systemet leverera upp till 2 GB/s/kärna.
Vid jämförelse av de olika NPS-konfigurationerna uppmättes ~13 % högre minnesbandbredd med NPS4 jämfört med NPS1 som visas i bild 7.
(Bild 6 NPS4 STREAM Triad-minnesbandbredd med dubbla socklar)
(Bild 7 : NPS1 jämfört med NPS2 jämfört med NPS 4 Minnesbandbredd)
Figur 8 visar InfiniBand-bandbredden med enkel kärna för enkelriktade och dubbelriktade tester. Testbädden använde HDR100 som kördes med 100 Gbit/s, och diagrammet visar den förväntade prestandan för linjehastighet för dessa tester.
Bild 8 InfiniBand-bandbredd (enkel kärna))
Bild 9 InfiniBand-meddelandefrekvens (alla kärnor))
Tester av meddelandefrekvensen utfördes sedan med alla kärnor på en sockel i de två servrar som testades. När föredragen IO är aktiverad i BIOS och ConnectX-6 HDR100-adaptern är konfigurerad som föredragen enhet är meddelandefrekvensen för alla kärnor betydligt högre än när föredragen IO inte är aktiverad, vilket visas i bild 9. Detta illustrerar vikten av det här BIOS-alternativet vid finjustering för HPC och särskilt för skalbarhet för program med flera noder.
Mikroarkitekturen i Rom kan pensionera 16 DP FLOP/cykel, dubbelt så mycket som i Neapel som var 8 FLOPS/cykel. Detta ger Rome 4x den teoretiska toppfloppen över Neapel, 2x från den förbättrade flyttalskapaciteten och 2x från dubbelt så många kärnor (64c mot 32c). Figur 10 visar de uppmätta HPL-resultaten för de fyra CPU-modellerna i Rom som vi testade, tillsammans med våra tidigare resultat från ett Neapel-baserat system. Rome HPL-effektiviteten anges som procentvärdet ovanför staplarna i diagrammet och är högre för de lägre TDP CPU-modellerna.
Testerna kördes i Power Determinism-läge och ett delta på ~5 % i prestanda uppmättes över 64 identiskt konfigurerade servrar. Resultatet här är alltså i det prestandaintervallet.
(Bild 10 HPL för en server i NPS4)
Nästa HPL-tester med flera noder utfördes och dessa resultat ritas i figur 11. HPL-effektiviteten för EPYC 7452 ligger kvar över 90 % vid en skala med 64 noder, men nedgången i effektivitet från 102 % ner till 97 % och tillbaka upp till 99 % behöver utvärderas ytterligare
(Bild 11 HPL med flera noder, dubbla socklar EPYC 7452 över HDR100 InfiniBand)
Inledande prestandastudier på Rom-baserade servrar visar förväntad prestanda för vår första uppsättning HPC-prestandatest. BIOS-finjustering är viktigt när du konfigurerar för bästa prestanda, och finjusteringsalternativ finns tillgängliga i vår BIOS HPC-arbetsbelastningsprofil som kan konfigureras på fabriken eller ställas in med hjälp av Dell EMC:s systemhanteringsverktyg.
HPC och AI Innovation Lab har ett nytt Rom-baserat PowerEdge-kluster med 64 servrar, Minerva. Håll utkik här för efterföljande bloggar som beskriver programprestandastudier på vårt nya Minerva-kluster.