Share via


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:

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