Artikel skriven av Varun Bawa, Savitha Pareek och Ashish K Singh från HPC och AI Innovation Lab i april 2019
I och med lanseringen av andra generationens processorer i den skalbara processorserien Intel Xeon® (med arkitekturkodnamnet "Cascade Lake") har Dell EMC uppdaterat 14:e generationens PowerEdge-servrar för att dra nytta av det ökade antalet kärnor och högre minneshastigheter, vilket gynnar HPC-program.
I den här bloggen presenteras de första resultaten och diskuteras effekten av de olika BIOS-justeringsalternativen som finns på Dell EMC PowerEdge C6420 med de senaste Intel Xeon® Cascade Lake-processorerna för vissa HPC-prestandatest och program. Nedan följer en kort beskrivning av Cascade Lake-processorn, BIOS-alternativ och HPC-program som används i denna studie.
Cascade Lake är Intels efterträdare till Skylake. Cascade Lake-processorn stöder upp till 28 kärnor, sex DDR4-minneskanaler med hastigheter på upp till 2 933 MT/s. I likhet med Skylake stöder Cascade Lake ytterligare vektoriseringskraft med AVX512-instruktionsuppsättningen som tillåter 32 DP FLOP/cykel. Cascade Lake introducerar
VNNI (Vector Neural Network Instructions) som ökar prestandan för AI- och DL-arbetsbelastningar som bildklassificering, taligenkänning, språköversättning, objektidentifiering med mera. VNNI har även stöd för 8-bitarsinstruktion för att accelerera
inferensprestanda.
Cascade Lake innehåller
maskinvaruåtgärder för vissa
sårbarheter i sidokanaler. Det förväntas att detta kan förbättra prestanda för lagringsarbetsbelastningar. Håll utkik efter framtida studier från
Innovation Lab.
Eftersom Skylake och Cascade Lake är sockelkompatibla, är processorjusteringsrattarna som visas i system-BIOS likartade över dessa processorgenerationer. Följande BIOS-justeringsalternativ undersöktes i denna studie, liknande arbete som
tidigare publicerats på Skylake.
Processorinställningar:
- Intilliggande förhämtning av cachelinje: Den intilliggande Cache-Line Prefetch-mekanismen tillåter automatisk förhämtning av hårdvara, den fungerar utan att programmeraren behöver ingripa. När den är aktiverad rymmer den två 64-bytes cacherader i en 128-bytes-sektor, oavsett om den extra cache-linjen har begärts eller inte.
- Funktion för förhämtning av programvara: Det undviker stoppet genom att läsa in data i cacheminnet innan de behövs. Exempel: Om du vill förhämta data från huvudminnet till L2-cachen långt före användningen med en L2-förhämtningsinstruktion och sedan förhämta data från L2-cachen till L1-cachen strax före användningen med en L1-förhämtningsinstruktion. När detta är aktiverat kommer processorn att förinstallera en extra cacherad för varje minnesbegäran.
- SNC (Sub-NUMA-kluster): Att aktivera SNC liknar att dela upp en enskild socket i två NUMA-domäner, var och en med hälften av de fysiska kärnorna och hälften av sockelns minne. Om detta låter bekant liknar det Cluster-on-Die-alternativet som fanns i Intel Xeon E5-2600 v3- och v4-processorer. SNC implementeras på ett annat sätt än COD, och dessa ändringar förbättrar fjärrsocketåtkomsten i Cascade Lake jämfört med tidigare generationer, som använde Cluster-on-Die-alternativet. På operativsystemnivå visar en server med två socklar med SNC aktiverat fyra NUMA-domäner. Två av domänerna kommer att vara närmare varandra (på samma uttag), och de andra två kommer att vara ett större avstånd bort, över UPI:n till fjärruttaget. Du kan se detta med hjälp av operativsystemverktyg som: numactl –H och illustreras i figur 1.
Bild 1: Layout för NUMA-noder
Systemprofiler:
Systemprofilerna är ett metaalternativ som i sin tur ställer in flera prestanda- och strömhanteringsfokuserade BIOS-alternativ som
Turbo-läge,
Cstate, C1E,
Pstate-hantering, Uncore-frekvens, etc. De olika systemprofilerna som jämförs i denna studie inkluderar:
- Prestanda
- PerformancePerWattDAPC
- PrestandaPerWattOS
Vi använde två HPC-prestandatest och två HPC-program för att förstå vilken inverkan dessa BIOS-alternativ har på Cascade Lake-prestanda. Konfigurationerna av server- och HPC-program som används för denna studie beskrivs i Tabell 1 och Tabell 2.
Program |
Domän |
Version |
Riktmärke |
Högpresterande Linpack (HPL) |
Beräkningslösa ett tätt system av linjära ekvationer |
Från Intel MKL – 2019 Update 1 |
Problemstorlek 90 %, 92 % och 94 % av det totala minnet |
Stream |
Minnesbandbredd |
5.4 |
Triad |
WRF |
Väderforskning och prognoser |
3.9.1 |
Conus 2.5km |
ANSYS® flytande® |
Strömningsdynamik |
19.2 |
Ice_2m, Combustor_12m, Aircraft_wing_14m, Exhaust_System_33m |
Tabell 1: Applikationer och prestandatest
Komponenter |
Detaljer |
Server |
PowerEdge-server C6420 |
Processor |
Intel® Xeon® Gold 6230 CPU @ 2,1 GHz, 20 kärnor |
Minne |
192 GB – 12 × 16 GB 2 933 MT/s DDR4 |
Operativsystem |
Red Hat Enterprise Linux 7.6Red Hat Enterprise Linux 7.6 |
Kärna |
3.10.0-957.el7.x86_64 |
Kompilator |
Intel Parallel Studio-kluster Edition_2019_Update_1 |
Tabell 2 Serverkonfiguration
Alla resultat som visas här är baserade på tester med en server. Prestanda på klusternivå begränsas av prestanda på enskild server. Följande mätvärden användes för att jämföra prestanda:
- Stream – Triad-poäng enligt strömriktmärket.
- HPL – GFLOP/sekund.
- Fluent – Lösningsbetyg enligt Fluent.
- WRF – Genomsnittligt tidssteg beräknat under de senaste 719 intervallen för Conus 2,5 km
Prestandatester och programresultat
Förkortningar för grafnotation:
Systemprofiler:
Prestanda – Performance OS – PerformancePerWattOS DAPC – PerformancePerWattDAPC
Sub-NUMA-klustring: SNC = 0(SNC = Inaktiverad): SNC = 1(SNC = Aktiverad: Formaterad som randig i diagram)
SW – Programvara för förhämtning: SW = 0 (SW = Inaktiverad): SW = 1 (SW = aktiverad)
Bild 2: Högpresterande Linpack
I bild 2 jämförs resultatet av HPL med Problemstorlek = 90 %, dvs. N = 144476 för olika BIOS-alternativ. Diagrammet visar absoluta gigaflops som erhålls när HPL körs i olika BIOS-konfigurationer. Dessa erhållna gigaflops ritas på y-axeln, högre är bättre.
Nedan följer observationerna från diagrammet:
- Mindre än 1 % skillnad i HPL-prestanda på grund av förhämtning av programvara.
- Ingen större effekt av SNC på HPL-prestanda (0,5 % bättre med SNC=inaktiverad).
- Prestandasystemprofilen är upp till 6 % bättre jämfört med OS och DAPC.
Bild 3: Stream
På bild 3 jämförs resultatet av STREAM i de olika BIOS-konfigurationerna.
Diagrammet visar minnesbandbredden i gigabyte per sekund som erhålls när du kör STREAM Triad. Den erhållna minnesbandbredden (GB/sek) ritas på y-axeln, högre är bättre. BIOS-konfigurationen som är kopplad till specifika värden på gigabyte per sekund ritas på x-axeln.
Nedan följer observationerna från diagrammet:
- Upp till 3 % bättre minnesbandbredd med SNC=aktiverat.
- Inte mycket avvikelse i prestanda på grund av förhämtning av programvara på STREAM-minnesbandbredd.
- Inga avvikelser mellan systemprofiler.
Bild 4: Minnesbandbredd – SNC
Bild 4 ritar Stream Triad-minnesbandbreddspoängen i en sådan konfiguration. Den fulla systemminnesbandbredden är ~220 GB/s. När 20 kärnor på en lokal sockel får åtkomst till lokalt minne är minnesbandbredden ~109 GB/s – hälften av systemets fulla bandbredd. Hälften av detta, ~56 GB/s, är minnesbandbredden för 10 trådar på samma NUMA-nod som har åtkomst till deras lokala minne och på en NUMA-nod åtkomstminne som tillhör den andra NUMA-noden på samma sockel. Minnesbandbredden minskar med 42 % till ~33 GB/s när trådarna får åtkomst till fjärrminnet via QPI-länken på fjärrsocketen. Detta säger oss att det finns betydande bandbreddsförsämring i SNC-läge när data inte är lokala.
Bild 5: WRF
I figur 5 jämförs resultatet av WRF över olika BIOS-alternativ, datauppsättningen som används är conus2.5km med standardfilen "namelist.input".
Diagrammet visar det absoluta genomsnittliga tidssteget i sekunder som erhålls när du kör WRF-conus2.5km-datauppsättningen på olika BIOS-konfigurationer. Det genomsnittliga tidssteget som erhålls ritas på y-axeln, lägre är bättre. De relativa profilerna som är kopplade till specifika värden för genomsnittligt tidssteg ritas på x-axeln.
Nedan följer observationerna från diagrammet:
- 2 % bättre prestanda med SNC=Enabled.
- Ingen prestandaskillnad för förhämtning av mjukvara aktiverad jämfört med inaktiverad.
- Prestandaprofilen är 1 % bättre än PerformancePerWattDAPC-profilerna
Bild 6 till bild 9 ritar Problemlösarklassificering som erhållits när du kör Fluent- med Ice_2m, Combustor_12m, Aircraft_Wing_14m respektive Exhaust_System_33m datauppsättning. Det erhållna Problemlösaromdömet ritas på y-axeln, högre är bättre. De relativa profilerna som är kopplade till specifika värden för genomsnittlig tid ritas på x-axeln.
Nedan följer de övergripande iakttagelserna från diagrammen ovan:
- Upp till 4 % bättre prestanda med SNC=Enabled.
- Ingen effekt av förhämtning av programvara på prestanda.
- Upp till 2 % bättre prestanda med prestandaprofil jämfört med DAPC- och OS-profiler.
Slutsats
I den här studien utvärderade vi effekten av olika BIOS-justeringsalternativ på prestanda vid användning av Intel Xeon Gold 6230-processorn. Genom att observera prestandan hos olika BIOS-alternativ i olika prestandatest och tillämpningar dras följande slutsats:
- Förhämtning av programvara har ingen betydande prestandapåverkan på de datauppsättningar som testades. Därför rekommenderar vi att Software Prefetcher förblir som standard, dvs. Aktiverad
- Med SNC=aktiverad 2–4 % prestandaökning i Fluent och Stream, ca 1 % i WRF jämfört med SNC = Inaktiverad. Därför rekommenderar vi att SNC ska aktiveras för att uppnå bättre prestanda.
- Prestandaprofilen är 2–4 % bättre än PerformancePerWattDAPC och PerformancePerWattOS. Därför rekommenderar vi prestandaprofilen för HPC.
Vi rekommenderar att hypertrådning inaktiveras för HPC-kluster för generell användning. Beroende på vilka program som används bör fördelarna med den här funktionen testas och aktiveras efter behov.
Något som inte diskuteras i denna studie är en minnes-RAS med namnet Adaptive Double DRAM Device Correction (ADDDC) som är tillgänglig när ett system är konfigurerat med minne som har en x4 DRAM-organisation (32 GB, 64 GB DIMM-moduler). ADDDC är inte tillgängligt när ett system har x8-baserade DIMM-moduler (8 GB, 16 GB) och är oväsentligt i dessa konfigurationer. För HPC-arbetsbelastningar rekommenderar vi att ADDDC ställs in på inaktiverat när det är tillgängligt som ett justerbart alternativ.