Kompilácia na HPC infraštruktúre¶
HPC clustre SAS poskytujú široký výber kompilátorov a vývojových nástrojov na tvorbu vedeckého a inžinierskeho softvéru. Tieto nástroje sú sprístupnené prostredníctvom modulového systému, ktorý umožňuje používateľom vyberať konkrétne verzie kompilátorov a softvérové prostredia bez potreby meniť systémovú konfiguráciu.
Používanie konzistentných toolchainov zaisťuje, že aplikácie sa zostavujú s kompatibilnými verziami kompilátorov, MPI a numerických knižníc.
Zobrazenie dostupných kompilátorov¶
Dostupné moduly kompilátorov si môžete vypísať pomocou príkazov:
module avail intel
module avail foss
Ak hľadáte konkrétnu rodinu kompilátorov alebo konkrétnu verziu, môžete použiť aj:
module spider gcc
module spider intel
Dostupné kompilátory
Prostredníctvom dostupných kompilačných toolchainov sú podporované nasledujúce programovacie jazyky:
- C/C++
- Fortran 77/90/95
- Java
- NVIDIA CUDA
Kompilátory C/C++ a Fortran sú zvyčajne poskytované nasledujúcimi implementáciami.
Open-source
- GNU GCC
- Clang/LLVM
Komerčné licencie
- Intel
Použitie modulového systému na kompiláciu¶
Kompilačné prostredia sa nastavujú pomocou modulového systému. Načítanie toolchainu automaticky nastaví potrebné premenné prostredia, napríklad:
- cesty ku kompilátorom,
- cesty na vyhľadávanie knižníc,
- adresáre s hlavičkovými súbormi,
- MPI wrapper kompilátory.
Tým sa zabezpečuje konzistentné kompilačné prostredie naprieč uzlami. Toolchainy je možné načítať priamo pomocou príkazu module:
module load intel/2022a
Tip
Požadovaný toolchain vždy načítajte pred kompiláciou aplikácie, aby ste sa uistili, že všetky potrebné závislosti sú správne nastavené.
Často používané toolchainy¶
Na HPC clusteroch SAS sú zvyčajne dostupné dva hlavné kompilačné toolchainy:
- Intel toolchain – obsahuje Intel kompilátory a optimalizované knižnice od výrobcu
- FOSS toolchain – pozostáva z kompilátorov s otvoreným zdrojovým kódom a vedeckých knižníc
Tip
Ak vaša aplikácia profituje z optimalizácií špecifických pre konkrétneho výrobcu, zvážte použitie Intel toolchainu. Pre plne otvorené softvérové prostredie poskytuje FOSS toolchain alternatívu.
Intel toolchain¶
Toolchain Intel poskytuje optimalizované kompilátory a numerické knižnice určené pre výpočtovo náročné HPC aplikácie.
Typické komponenty zahŕňajú:
- Intel C/C++/Fortran kompilátory (
icc,icpc,ifort) - knižnicu Intel MPI
- Intel Math Kernel Library (MKL), ktorá poskytuje BLAS, LAPACK a FFT
Tieto kompilátory často poskytujú vyšší výkon pre aplikácie, ktoré vo veľkej miere využívajú vektorizáciu a numerické výpočty.
Verzie komponentov v Intel toolchainoch¶
| Verzia | GCC | Binutils | Intel kompilátory | Intel MPI | Intel MKL |
|---|---|---|---|---|---|
| 2021a | 10.3.0 | 2.36.1 | 2021.2.0 | 2021.2.0 | 2021.2.0 |
| 2021b | 11.2.0 | 2.37 | 2021.4.0 | 2021.4.0 | 2021.4.0 |
| 2022a | 11.3.0 | 2.38 | 2022.1.0 | 2021.6.0 | 2022.1.0 |
| 2022b | 12.2.0 | 2.39 | 2022.2.1 | 2021.7.1 | 2022.2.1 |
| 2023a | 12.3.0 | 2.40 | 2023.1.0 | 2021.9.0 | 2023.1.0 |
| 2023b | 13.2.0 | 2.40 | 2023.2.1 | 2021.10.0 | 2023.2.0 |
| 2025a | 14.2.0 | 2.42 | 2025.1.1 | 2021.15.0 | 2025.1.0 |
| 2025b | 14.3.0 | 2.44 | 2025.2.0 | 2021.16.1 | 2025.2.0 |
| 2026.1 | 15.2.0 | 2.45 | 2026.1.0 | 2021.17.2 | 2025.3.1 |
| Verzia | GCC | Binutils | Intel kompilátory | Intel MPI | Intel MKL |
|---|---|---|---|---|---|
| 2023a | 12.3.0 | 2.40 | 2023.1.0 | 2021.9.0 | 2023.1.0 |
| 2023b | 13.2.0 | 2.40 | 2023.2.1 | 2021.10.0 | 2023.2.0 |
| 2024a | 13.3.0 | 2.42 | 2024.2.0 | 2021.13.0 | 2024.2.0 |
| 2025a | 14.2.0 | 2.42 | 2025.1.1 | 2021.15.0 | 2025.1.0 |
| 2025b | 14.3.0 | 2.44 | 2025.2.0 | 2021.16.1 | 2025.2.0 |
Žiadna.
FOSS toolchain¶
Toolchain FOSS (Free and Open-Source Software) poskytuje plne otvorený softvérový stack bežne používaný pre HPC aplikácie.
Typické komponenty zahŕňajú:
- kompilátory GNU GCC,
- knižnicu Open MPI,
- FlexiBLAS (OpenBLAS + LAPACK),
- knižnice FFTW a ScaLAPACK.
Tento toolchain je široko používaný v akademickom HPC prostredí a poskytuje vysokú mieru prenositeľnosti.
Verzie komponentov v FOSS toolchainoch¶
| Verzia | GCC | OpenMPI | FlexiBLAS | FFTW | ScaLAPACK |
|---|---|---|---|---|---|
| 2021a | 10.3.0 | 4.1.1 | 3.0.4 | 3.3.9 | 2.1.0 |
| 2021b | 11.2.0 | 4.1.1 | 3.0.4 | 3.3.10 | 2.1.0 |
| 2022.05 | 11.3.0 | 4.1.4 | 3.2.0 | 3.3.10 | 2.2.0 |
| 2022a | 11.3.0 | 4.1.4 | 3.2.0 | 3.3.10 | 2.2.0 |
| 2022b | 12.2.0 | 4.1.4 | 3.2.1 | 3.3.10 | 2.2.0 |
| 2023a | 12.3.0 | 4.1.5 | 3.3.1 | 3.3.10 | 2.2.0 |
| 2023b | 13.2.0 | 4.1.6 | 3.3.1 | 3.3.10 | 2.2.0 |
| 2024a | 13.3.0 | 5.0.3 | 3.4.4 | 3.3.10 | 2.2.0 |
| 2025a | 14.2.0 | 5.0.7 | 3.4.5 | 3.3.10 | 2.2.2 |
| 2025b | 14.3.0 | 5.0.8 | 3.4.5 | 3.3.10 | 2.2.2 |
| Verzia | GCC | OpenMPI | FlexiBLAS | FFTW | ScaLAPACK |
|---|---|---|---|---|---|
| 2023b | 13.2.0 | 4.1.6 | 3.3.1 | 3.3.10 | 2.2.0 |
| 2024a | 13.3.0 | 5.0.3 | 3.4.4 | 3.3.10 | 2.2.0 |
| 2025a | 14.2.0 | 5.0.7 | 3.4.5 | 3.3.10 | 2.2.2 |
| 2025b | 14.3.0 | 5.0.8 | 3.4.5 | 3.3.10 | 2.2.2 |
| Verzia | GCC | OpenMPI | FlexiBLAS | FFTW | ScaLAPACK |
|---|---|---|---|---|---|
| 2025a | 14.2.0 | 5.0.7 | 3.4.5 | 3.3.10 | 2.2.2 |
| 2025b | 14.3.0 | 5.0.8 | 3.4.5 | 3.3.10 | 2.2.2 |
Kompilácia aplikácií¶
Ak je načítaný príslušný kompilačný toolchain, aplikácie je možné kompilovať pomocou štandardných build systémov.
Na načítanie Intel toolchainu 2022a použite:
module load intel/2022a
Na načítanie FOSS toolchainu 2022b použite:
module load foss/2022b
Výber vhodného kompilačného toolchainu umožňuje používateľom prispôsobiť kompiláciu svojich aplikácií a efektívne využívať HPC zdroje dostupné na clusteroch SAS.
Príklad: Jednoduchý C program¶
gcc program.c -o program
Príklad: Fortran program¶
gfortran program.f90 -o program
Príklad: MPI program¶
MPI aplikácie by sa mali kompilovať pomocou MPI wrapper kompilátorov poskytovaných načítanou implementáciou MPI.
mpicc program.c -o program
mpif90 program.f90 -o program
Tieto wrapper kompilátory automaticky pridajú potrebné MPI knižnice pri linkovaní aplikácie.
Príklad: GPU kompilácia¶
Aplikácie určené pre NVIDIA GPU je možné kompilovať pomocou CUDA toolchainu.
nvcc program.cu -o program