HPC-alkalmazások méretezése
Figyelemfelhívás
Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Fontolja meg a használatát, és ennek megfelelően tervezze meg. További információ: CentOS End Of Life útmutató.
A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek ✔️ Windows rendszerű virtuális gépek Rugalmas méretezési ✔️ csoportok ✔️ Egységes méretezési csoportok
Az Azure-beli HPC-alkalmazások optimális vertikális felskálázási és vertikális felskálázási teljesítménye teljesítmény-finomhangolási és optimalizálási kísérleteket igényel az adott számítási feladathoz. Ez a szakasz és a virtuálisgép-sorozatra vonatkozó oldalak általános útmutatást nyújtanak az alkalmazások skálázásához.
Alkalmazásbeállítás
Az azurehpc-adattár számos példát tartalmaz a következőre:
- Alkalmazások optimális beállítása és futtatása.
- Fájlrendszerek és fürtök konfigurálása.
- Oktatóanyagok a gyakori alkalmazás-munkafolyamatok egyszerű használatbavételéről.
Az MPI optimális méretezése
A következő javaslatok az optimális alkalmazásskálázási hatékonyságra, teljesítményre és konzisztenciára vonatkoznak:
Kisebb méretű feladatokhoz (< 256 K-os kapcsolatokhoz) használja a következőt:
UCX_TLS=rc,sm
Nagyobb méretű feladatokhoz (> 256 K-os kapcsolatokhoz) használja a következőt:
UCX_TLS=dc,sm
Az MPI-feladathoz tartozó kapcsolatok számának kiszámításához használja a következőt:
Max Connections = (processes per node) x (number of nodes per job) x (number of nodes per job)
Adaptív útválasztás
Az adaptív útválasztás (AR) lehetővé teszi, hogy a Végponti észlelés és reagálás és HDR InfiniBand rendszert futtató Azure-beli virtuális gépek automatikusan észleljék és elkerüljék a hálózati torlódást az optimális hálózati útvonalak dinamikus kiválasztásával. Ennek eredményeképpen az AR jobb késést és sávszélességet kínál az InfiniBand hálózaton, ami viszont nagyobb teljesítményt és skálázási hatékonyságot eredményez. További információ: TechCommunity cikk.
Folyamat rögzítése
- Folyamatok rögzítése magokra szekvenciális rögzítési megközelítéssel (szemben az automatikus kiegyensúlyozási megközelítéssel).
- A Numa/Core/HwThread kötése jobb, mint az alapértelmezett kötés.
- Hibrid párhuzamos alkalmazások (OpenMP+MPI) esetén használjon négy szálat és egy MPI-rangsort [CCX](HB-sorozatú virtuális gépek áttekintése, beleértve a CCX-ekről szóló információkat) a HB és HBv2 virtuálisgép-méreteken.
- Tiszta MPI-alkalmazások esetén kísérletezzen CCX-enként egy-négy MPI rangsorolással a HB és HBv2 virtuálisgép-méretek optimális teljesítménye érdekében.
- Egyes, a memória sávszélességére érzékeny alkalmazások kihasználhatják, hogy CCX-enként kevesebb magot használnak. Ezekben az alkalmazásokban a CCX-enként három vagy két mag használata csökkentheti a memória sávszélességét, és nagyobb valós teljesítményt vagy konzisztens méretezhetőséget eredményezhet. Az "Allreduce" MPI-nek különösen előnyös lehet ez a megközelítés.
- Nagyobb léptékű futtatások esetén ajánlott UD vagy hibrid RC+UD átvitelt használni. Számos MPI-kódtár/futtatókörnyezeti kódtár használja ezeket az átviteleket belsőleg (például UCX vagy MVAPICH2). Nagy léptékű futtatások esetén ellenőrizze az átviteli konfigurációkat.
Alkalmazások összeállítása
Kattintson ide a kibontásához
Bár nem szükséges, a megfelelő optimalizálási jelzőkkel rendelkező alkalmazások összeállítása biztosítja a legjobb vertikális felskálázási teljesítményt HB- és HC-sorozatú virtuális gépeken.
AMD – A C/C++ fordító optimalizálása
Az AMD Optimalizáló C/C++ Fordító (AOCC) fordító rendszere magas szintű fejlett optimalizálásokat, többszálú optimalizálásokat és processzortámogatást kínál, beleértve a globális optimalizálást, a vektorizálást, az eljárásközi elemzéseket, a hurokátalakításokat és a kódgenerálást. Az AOCC fordító bináris fájljai a GNU C Library (glibc) 2.17-es vagy újabb verzióját futtató Linux-rendszerekhez használhatók. A fordítócsomag egy C/C++ fordítóból (clang), egy Fortran fordítóból (FLANG) és egy Fortran-előtérből áll Clang (Dragon Egg).
Clang
A Clang egy C, C++ és Objective-C fordító, amely az előfeldolgozást, az elemzést, az optimalizálást, a kódgenerálást, az összeállítást és a csatolást kezeli.
A Clang támogatja a jelzőt az -march=znver1
AMD Zen-alapú x86-architektúrájának legjobb kódgenerálásához és hangolásához.
FLANG
A FLANG-fordító az AOCC-csomag (2018. áprilisban hozzáadott) legújabb része, és jelenleg előzetes verzióban érhető el a fejlesztők számára a letöltés és a tesztelés. A Fortran 2008 alapján az AMD kibővíti a FLANG GitHub-verzióját. A FLANG fordító támogatja az összes Clang-fordítói lehetőséget és a FLANG-specifikus fordítóbeállítások egyéb számát.
DragonEgg
A DragonEgg egy gcc beépülő modul, amely lecseréli a GCC optimalizálóit és kódgenerátorait az LLVM-projektből. Az AOCC-hez tartozó DragonEgg a gcc-4.8.x verzióval működik, x86-32/x86-64-célokra tesztelték, és sikeresen használták különböző Linux-platformokon.
A GFortran az előfeldolgozásért, elemzésért és szemantikai elemzésért felelős Fortran-programok tényleges előtere, amely létrehozza a GCC GIMPLE köztes reprezentációt (IR). A DragonEgg egy GNU beépülő modul, amely a GFortran fordítási folyamatához csatlakozik. Implementálja a GNU beépülő modul API-t. A beépülő modul architektúrájával a DragonEgg lesz a fordítóillesztő, ami a fordítás különböző fázisait vezeti. A letöltési és telepítési utasítások követését követően a Dragon Egg a következő használatával hívható meg:
gfortran [gFortran flags]
-fplugin=/path/AOCC-1.2-Compiler/AOCC-1.2-
FortranPlugin/dragonegg.so [plugin optimization flags]
-c xyz.f90 $ clang -O3 -lgfortran -o xyz xyz.o $./xyz
PGI-fordító
A PGI Community Edition 17 az AMD EPYC-vel való együttműködésről megerősítést nyert. A STREAM egy PGI által lefordított verziója biztosítja a platform teljes memória-sávszélességét. Az újabb Community Edition 18.10 -nek (2018. nov.) szintén jól kell működnie. Ezzel a CLI-paranccsal fordíthat az Intel Fordítóval:
pgcc $(OPTIMIZATIONS_PGI) $(STACK) -DSTREAM_ARRAY_SIZE=800000000 stream.c -o stream.pgi
Intel Compiler
Az Intel Compiler 18 biztosan működik az AMD EPYC-vel. Ezzel a CLI-paranccsal fordíthat az Intel Compilerrel.
icc -o stream.intel stream.c -DSTATIC -DSTREAM_ARRAY_SIZE=800000000 -mcmodel=large -shared-intel -Ofast –qopenmp
GCC-fordító
HPC számítási feladatok esetén az AMD a GCC-fordító 7.3-at vagy újabbat javasolja. Az RHEL/CentOS 7.4 régebbi verziói, például a 4.8.5 nem ajánlottak. A GCC 7.3 és újabb verziója nagyobb teljesítményt nyújt a HPL-, HPCG- és DGEMM-teszteken.
gcc $(OPTIMIZATIONS) $(OMP) $(STACK) $(STREAM_PARAMETERS) stream.c -o stream.gcc
Következő lépések
- A HPC-alkalmazások Azure-ra való optimalizálására vonatkozó képzési modullal tesztelheti tudását.
- Tekintse át a HBv3-sorozatok áttekintését és a HC-sorozatok áttekintését.
- Az Azure Compute Tech Community blogjaiban tájékozódhat a legújabb bejelentésekről, a HPC számítási feladatokra vonatkozó példáiról és teljesítményeredményeiről.
- További információ az Azure-ra vonatkozó HPC-ről.