메인 콘텐츠로 이동
  • 빠르고 간편하게 주문
  • 주문 보기 및 배송 상태 추적
  • 제품 목록을 생성 및 액세스

AMD EPYC – Prestandaanalys av STREAM, HPL, InfiniBand och WRF

요약: AMD EPYC – STREAM, HPL, InfiniBand och WRF på Dell EMC PowerEdge R7425

이 문서는 다음에 적용됩니다. 이 문서는 다음에 적용되지 않습니다. 이 문서는 특정 제품과 관련이 없습니다. 모든 제품 버전이 이 문서에 나와 있는 것은 아닙니다.

증상

Artikel skriven av Garima Kochhar, Deepthi Cherlopalle, Joshua Weage från HPC and AI Innovation Lab, September 2018

Sammanfattning

HPC and AI Innovation Lab har ett nytt kluster med 32 AMD EPYC-baserade system sammankopplade med Mellanox EDR InfiniBand. Som alltid genomför vi utvärderingar av prestandan på våra senaste kluster och vill dela med oss av resultaten. Den här bloggen tar upp resultaten för minnesbandbredd från STREAM, HPL, InfiniBand mikro-prestandatest för latens och bandbredd samt WRF-resultaten från prestandatestets datauppsättningar.

Vi är intresserade av verklighetens HPC-programprestanda på EPYC. Om du har datauppsättningar som du vill testa på EPYC kan du kontakta teamet för ditt Dell-konto för åtkomst till Innovation Lab.
 

AMD EPYC-arkitektur

AMD EPYC-processorer har stöd åtta för minneskanaler, upp till 16 dubbla inbyggda minnesmoduler (DIMM) per sockel, med två DIMM:er per kanal och upp till 32 kärnor per sockel. En plattform med AMD-processorer erbjuder dessutom upp till 128 PCI-E-banor för kringutrustning som GPU:er och NVMe-enheter.
Själva processorerna är multichipmoduler monterade från fyra matriser. Varje matris innefattar upp till arton Zen-kärnor, två DDR4-minneskanaler och 32 IO-banor. Zen-kärnorna i en matris är ordnade i två grupper om fyra, där varje grupp med fyra kärnor, kallade kärnkomplex, delar L3-cache. I en sockel är alla fyra matriser korsanslutna via en sammanhängande sammankoppling som kallas Infinity Fabric. Detta visas på bild 1.

SLN313856_sv__1GKimage001
Bild 1 – layout över EPYC-sockel. CCX är ett kärnkomplex med upp till fyra kärnor som delar L3-cache. M* är minneskanalerna, två kanaler hanteras av vardera matris. P* och G* är IO-banor. ∞ är Infinity Fabric.



I ett system med en enda sockel ger vardera matris upp till 32 PCI-E-banor med P*- och G* IO-banorna som visas på bild 1. Detta ger sockeln totalt 128 PCI-E-banor, som visas i bild 2. När en processor används i en konfiguration med två socklar (2S) används hälften av IO-banorna för vardera matris till att ansluta till en av matriserna på den andra sockeln med hjälp av G* IO-banorna som konfigurerats som Infinity Fabric. Detta ger sockeln med P* IO-banorna totalt 64 PCI-E-banor och därmed ändå 128 PCI-E-banor för plattformen. Detta visas i bild 3

SLN313856_sv__2GKimage002
Bild 2 – EPYC 1S PCI-E-banor



SLN313856_sv__3GKimage003
Bild 3 – EPYC 2S-layout



SLN313856_sv__4GKimage004
Bild 3 – EPYC 2S-layout

 

STREAM-prestandatest

Som ett första steg för att utvärdera EPYC mätte vi kapaciteten för minnesbandbredd för plattformen med hjälp av STREAM-prestandatestet. Dessa tester utfördes på en Dell EMC PowerEdge R7425-server med dubbla AMD EPYC 7601-processorer (32c, 2,2 GHz), 16*16 GB DIMM:er vid 2 400 MT/s, som körde Red Hat® Enterprise Linux® 7.5.

NUMA-presentationen (Non-Uniform Memory Access) för EPYC kan styras ett BIOS-alternativ som kallas ”Memory Interleaving” och mappas med hjälp av Linux-funktioner som numactl och lstopo.

Standardalternativet för Memory Interleaving är Memory Channel Interleaving. I det här läget överlagras de två kanalerna för vardera matris. Detta presenterar fyra NUMA-noder per sockel och åtta NUMA-noder för operativsystemet på ett 2S-system.

Memory Die Interleaving är ett alternativ där minnet i alla fyra matriser på en sockel, dvs. åtta minneskanaler, överlagras. Detta presenterar en NUMA-nod per sockel och två NUMA-noder på ett 2S-system.

Memory Socket Interleaving överlagrar minnet mellan båda socklar, vilket ger en NUMA-nod på en 2S-plattform. Detta bör vara detsamma som en inaktiverad NUMA.    

Genom att använda standardkonfigurationen för Memory Channel Interleaving – ha i åtanke att varje sockel har fyra matriser – skapar varje matris två minneskanaler och BIOS presenterar åtta NUMA-noder på en 2S-plattform. Exemplet på numactl-utgång i bild 4 visar de åtta NUMA-noderna på en 2S-plattform, en NUMA-nod per matris.

SLN313856_sv__5GKimage005
Bild 4 – numactl-utgång på 2S EPYC


Fysiskt finns fyra NUMA-avstånd på plattformen som markerats i bild 4: till själva NUMA-noden (avstånd 10 i rött), till de tre noderna som delar samma matris (avstånd 16 i blått), till noden på den andra sockeln som är direkt ansluten via en Infinity Fabric-länk (avstånd 22 i grönt), till de tre andra noderna på fjärrsockeln med åtkomst via två hopp med Infinity Fabric mellan de två socklarna samt inbyggd Infinity Fabric-länk (avstånd 28 i svart).

Vissa BIOS-implementeringar och -versioner kan ha den här fysiska layouten förenklad och endast presentera tre NUMA-avstånd för operativsystemet. Denna förenkling innefattar en maskering av skillnaden i avstånd mellan NUMA-nod 0 (exempelvis) och NUMA-nod 4,5,6,7 genom att presentera NUMA-noder 4,5,6,7 med samma avstånd från NUMA-nod 0. En sådan implementering visas i bild 5. NUMA-layout är ett valbart alternativ i nästa version av PowerEdge R7425 BIOS. Att förenkla NUMA-nodens avstånd ändrar inte den faktiska fysiska kärnlayouten, detta är främst för OS-schemaläggaren. För HPC- och MPI-jobb som är NUMA-medvetna bör de olika presentationerna inte vara av någon betydelse.

SLN313856_sv__6GKimage006
Bild 5 – numactl-utgång på 2S EPYC med förenklade NUMA-avstånd


Utöver de åtta NUMA-noderna på en plattform med två socklar visar också bild 4 och 5 det minne och de kärnor som associeras med vardera NUMA-nod. Varje NUMA-nod har 32 GB minne från två DIMM:er på 16 GB (16 DIMM:er på servern, åtta per sockel, 1 DIMM per kanal). Varje NUMA-nod innehåller åtta kärnor av de lokala matriserna. Kärnuppräkningen på Dell EMC-plattformen är en Round Robin och går först mellan alla NUMA-noder och fyller sedan varje NUMA-nod.

Dessutom kan lstopo-utgången användas för att tydligt visa vilka uppsättningar med fyra kärnor som utgör ett kärnkomplex. Dessa är de fyra kärnorna på en matris som delar L3-cache. Bild 6 visar exempelvis att NUMA-nod 0 har åtta kärnor och att NUMA-nodkärnorna 0, 16, 32, 48 delar L3-cache, medan kärnorna 8, 24, 40, 56 delar L3-cache.

SLN313856_sv__7GKimage007
Bild 6 – lstopo-utgång på 2S EPYC

SLN313856_sv__8GKimage008
Bild 7 – AMD EPYC-plattformens minnesbandbredd

Med hänsyn till NUMA-layoutinformationen visas STREAM Triad-prestandatestets resultat för minnesbandbredd i bild 7 med BIOS konfigurerad till Memory Channel Interleaving. Observera att de dubbelrankade minnesmodulerna på 16 GB 2 667 MT/s som används i den här testbädden körs vid 2 400 MT/s på EPYC. Den första uppsättningen staplar i bild 7 visar att minnets bandbredd på 2S-plattformen är 244 Gbit/s när alla kärnor används, och 255,5 Gbit/s när hälften av alla kärnor används. Den andra datapunkten är minnets bandbredd för en enda sockel, och är ungefär hälften av den fulla 2S-plattformen, som förväntat. Den tredje datapunkten mäter minnets bandbredd för en NUMA-nod, en enskild matris. Ha i åtanke att varje sockel har fyra matriser och bandbredden för en matris är ungefär ¼ av en sockel. Inom en matris finns två kärnkomplex, och om endast kärnorna i ett kärnkomplex används tillhandahålls ~30 Gbit/s. När kärnorna används mellan båda kärnkomplex på en matris kan matrisens fulla bandbredd uppnås, ~ 32 Gbit/s.

2S-plattformens minnesbandbredd är imponerande, 240–260 Gbit/s, och ett resultat av åtta minneskanaler per sockel på plattformen. Dessutom kan en enda kärna tillhandahålla ~24,5 Gbit/s av minnets bandbredd till det lokala minnet, vilket passar utmärkt för den enkeltrådade delen program.

När det kommer till påverkan av NUMA-layouten på fjärråtkomst till minnet visas i bild 8 den relativa minnesbandbredden när kärnorna har åtkomst till minnet som inte är i samma NUMA-domän. Åtkomst till minnet i samma sockel är ~30 % långsammare, åtkomst till minnet på den andra sockeln är ~65 % långsammare. Med STREAM Triad syns ingen mätbar påverkan på minnets bandbredd vid åtkomst till minnet på fjärrsockeln över ett hopp (nod 6, 1 Infinity Fabric mellan socklar) eller två hopp (nod 4, 5, 7 – 1 Infinity Fabric-hopp mellan socklar + 1 lokalt Infinity Fabric-hopp). För program som är känsliga för minnets bandbredd är bra minne lokalt viktigt för prestandan även i samma sockel.

SLN313856_sv__9GKimage009
Bild 8 – påverkan på fjärråtkomst till minnet
 

HPL-prestandatest

Därefter mätte vi datorkapaciteten för EPYC så som den mäts av HPL-prestandatestet. EPYC har stöd för AVX-instruktioner och en prestanda på 8 FLOP/cykel. På vår plattform använde vi Open MPI och BLIS-linjära algebrabibliotek för att köra HPL.

Den teoretiska prestandan i vårt testsystem (dubbla EPYC 7601-processorer) är 64 kärnor * 8 FLOP/cykel* 2,2 GHz klockfrekvens, vilket gav 1 126 GFLOPS. Vi mätte 1 133 GLOPS, vilket är en effektivitet på 100,6 %.

Vi körde också HPL på EPYC 7551 (32c, 2,0 GHz), EPYC 7351 (16c, 2,4 GHz) och EPYC 7351P (1S, 16c, 2,4GHz). I dessa tester mättes HPL-prestandan till 102–106 % av den teoretiska prestandan.

Effektiviteten är över 100 % eftersom EPYC kan bibehålla turbofrekvenser över basfrekvensen under HPL-testet.
 

InfiniBand-latens och bandbredd

Vi verifierade sedan resultaten för mikro-prestandatestet av InfiniBand-latens och -bandbredd mellan två servrar. Konfigurationen som användes för dessa två tester beskrivs i tabell 1. Latens- och bandbreddsresultat visas i bild 9 10.


  Tabell 1– InfiniBand-testbädd
Komponent Version
Processor Dell EMC Power Edge R7425
Minne Dubbel AMD EPYC 7601 32-kärnig processor vid 2,2 GHz
Systemprofil Strömförsörjning för processorn är konfigurerad till max, med inaktiverad eller aktiverad C-status, Turbo-aktiverad
Operativsystem Red Hat Enterprise Linux 7.5
Kärna 3.10.0-862.el7.x86_64
OFED 4.4–1.0.0
HCA-kort Mellanox Connect X-5
OSU-version 5.4.2
MPI hpcx-2.2.0 


SLN313856_sv__10GKimage010
Bild 9 – InfiniBand-latens, med switch

Kör kommandot: 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

Försiktighet vidtogs för att fästa MPI-processen till NUMA-noden som är närmst HCA. Den här informationen är tillgänglig i lstopo-utgången, och i vårt fall var det NUMA-nod 6. Latenstester kördes med både OpenMPI och HPC-X. Med OpenMPI- och MXM-acceleration uppmätte vi en lastens på 1,17µs, med OpenMPI och UCX uppmättes en latens på 1,10µs. Latensresultaten med HPC-X presenteras här.

På bild 9 är latensen på EPYC-processorer med aktiverade C-status 1,07µs och latensen för alla meddelandestorlekar är ~ 2 till 9 % bättre med aktiverade C-status i jämförelse med inaktiverade C-status. Aktiverade C-status möjliggör inaktiva kärnor i djupare c-status. Detta tillåter högre turbofrekvenser på de aktiva kärnorna, vilket resulterar i reducerad latens.

Resultaten för bandbredd visas i bild 10. Vi uppmätte 12,4 Gbit/s bandbredd i en riktning och 24,7 Gbit/s dubbelriktad bandbredd. Resultaten är som förväntat för EDR

SLN313856_sv__11GKimage011
Bild 10 – InfiniBand-bandbredd

Kör kommando: 

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

 

Tabell 2 – osu_mbw_mr-resultat – enkel NUMA-nod
Sockel NUMA-nod (NN) Testkonfiguration Antal kärnor i testet per server Bandbredd (Gbit/s)
0 0 server1 NN0 – server2 NN0 8 6,9
0 1 server1 NN1 – server2 NN1 8 6,8
0 2 server1 NN2 – server2 NN2 8 6,8
0 3 server1 NN3 – server2 NN3 8 6,8
1 4 server1 NN4 – server2 NN4 8 12,1
1 5 server1 NN5 – server2 NN5 8 12,2
1 6 (lokal till HCA) server1 NN6 – server2 NN6 8 12,3
1 7 server1 NN7 – server2 NN7 8 12,1

Kör kommando: 

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-layouten som beskrivs i bild 3 och 6 uppmärksammade oss på att kontrollera processens påverkan på bandbredden lokalt. För det här testet använde vi osu_mbw_mr-prestandatestet som mäter extra bandbredd med enkel väg mellan flera processpar. Syftet med det här testet är att avgöra uppnådd bandbredd och meddelandehastighet mellan individuella NUMA-noder med hjälp av alla åtta kärnor på NUMA-noden. Resultaten av testet visas i tabell 2. Testkonfigurationen använde prestandaprofil (inaktiverade C-status och aktiverad Turbo).

Resultaten visar att när processer som körs på NUMA-noden som är ansluten till InfiniBand HCA (NUMA-nod 6) är den extra bandbredden 12,3 Gbit/s. När processer körs på någon av de andra tre NUMA-noderna som finns i samma sockel som HCA (sockel 1) är den extra bandbredden ungefär samma, ~12,1 Gbit/s. När processer körs på NUMA-noderna i sockeln som är fjärrstyrd på HCA sänks den extra bandbredden till ~6,8 Gbit/s.

Nästa uppsättning resultat som visas i tabell 3 demonstrerar bandbredden med enkel väg mellan enskilda socklar. För detta test användes alla 32 kärnor som finns tillgängliga i sockeln. Vi mätte 5,1 Gbit/s vid körning på sockeln lokalt till HCA, och 2,4 Gbit/s vid fjärrkörning på sockeln till HCA. När vi använde alla 64 kärnor på våra testservrar uppmättes 3,0 Gbit/s när 64 processer per server kördes.

För att dubbelkontrollera det här senaste resultatet körde vi ett test med alla 8 NUMA-noder mellan båda socklarna då vardera NUMA-nod körde två processer, vilket gav totalt 16 processer per server. Med den här layouten uppmätte vi också 2,9 Gbit/s.

Dessa resultat visar att systemets topologi har påverkan på kommunikationsprestandan. Detta är intressant för fall där en viktig faktor är att det finns ett mönster med kommunikation mellan alla, med flera processer som kommunicerar mellan servrar. För andra program är det möjligt att den minskade bandbredden som uppmäts när flera processer körs på flera NUMA-domäner inte påverkar prestandan på programnivå.


  Tabell 3 – osu_mbw_br results – socklar och systemnivå
Sockel NUMA-nod Testkonfiguration Antal kärnor i testet per server Bandbredd (Gbit/s)
0
0
0
0
0
1
2
3
server1 Socket0 –
server2 Socket0
32 2,4
1
1
1
1
4
5
6 (lokal till HCA)
7
server1 Socket1 –
server2 Socket1
32 5.1

Kör kommando: 

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

 
Sockel NUMA-nod Testkonfiguration Antal kärnor i testet per server Bandbredd (Gbit/s)
0
0
0
0
1
1
1
1
1
2
3
4
5
6 (lokal till HCA)
7
8
server1 – server2 64 3,0

Kör kommando:

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

 
Sockel NUMA-nod Testkonfiguration Antal kärnor i testet per server Bandbredd (Gbit/s)
0 1 server1 – server2 2 2,9
0 2 2
0 3 2
0 4 2
1 5 2
1 6 (lokal till HCA) 2
1 7 2
1 8 2

Kör kommando: 

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-prestanda på klusternivå

Med vår InfiniBand-infrastruktursprestanda bekräftad gjordes nästa test för att snabbt köra HPL över klustret. Dessa tester utfördes på ett system med 16 noder med dubbla socklar EPYC 7601. Resultaten som visas i bild 11 visar förväntad HPL-skalbarhet över de 16 systemen.

SLN313856_sv__12GKimage012
Bild 11 – HPL över 16 servrar

 

WRF-prestanda på klusternivå

Slutligen körde vi WRF, ett väderprognosprogram. Testbädden var densamma som tidigare, ett system med 16 noder med dubbla socklar EPYC 7601. Dessutom genomförde vi några tester på ett mindre system med 4 noder med dubbla socklar EPYC 7551. Alla servrar hade 16 GB*16 RDIMM som körde på 2 400 MT/s och var sammankopplade med Mellanox EDR InfiniBand.

SLN313856_sv__13GKimage013
Bild 12 – WRF CONUS 12km, enskild nod

Vi använde WRF v3.8.1 och v3.9.1 och testade datauppsättningar på CONUS 12km och CONUS 2,5km. Vi kompilerade WRF och netcdf med Intel-kompilatorer och körde med Intel MPI. Vi har testat olika processer och layoutscheman, med alternativ för både dmpar- och dm+sm-konfiguration med OpenMP.

Vi arbetade med AMD för att utreda andra justeringsalternativ för WRF-kompilering.

Det fanns ingen uppmätt prestandaskillnad mellan WRF v3.8.1 och v3.9.1. En jämförelse mellan dmpar och dm+sm visar en rationell kombination av processer och paneler som resulterade i ungefär samma prestanda. Detta visas på bild 12.

SLN313856_sv__14GKimage014
Bild 13 – WRF CONUS 12 km, klustertester

SLN313856_sv__15GKimage015
Bild 14 – WRF CONUS 2,5km, klustertester

Tester på klusternivå genomfördes med WRV v3.8.1 och dmpar-konfigurationen med alla kärnor och 8 paneler per körning.

CONUS 12km är en mindre datauppsättning och konstant prestandanivå efter 8 noder, 512 kärnor på EPYC. Detta visas på bild 13. EPYC 7551 och EPYC 7601 är båda 32-kärniga processorer med 7601 basklockfrekvens och en turbofrekvens för alla kärnor på 10 % och 6 % snabbare än 7551 respektive. I WRF CONUS 12km-tester var prestandan för EPYC 7601-systemet 3 % snabbare än 7551 på 1-, 2- och 4-nodtesterna.

CONUS 2.5km är ett större prestandatest för datauppsättning och besläktat med 1 EPYC-systemet. Prestandan skalar upp till 8 noder (512 kärnor) och börjar sedan sänkas. Med CONUS 2.5km presterar EPYC 7601-systemet också 2–3 % snabbare än EPYC 7551 i 1-, 2- och 4 nodtesterna som visas i bild 14.

 

Sammanfattning och nästa steg

EPYC ger bra minnesbandbredd och kärndensitet per sockel. Från ett HPC-perspektiv förväntar vi oss att programmen kan använda minnesbandbredd och processorkärnor som finns tillgänglig för att dra mest nytta av EPYC-arkitekturen. EPYC har idag inte stöd för AVX512 eller AVX2 i en enskild cykel, så koder med hög vektor och som kan använda AVX2 eller AVX512 effektivt kanske inte är optimala för EPYC.

Alla fall som kan använda flera NVM-enheter kan också dra nytta av direktansluten NVMe, som är möjlig tack vare antalet PCI-E-banor på EPYC.

Nästa steg innefattar vidare prestandatester med andra HPC-program.





해당 제품

High Performance Computing Solution Resources, PowerEdge R7425
문서 속성
문서 번호: 000143393
문서 유형: Solution
마지막 수정 시간: 21 2월 2021
버전:  3
다른 Dell 사용자에게 질문에 대한 답변 찾기
지원 서비스
디바이스에 지원 서비스가 적용되는지 확인하십시오.