Preskočiť na obsah

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
Created by: Marek Štekláč