Sdílet prostřednictvím


Škálování aplikací prostředí HPC

Upozornění

Tento článek odkazuje na CentOS, což je linuxová distribuce se stavem Konec životnosti (EOL). Zvažte své použití a odpovídajícím způsobem naplánujte. Další informace najdete v doprovodných materiálech CentOS End Of Life.

Platí pro: ✔️ Virtuální počítače s Windows s Linuxem ✔️ ✔️ – Flexibilní škálovací sady Uniform Scale Sets ✔️

Optimální výkon aplikací HPC v Azure s vertikálním navýšením kapacity a horizontálním navýšením kapacity vyžaduje pro konkrétní úlohy experimenty optimalizace a ladění výkonu. Tato část a stránky specifické pro řadu virtuálních počítačů nabízejí obecné pokyny pro škálování aplikací.

Nastavení aplikace

Úložiště azurehpc obsahuje mnoho příkladů:

Optimální škálování MPI

Následující návrhy se vztahují na optimální efektivitu, výkon a konzistenci škálování aplikací:

  • Pro menší úlohy škálování (< 256 tisíc připojení) použijte: UCX_TLS=rc,sm

  • Pro větší úlohy škálování (> 256 tisíc připojení) použijte: UCX_TLS=dc,sm

  • K výpočtu počtu připojení pro úlohu MPI použijte: Max Connections = (processes per node) x (number of nodes per job) x (number of nodes per job)

Adaptivní směrování

Adaptivní směrování (AR) umožňuje virtuálním počítačům Azure, na kterých běží EDR a HDR InfiniBand, automaticky zjišťovat a vyhnout se zahlcení sítě dynamickým výběrem optimálních síťových cest. V důsledku toho ar nabízí vylepšenou latenci a šířku pásma v síti InfiniBand, která zase zvyšuje výkon a efektivitu škálování. Další informace najdete v článku TechCommunity.

Připnutí procesu

  • Připnutí procesů na jádra pomocí sekvenčního připnutí (na rozdíl od přístupu automatické rovnováhy).
  • Vazba pomocí Numa/Core/HwThread je lepší než výchozí vazba.
  • V případě hybridních paralelních aplikací (OpenMP+MPI) použijte čtyři vlákna a jednu pořadí MPI na [CCX](přehled virtuálních počítačů řady HB-series včetně informací o CCX) na velikostech virtuálních počítačů HB a HBv2.
  • U čistých aplikací MPI experimentujte s jedním až čtyřmi pořadími MPI na CCX pro optimální výkon na virtuálních počítačích HB a HBv2.
  • Některé aplikace s extrémní citlivostí na šířku pásma paměti můžou těžit z použití omezeného počtu jader na CCX. U těchto aplikací může použití tří nebo dvou jader na CCX snížit kolize šířky pásma paměti a dosáhnout vyššího výkonu reálného světa nebo konzistentnější škálovatelnosti. Zejména mpI "Allreduce" může z tohoto přístupu těžit.
  • U rozsáhlejších spuštění se doporučuje používat UD nebo hybridní přenosy RC+UD. Mnoho knihoven MPI nebo knihoven modulu runtime tyto přenosy používá interně (například UCX nebo MVAPICH2). Zkontrolujte konfigurace přenosu pro rozsáhlá spuštění.

Kompilace aplikací


Kliknutím rozbalíte

I když to není nutné, kompilace aplikací s příslušnými příznaky optimalizace poskytuje nejlepší výkon vertikálního navýšení kapacity na virtuálních počítačích řady HB a HC-series.

Optimalizace kompilátoru C/C++ AMD

Systém kompilátoru AMD Optimizationing C/C++ (AOCC) nabízí vysokou úroveň pokročilých optimalizací, vícevláknového zpracování a podpory procesoru, která zahrnuje globální optimalizaci, vektorizaci, inter procedurální analýzy, transformace smyčky a generování kódu. Binární soubory kompilátoru AOCC jsou vhodné pro systémy Linux, které mají GNU C Library (glibc) verze 2.17 a vyšší. Sada kompilátoru se skládá z kompilátoru C/C++ (clang), kompilátoru Fortran (FLANG) a front-endu Fortran do Clang (Dragon Egg).

Znít

Clang je kompilátor C, C++ a Objective-C, který zpracovává předběžné zpracování, analýzu, optimalizaci, generování kódu, sestavení a propojení. Clang podporuje -march=znver1 příznak, který umožňuje nejlepší generování kódu a ladění pro architekturu x86 založené na amd.

FLANG

Kompilátor FLANG je nedávným doplňkem sady AOCC (přidáno duben 2018) a v současné době je připravený pro vývojáře ke stažení a testování. Na základě Fortranu 2008 rozšiřuje AMD verzi FLANG na GitHubu. Kompilátor FLANG podporuje všechny možnosti kompilátoru jazyka Clang a další počet možností kompilátoru specifické pro FLANG.

DragonEgg

DragonEgg je modul plug-in gcc, který nahrazuje optimalizátory A generátory kódu GCC z projektu LLVM. DragonEgg, který je součástí AOCC funguje s gcc-4.8.x, byl testován pro cíle x86-32/x86-64 a byl úspěšně použit na různých platformách Linuxu.

GFortran je skutečný front-end pro programy Fortran zodpovědný za předběžné zpracování, analýzu a sémantickou analýzu, která generuje Zprostředkující reprezentaci GCC GIMPLE (IR). DragonEgg je modul plug-in GNU, který se zapojuje do toku kompilace GFortran. Implementuje rozhraní API modulu plug-in GNU. S architekturou modulů plug-in se DragonEgg stává ovladačem kompilátoru, který řídí různé fáze kompilace. Po provedení pokynů ke stažení a instalaci lze Dragon Egg vyvolat pomocí:

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

Kompilátor PGI

PGI Community Edition 17 je potvrzeno, že pracuje s AMD EPYC. Verze STREAM kompilovaná pomocí PGI zajišťuje plnou šířku pásma paměti platformy. Novější Community Edition 18.10 (listopad 2018) by měl stejně dobře fungovat. Pomocí tohoto příkazu rozhraní příkazového řádku zkompilujte s kompilátorem Intel:

pgcc $(OPTIMIZATIONS_PGI) $(STACK) -DSTREAM_ARRAY_SIZE=800000000 stream.c -o stream.pgi

Intel Compiler

Intel Compiler 18 je potvrzen, že pracuje s AMD EPYC. Pomocí tohoto příkazu rozhraní příkazového řádku zkompilujte s kompilátorem Intel.

icc -o stream.intel stream.c -DSTATIC -DSTREAM_ARRAY_SIZE=800000000 -mcmodel=large -shared-intel -Ofast –qopenmp

Kompilátor GCC

Pro úlohy HPC amd doporučuje kompilátor GCC 7.3 nebo novější. Starší verze, například 4.8.5, které jsou součástí RHEL/CentOS 7.4, se nedoporučují. GCC 7.3 a novější přináší vyšší výkon při testech HPL, HPCG a DGEMM.

gcc $(OPTIMIZATIONS) $(OMP) $(STACK) $(STREAM_PARAMETERS) stream.c -o stream.gcc

Další kroky