Artikkelin ovat kirjoittaneet HPC and AI Innovation Labin Garima Kochhar, Deepthi Cherlopalle ja Joshua Weage syyskuussa 2018.
Yhteenveto
HPC and AI Innovation Labilla on uusi klusteri, jossa 32 AMD EPYC -suoritinta käyttävää järjestelmää on liitetty toisiinsa Mellanox EDR InfiniBand -tekniikalla. Testaamme tavalliseen tapaan uusimman klusterimme suorituskykyä, ja halusimme jakaa testien tulokset. Artikkelissa esitellään mikrotason STREAM-, HPL- ja InfiniBand-suorituskykytestausten tulokset muistin kaistanleveydestä ja viiveestä sekä WRF-suorituskykytestauksen tietosarjoista saadut tulokset.
Olemme kiinnostuneita todellisten suurteholaskentasovellusten suorituskyvystä EPYC-suorittimissa. Jos haluat testata omia tietosarjojasi EPYC-suorittimissa, pyydä Innovation Labin käyttöoikeus ottamalla yhteys Dellin asiakastiimiin.
AMD EPYC -arkkitehtuuri
AMD EPYC -suorittimet tukevat kahdeksaa muistikanavaa, enintään 16 DIMM-moduulia kantaa kohden, kahta DIMM-moduulia kanavaa kohden ja enintään 32 ydintä kantaa kohden. Lisäksi AMD-suorittimia käyttävissä ympäristöissä on enintään 128 PCI-E-kaistaa oheislaitteille, kuten näytönohjaimille ja NVMe-asemille.
Itse suorittimet ovat monisirumoduuleja, jotka on rakennettu neljästä piisirusta. Kussakin sirussa on enintään kahdeksan Zen-ydintä, kaksi DDR4-muistikanavaa ja 32 IO-kaistaa. Sirun Zen-ytimet on jaettu kahteen neljän ytimen ydinryppääseen, jotka käyttävät yhteistä L3-välimuistia. Kaikki kannan neljä sirua on liitetty toisiinsa Infinity Fabric -linkillä. Tämä on esitetty kuvassa 1.
Kuva 1: EPYC-kannan asettelu. CCX on enintään neljän ytimen ydinrypäs, joka käyttää yhteistä L3-välimuistia. M* ovat muistikanavia, joita on kaksi kutakin sirua kohden. P* ja G* ovat IO-kaistoja. ∞ on Infinity Fabric -linkki.
Kussakin yksikantaisen (1S) järjestelmän sirussa on enintään 32 PCI-E-kaistaa, jotka käyttävät kuvassa 1 näkyviä P*- ja G*-IO-kaistoja. Kannassa on siis yhteensä 128 PCI-E-kaistaa, kuten kuvasta 2 näkyy. Kun suoritinta käytetään kaksikantaisessa (2S) kokoonpanossa, puolta kunkin sirun IO-kaistoista käytetään muodostamaan liitäntä johonkin toisen kannan siruun Infinity Fabric -linkeiksi määritettyjen G*-IO-kaistojen välityksellä. Kannan P*-IO-kaistat jäävät vapaiksi, jolloin kannassa on 64 vapaata PCI-E-kaistaa ja PCI-E-kaistoja on edelleen yhteensä 128. Tämä on esitetty kuvassa 3.
Kuva 2: 1S-EPYC-kokoonpanon PCI-E-kaistat
Kuva 3: 2S-EPYC-kokoonpanon asettelu
Kuva 3: 2S-EPYC-kokoonpanon asettelu
STREAM-suorituskykytestauksen tulokset
EPYC-suorittimen arviointi aloitettiin mittaamalla ympäristön muistin kaistanleveyteen liittyviä ominaisuuksia
STREAM-suorituskykytestauksen avulla. Testit suoritettiin Dell EMC
PowerEdge R7425 -palvelimessa, jossa oli kaksi AMD EPYC 7601 -suoritinta (32c, 2,2 GHz), 16 kpl 16 Gt:n DIMM-moduulia (2 400 Mt/s) ja Red Hat® Enterprise Linux® 7.5 -käyttöjärjestelmä.
EPYC-suorittimien NUMA (Non-Uniform Memory Access) -esitystapaa voidaan hallita BIOSin Memory Interleaving -asetuksella ja määrittää Linux-apuohjelmilla, kuten numactl ja lstopo.
Oletusarvoinen Memory Interleaving -asetus on Memory Channel Interleaving. Tässä tilassa kunkin sirun kaksi kanavaa limitetään. Tällöin kaksikantaisen järjestelmän käyttöjärjestelmälle esitetään kahdeksan NUMA-solmua, joita on neljä kantaa kohden.
Memory Die Interleaving on asetus, jossa limitetään kannan kaikkien neljän sirun muistit, ts. kahdeksan muistikanavaa. Tällöin kaksikantaisen järjestelmän käyttöjärjestelmälle esitetään kaksi NUMA-solmua, joita on yksi kantaa kohden.
Memory Socket Interleaving -asetus limittää kummankin kannan muistit, jolloin kaksikantaisessa ympäristössä on yksi NUMA-solmu. Tämä vastaa sitä, että NUMA poistettaisiin käytöstä.
Muistathan, että oletusarvoisessa Memory Channel Interleaving -määrityksessä kussakin kannassa on neljä sirua, kussakin sirussa on kaksi muistikanavaa ja BIOS esittää kaksikantaisen ympäristön käyttöjärjestelmälle kahdeksan NUMA-solmua. Kuvan 4 numactl-esimerkkituloksissa näkyy nämä kaksikantaisen järjestelmän kahdeksan NUMA-solmua, joita on yksi sirua kohden.
Kuva 4: 2S-EPYC-kokoonpanon numactl-tulokset
Ympäristössä on neljä fyysistä NUMA-etäisyyttä, kuten kuvasta 4 näkyy: etäisyys itse NUMA-solmuun (punaisella merkitty etäisyys 10), etäisyys saman sirun kolmeen muuhun solmuun (sinisellä merkitty etäisyys 16), etäisyys toisen kannan suoralla Infinity Fabric -linkillä liitettyyn solmuun (vihreällä merkitty etäisyys 22) sekä kahden siirräntävälin etäisyys toisen kannan kolmeen muuhun solmuun kantojen välisellä sekä toisen kannan sisäisellä Infinity Fabric -linkillä (mustalla merkitty etäisyys 28).
Jotkin BIOS-versiot saattavat yksinkertaistaa tätä fyysistä asettelua esittämällä käyttöjärjestelmälle ainoastaan kolme NUMA-etäisyyttä. Yksinkertaistaminen tapahtuu piilottamalla esimerkiksi NUMA-solmun 0 ja NUMA-solmujen 4, 5, 6 ja 7 väliset etäisyyserot esittämällä nämä etäisyydet samoina. Tällainen tilanne on esitetty kuvassa 5. NUMA-asettelusta tehdään muokattava asetus seuraavassa PowerEdge R7425 -BIOSissa. NUMA-solmujen etäisyyksien yksinkertaistaminen ei muuta ydinten fyysistä asettelua, vaan sen tarkoituksena on lähinnä helpottaa käyttöjärjestelmän ajoitustoimintoja. Eri esitystavoilla ei pitäisi olla merkitystä NUMA-tietoisille suurteholaskenta- ja MPI-tehtäville.
Kuva 5: 2S-EPYC-kokoonpanon numactl-tulokset, joissa NUMA-etäisyyksiä on yksinkertaistettu
Kuvissa 4 ja 5 näkyy kaksikantaisen ympäristön kahdeksan NUMA-solmun lisäksi myös kunkin NUMA-solmun muisti ja ytimet. Kussakin NUMA-solmussa on 32 Gt muistia, joka on jaettu kahteen 16 Gt:n DIMM-moduuliin (DIMM-moduuleita on 16 palvelinta kohden, kahdeksan kantaa kohden ja yksi kanavaa kohden). Kukin NUMA-solmu sisältää paikallisen sirun kahdeksan ydintä. Dell EMC -ympäristön ydinten luettelointi tapahtuu kiertovuorottelumenetelmällä niin, että ensin käydään läpi kaikki NUMA-solmut ja sitten ne täytetään yksi kerrallaan.
lstopo-tuloksista voi lisäksi katsoa tarkan tiedon siitä, mitkä neljä ydintä ydinryppääseen sisältyy. Nämä neljä sirun ydintä käyttävät yhteistä L3-välimuistia. Esimerkiksi kuvasta 6 näkyy, että NUMA-solmussa 0 on kahdeksan ydintä, joista ytimet 0, 16, 32 ja 48 jakavat yhden L3-välimuistin ja ytimet 8, 24, 40 ja 56 jakavat toisen.
Kuva 6: 2S-EPYC-kokoonpanon lstopo-tulokset
Kuva 7: AMD EPYC -ympäristön muistin kaistanleveys
Tämä NUMA-asettelu kannattaa pitää mielessä tarkasteltaessa kuvan 7 STREAM Triad -suorituskykytestauksen tuloksia muistin kaistanleveydestä, kun BIOS-asetuksena on Memory Channel Interleaving. Huomioithan, että testauksessa käytetyt 16 Gt:n Dual Rank -muistimoduulit, joiden nopeus on 2 667 Mt/s, toimivat EPYC-suorittimessa nopeudella 2 400 Mt/s. Kuvan 7 ensimmäisistä palkeista näkyy, että kaksikantaisen järjestelmän muistin kaistanleveys on 244 Gt/s, kun kaikki ytimet ovat käytössä, ja 255,5 Gt/s, kun puolet ytimistä on käytössä. Toinen arvopiste on yhden kannan muistin kaistanleveys, joka on odotetusti noin puolet kaksikantaisen ympäristön vastaavasta arvosta. Kolmas arvopiste mittaa NUMA-solmun yksittäisen sirun muistin kaistanleveyttä. Muistathan, että kussakin kannassa on neljä sirua, ja yksittäisen sirun kaistanleveys on noin ¼ kannan vastaavasta arvosta. Sirussa on kaksi ydinrypästä, ja kun vain toisen ydinryppään ytimet ovat käytössä, kaistanleveys on ~30 Gt/s. Kun molempien ydinryppäiden ytimet ovat käytössä, saavutetaan sirun täysi kaistanleveys ~32 Gt/s.
Kaksikantaisessa ympäristössä on vaikuttava 240–260 Gt/s:n muistin kaistanleveys, mikä johtuu siitä, että ympäristössä on kahdeksan muistikanavaa kantaa kohden. Lisäksi yksittäinen ydin voi tuottaa paikalliseen muistiin ~24,5 Gt/s:n muistin kaistanleveyden, mistä on paljon hyötyä yksisäikeisille sovelluksille.
NUMA-asettelun vaikutuksia muistin etäkäyttöön tarkastellaan kuvassa 8, jossa näkyy muistin suhteellinen kaistanleveys, kun ytimet käyttävät eri NUMA-toimialueella sijaitsevaa muistia. Samassa kannassa sijaitsevan muistin käyttö on ~30 % hitaampaa, ja toisessa kannassa sijaitsevan muistin käyttö on ~65 % hitaampaa. STREAM Triad -suorituskykytestauksessa ei näy merkittävää eroa muistin kaistanleveydessä sen perusteella, käytetäänkö toisen kannan muistia yhden siirräntävälin (solmu 6: yksi Infinity Fabric -siirräntäväli kantojen välillä) vai kahden siirräntävälin (solmut 4, 5 ja 7: yksi Infinity Fabric -siirräntäväli kantojen välillä ja yksi paikallinen Infinity Fabric -siirräntäväli) etäisyydellä. Muistin paikallisuus vaikuttaa merkittävästi suurta muistin kaistanleveyttä edellyttävien sovellusten suorituskykyyn jopa saman kannan sisällä.
Kuva 8: Muistin etäkäytön vaikutukset
HPL-suorituskykytestauksen tulokset
Seuraavaksi mittasimme EPYC-suorittimen laskentatehoa HPL-suorituskykytestauksen avulla. EPYC tukee AVX-käskyjä, ja sen suorituskyky on 8 FLOP/jakso. Suoritimme HPL:n käyttämällä Open MPI:tä ja
BLIS-lineaarialgebrakirjastoja.
Testijärjestelmämme (kaksi EPYC 7601 -suoritinta) teoreettinen suorituskyky on 64 ydintä * 8 FLOP/jakso * 2,2 GHz:n kellotaajuus, jolloin tuloksena on 1 126 GFLOPS. Mittaustuloksena oli 1 133 GFLOPS, joten tehokkuus on 100,6 %.
Suoritimme HPL:n myös EPYC 7551 (32c, 2,0 GHz)-, EPYC 7351 (16c, 2,4 GHz)- ja EPYC 7351P (1S, 16c, 2,4 GHz) -suorittimissa. Näissä testeissä HPL:n todellinen suorituskyky oli 102–106 % teoreettisesta suorituskyvystä.
Tehokkuus on yli 100 %, koska EPYC pystyy ylläpitämään perustaajuuttaan korkeampia turbotaajuuksia koko HPL-testin ajan.
InfiniBandin viive ja kaistanleveys
Seuraavaksi tarkistimme mikrotason InfiniBand-suorituskykytestauksen tulokset kahden palvelimen välisestä viiveestä ja kaistanleveydestä. Testeissä käytetty kokoonpano on esitetty taulukossa 1. Tulokset viiveestä ja kaistanleveydestä on esitetty kuvissa 9 ja 10.
Kuva 1: InfiniBand-testiympäristö
Osa |
Versio |
Suoritin |
Dell EMC Power Edge R7425 |
Muisti |
Kaksi AMD EPYC 7601 -32-ydinsuoritinta nopeudella 2,2 GHz |
Järjestelmän profiili |
CPU Power Management -asetuksena Maximum, C-tilat käytössä tai poissa käytöstä merkinnän mukaisesti, Turbo käytössä |
Käyttöjärjestelmä |
Red Hat Enterprise Linux 7.5 |
Ydin |
3.10.0-862.el7.x86_64 |
OFED |
4.4-1.0.0 |
HCA-kortti |
Mellanox Connect X-5 |
OSU-versio |
5.4.2 |
MPI |
hpcx-2.2.0 |
Kuva 9: InfiniBandin viive, kytkin käytössä
Suoritettu komento: 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
MPI-prosessi suoritettiin tarkoituksellisesti lähimpänä HCI-korttia olevassa NUMA-solmussa. Tämä tieto löytyy lstopo-tuloksista. Tässä tapauksessa se oli NUMA-solmu 6. Viivetestit suoritettiin sekä OpenMPI:ssä että HPC-X:ssä. OpenMPI:ssä viive oli 1,17 µs, kun käytössä oli MXM-kiihdytys, ja 1,10 µs, kun käytössä oli UCX. HPC-X:n tulokset viiveestä on esitetty edellä.
Kuvasta 9 näkyy, että viive EPYC-suorittimissa, joiden C-tilat ovat käytössä, on 1,07 µs. Kaikkien viestikokojen viive on ~2–9 % pienempi C-tilojen ollessa käytössä. Kun C-tilat ovat käytössä, käyttämättömät ytimet voivat olla syvemmissä C-tiloissa, minkä ansiosta aktiiviset ytimet voivat toimia korkeammilla turbotaajuuksilla. Se vähentää viivettä.
Tulokset kaistanleveydestä on esitetty kuvassa 10. Mittaustuloksena oli 12,4 Gt/s:n yksisuuntainen kaistanleveys ja 24,7 Gt/s:n kaksisuuntainen kaistanleveys. Tulokset vastaavat EDR:ltä odotettuja tuloksia.
Kuva 10: InfiniBandin kaistanleveys
Suoritettu komento:
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
Taulukko 2: osu_mbw_mr-tulokset yksittäisissä NUMA-solmuissa
Kanta |
NUMA-solmu (NS) |
Testikokoonpano |
Testattujen ydinten lukumäärä palvelinta kohden |
Kaistanleveys (Gt/s) |
0 |
0 |
palvelin1 NS0 - palvelin2 NS0 |
8 |
6,9 |
0 |
1 |
palvelin1 NS1 - palvelin2 NS1 |
8 |
6,8 |
0 |
2 |
palvelin1 NS2 - palvelin2 NS2 |
8 |
6,8 |
0 |
3 |
palvelin1 NS3 - palvelin2 NS3 |
8 |
6,8 |
1 |
4 |
palvelin1 NS4 - palvelin2 NS4 |
8 |
12,1 |
1 |
5 |
palvelin1 NS5 - palvelin2 NS5 |
8 |
12,2 |
1 |
6 (HCA-kortin paikallinen solmu) |
palvelin1 NS6 - palvelin2 NS6 |
8 |
12,3 |
1 |
7 |
palvelin1 NS7 - palvelin2 NS7 |
8 |
12,1 |
Suoritettu komento:
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
Kuvissa 3 ja 6 kuvattu NUMA-asettelu sai meidät tarkistamaan prosessien paikallisuuden vaikutukset kaistanleveyteen. Käytimme testiin osu_mbw_mr-suorituskykytestausta, joka mittaa yksisuuntaisen kokonaiskaistanleveyden useiden prosessien välillä. Testin tarkoituksena oli selvittää yksittäisten NUMA-solmujen välinen todellinen kaistanleveys ja viestinopeus, kun kaikki NUMA-solmun kahdeksan ydintä olivat käytössä. Testin tulokset on esitetty taulukossa 2. Testikokoonpanossa käytettiin Performance-profiilia (C-tilat poissa käytöstä ja Turbo käytössä).
Tulokset osoittavat, että kun prosesseja suoritetaan InfiniBand-HCA-korttiin liitetyssä NUMA-solmussa (NUMA-solmu 6), kokonaiskaistanleveys on 12,3 Gt/s. Kun prosesseja suoritetaan kolmessa muussa NUMA-solmussa, jotka ovat samassa kannassa kuin HCA-kortti (kanta 1), kokonaiskaistanleveys on lähes sama eli ~12,1 Gt/s. Kun prosesseja suoritetaan NUMA-solmuissa, jotka ovat eri kannassa kuin HCA-kortti, kokonaiskaistanleveys on ainoastaan ~6,8 Gt/s.
Taulukossa 3 on esitetty seuraavat tulokset, jotka havainnollistavat yksisuuntaista kaistanleveyttä eri kantojen välillä. Testissä käytettiin kaikkia kannan 32 ydintä. Kun prosesseja suoritettiin samassa kannassa kuin HCA-kortti, mittaustuloksena oli 5,1 Gt/s, ja kun niitä suoritettiin eri kannassa, tuloksena oli 2,4 Gt/s. Kun käytimme kaikkia testipalvelintemme 64 ydintä niin, että kussakin palvelimessa suoritettiin 64 prosessia, mittaustuloksena oli 3,0 Gt/s.
Vahvistimme tuloksen suorittamalla testin, jossa käytimme kaikkia kummankin kannan kahdeksaa NUMA-solmua niin, että kussakin NUMA-solmussa suoritettiin kaksi prosessia, jolloin prosesseja oli yhteensä 16 palvelinta kohden. Tässä asettelussa mittaustuloksena oli 2,9 Gt/s.
Tulokset osoittavat, että järjestelmän topologia vaikuttaa viestinnän tehokkuuteen. Tästä tiedosta on hyötyä tilanteissa, joissa on oleellista käyttää kaikilta-kaikille-tyylistä viestintää, jossa useat prosessit viestivät eri palvelinten kesken. Muunlaisissa sovelluksissa pienempi kaistanleveys, joka seuraa prosessien suorittamisesta useilla NUMA-toimialueilla, ei välttämättä vaikuta merkittävästi sovelluksen suorituskykyyn.
Taulukko 3: osu_mbw_br-tulokset kanta- ja järjestelmätasolla
Kanta |
NUMA-solmu |
Testikokoonpano |
Testattujen ydinten lukumäärä palvelinta kohden |
Kaistanleveys (Gt/s) |
0 0 0 0 |
0 1 2 3 |
palvelin1 kanta0 - palvelin2 kanta0 |
32 |
2,4 |
1 1 1 1 |
4 5 6 (HCA-kortin paikallinen solmu) 7 |
palvelin1 kanta1 - palvelin2 kanta1 |
32 |
5,1 |
Suoritettu komento:
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
Kanta |
NUMA-solmu |
Testikokoonpano |
Testattujen ydinten lukumäärä palvelinta kohden |
Kaistanleveys (Gt/s) |
0 0 0 0 1 1 1 1 |
1 2 3 4 5 6 (HCA-kortin paikallinen solmu) 7 8 |
palvelin1 - palvelin2 |
64 |
3,0 |
Suoritettu komento:
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
Kanta |
NUMA-solmu |
Testikokoonpano |
Testattujen ydinten lukumäärä palvelinta kohden |
Kaistanleveys (Gt/s) |
0 |
1 |
palvelin1 - palvelin2 |
2 |
2,9 |
0 |
2 |
2 |
0 |
3 |
2 |
0 |
4 |
2 |
1 |
5 |
2 |
1 |
6 (HCA-kortin paikallinen solmu) |
2 |
1 |
7 |
2 |
1 |
8 |
2 |
Suoritettu komento:
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-suorituskykytestauksen klusteritason tulokset
InfiniBandin suorituskyvyn vahvistamisen jälkeen suoritimme HPL-suorituskykytestauksen koko klusterissa. Testit suoritettiin 16 solmun järjestelmässä, jossa oli kaksikantainen EPYC 7601 -kokoonpano. Kuvassa 11 esitetyt tulokset osoittavat, että HPL skaalautuu odotetusti 16 järjestelmään.
Kuva 11: HPL 16 palvelimessa
WRF-suorituskykytestauksen klusteritason tulokset
Viimeiseksi suoritimme WRF:n, joka on sääennustesovellus. Testiympäristö oli sama kuin aiemmin: 16 solmun järjestelmä, jossa oli kaksikantainen EPYC 7601 -kokoonpano. Lisäksi suoritimme joitakin testejä myös pienemmässä neljän solmun järjestelmässä, jossa oli kaksikantainen EPYC 7551 -kokoonpano. Kaikissa palvelimissa oli 16 kpl 16 Gt:n RDIMM-moduulia, joiden nopeus oli 2 400 Mt/s, ja palvelimet oli liitetty toisiinsa Mellanox EDR InfiniBand -tekniikalla.
Kuva 12: WRF CONUS 12 km, yksi solmu
Käytimme WRF-versioita 3.8.1 ja 3.9.1, joissa testasimme CONUS 12 km- ja CONUS 2,5 km -tietojoukkoja. Käänsimme WRF:n ja netcdf:n Intelin kääntäjillä ja suoritimme ne Intel MPI:ssä. Kokeilimme erilaisia prosessi- ja järjestämisvaihtoehtoja käyttämällä OpenMP:ssä sekä dmpar- että dm+sm-määritysasetusta.
Selvitämme parhaillaan AMD:n kanssa muita WRF:n kääntäjän säätövaihtoehtoja.
WRF 3.8.1- ja 3.9.1-versioiden välisessä suorituskyvyssä ei havaittu eroa. Kun prosessit ja ruudut yhdistettiin harkiten, dmpar- ja dm+sm-asetukset johtivat suunnilleen samaan suorituskykyyn. Tämä on esitetty kuvassa 12.
Kuva 13: WRF CONUS 12km, klusteritestit
Kuva 14: WRF CONUS 2,5 km, klusteritestit
Klusteritason testit suoritettiin WRF 3.8.1:ssä käyttämällä dmpar-määritystä, kaikkia ytimiä ja kahdeksaa ruutua suoritusta kohden.
CONUS 12 km on pienempi tietosarja, ja EPYC-suorittimien suorituskyky ei enää parantunut kahdeksan solmun ja 512 ytimen jälkeen. Tämä on esitetty kuvassa 13. EPYC 7551 ja EPYC 7601 ovat kumpikin 32-ydinsuorittimia, mutta EPYC 7601:n peruskellotaajuus on 10 % nopeampi ja kaikkia ytimiä hyödyntävä turbotaajuus on 6 % nopeampi kuin EPYC 7551:n. WRF CONUS 12 km -testeissä havaittiin, että EPYC 7601 -järjestelmä oli 3 % nopeampi kuin EPYC 7551, kun käytössä oli 1, 2 tai 4 solmua.
CONUS 2,5 km on suurempi suorituskykytestauksen tietosarja, ja EPYC-järjestelmän suorituskyky skaalautuu hyvin kahdeksaan solmuun (512 ytimeen), minkä jälkeen se alkaa laskea. Myös WRF CONUS 2,5 km -testeissä havaittiin, että EPYC 7601 -järjestelmä oli 2–3 % nopeampi kuin EPYC 7551, kun käytössä oli 1, 2 tai 4 solmua. Tämä on esitetty kuvassa 14.
Johtopäätös ja jatkosuunnitelmat
EPYC-suoritin tarjoaa hyvän muistin kaistanleveyden ja ydinten tiheyden kantaa kohden. Suurteholaskennan näkökulmasta EPYC-arkkitehtuurista hyötyvät eniten sovellukset, jotka pystyvät hyödyntämään tehokkaasti sen muistin kaistanleveyttä ja ydinten lukumäärää. EPYC ei tällä hetkellä tue AVX512:ta tai yhdessä jaksossa suoritettavaa AVX2:ta, joten erittäin vektoroidut ja AVX2:ta tai AVX512:ta tehokkaasti hyödyntävät koodit eivät välttämättä ole ihanteellisia EPYC-suorittimille.
EPYC-suorittimista voi olla hyötyä myös tilanteissa, joissa tarvitaan useita NVMe-asemia, sillä EPYC-suorittimien lukuisien PCI-E-kaistojen ansiosta ne voidaan liittää suoraan suorittimeen.
Seuraavaksi suoritamme lisää suorituskykytestausta uusien suurteholaskentasovellusten avulla.