Scopul acestui laborator este de a vă familiariza cu infrastructura de calcul de înaltă performanță (HPC – High Performance Computing) a facultății.
Veți învăța cum să interacționați cu clusterul prin intermediul nodului de acces FEP (Front-End Processor), cum să analizați resursele disponibile, și cum să lansați și să monitorizați joburi pe nodurile de calcul.
De asemenea, veți explora sistemul de gestiune a joburilor și politicile de alocare a resurselor (precumul timp maxim de execuție per job, numărul maxim de joburi active și limitele de utilizare a CPU-urilor, GPU-urilor și memoriei RAM), care pot varia în funcție de categoria de utilizator — student, cadru didactic sau cercetător.
Aplicațiile moderne din știință și inginerie — de la simulări meteorologice și modelarea curgerilor de fluide, până la antrenarea modelelor de inteligență artificială — necesită resurse de calcul care depășesc cu mult capacitatea unui sistem individual.
Exact pentru astfel de sarcini sunt utilizate clusterele HPC, sisteme capabile să combine puterea a zeci, sute sau chiar mii de noduri într-o infrastructură paralelă, distribuită și scalabilă.
Un cluster HPC este format din noduri de calcul interconectate printr-o rețea internă de mare viteză (de obicei InfiniBand sau Ethernet RDMA, de ordinul sutelor de Gbps). Fiecare nod este echipat cu procesoare multi-core (CPU) și, în multe cazuri, cu acceleratoare grafice (GPU) specializate în calcule masiv paralele.
Aceste acceleratoare extind capabilitățile unui cluster HPC, permițând execuția eficientă a unor tipuri variate de aplicații, de la procesare de date și antrenare AI, până la simulări cuantice și analiză științifică complexă.
Nodurile partajează un sistem de fișiere paralel (precum Lustre, BeeGFS, sau Ceph), care permite acces simultan la date de către procese multiple.
Orchestrarea joburilor și alocarea resurselor se face de către un cluster management software (precum SLURM - cel mai popular, PBS, Torque sau LSF). Acesta primește cererile utilizatorilor, planifică rularea joburilor în funcție de disponibilitatea resurselor și de politicile de acces, optimizând în permanență utilizarea clusterului. Astfel, mai mulți utilizatori pot folosi simultan infrastructura, fără a se afecta reciproc.
Aplicațiile rulate pe un cluster HPC folosesc paradigme și biblioteci de programare distribuită și paralelă, precum:
Prin combinarea acestor tehnologii, sistemele HPC oferă o platformă integrată capabilă să atingă performanțe de ordinul tera– sau peta–flopilor, fiind esențiale în cercetarea științifică modernă.
Nodurile sunt organizate în partiții, fiecare partiție conținând o configurație hardware omogenă (aceeași arhitectură și același număr de CPU-uri/GPU-uri, aceeași capacitate RAM etc.).
Clusterul poate fi, astfel, heterogen, incluzând de exemplu:
Partițiile pot fi diferențiate și prin politici de acces, unele fiind dedicate anumitor categorii de utilizatori sau proiecte, ori impunând limite de timp și prioritate.
Un cluster HPC include, în general, următoarele componente:
Universitate / Instituție | Nume HPC | Specificații |
---|---|---|
Universitatea Politehnica din București (România) | HPC UPB | Cluster cu mai multe partiții, printre care dgxa100 (7 noduri DGX echipate cu AMD EPYC 7742«2×64 cores, 256 threads», 2 TB RAM și 8x NVIDIA A100), dgxh100 (3 noduri DGX cu Intel Xeon Platinum 8480C«2×56 cores, 224 threads», 2 TB RAM și 8x NVIDIA H100). Alte partiții includ Tesla A100, P100. |
University of Cambridge (Marea Britanie) | Cumulus (CPU cluster) și Wilkes3 (GPU cluster) | Cumulus are 4 partitii, fiecare cu zeci de mii de CPU-uri, intre 3.5 GB si 6GB memorie per CPU, iar Wilkes3 are multiple servere, fiecare cu A100 GPUs, 1 TB memorie, Infiniband 200Gbit/s, 1200 Tflops de putere de calcul |
ETH Zürich (Elveția) | Euler | Cluster care cuprinde peste 200k CPU cores, 1300 GPUs folosite pentru Big Data, AI & ML |
Stanford University (SUA) | Sherlock | 1483 noduri, 26 748 CPU cores, 728 GPUs, si 2053 TFlops de putere de calcul, folosite de mii de cercetatori |
Universitățile tehnice dispun adesea de clustere HPC proprii, folosite pentru activități de cercetare și educație. Universitatea Politehnica din București (UPB) deține un astfel de cluster modern, echipat cu GPU-uri performante (precum NVIDIA H100, A100, P100), utilizate pentru proiecte de educatie si cercetare.
[nume.student@fep8 ~]$ sinfo -o "%10P %55N %8c %10m %20G" PARTITION NODELIST CPUS MEMORY GRES dgxa100 dgxa100-ncit-wn[01-04] 256 2063510 gpu:tesla_a100:8 dgxh100 dgxh100-precis-wn[01-03] 224 2063426 gpu:tesla_h100:8 haswell* haswell-wn[29-41] 32 127309 (null) hd xl675dg10-wn175 96 773230 gpu:tesla_a100:10 ml sprmcrogpu-wn[140-141] 112 128230 gpu:tesla_a100:2 sprmcrogpu sprmcrogpu-wn13 64 515111 gpu:rtx_2080ti:8 ucsx ucsx-ncit-gpu-wn[100-101],ucsx-precis-gpu-wn[100-101] 64 257158 gpu:tesla_a100:3 xl xl270-wn[161-162] 56 257158 gpu:tesla_p100:2
CPU | Arhitectura | An lansare | Sockets | Cores/Socket | Threads/Core | Total CPUs (threads) | Frecvență per core | RAM per nod |
---|---|---|---|---|---|---|---|---|
Intel® Xeon® Platinum 8480C (dgxh100) | Sapphire Rapids (Intel 4th Gen Xeon Scalable) | 2023 | 2 | 56 | 2 | 224 | până la 3.8 GHz | ~2 TB |
AMD EPYC 7742 64-Core Processor (dgxa100) | Rome (AMD Zen 2) | 2019 | 2 | 64 | 2 | 256 | până la 2.25 GHz | ~2 TB |
Intel® Xeon® Gold 6326 @ 2.90 GHz (ucsx) | Ice Lake (Intel 3rd Gen Xeon Scalable) | 2021 | 2 | 16 | 2 | 64 | 2.9 GHz | ~256 GB |
Intel® Xeon® E5-2680 v4 @ 2.40 GHz (xl) | Broadwell (Xeon v4) | 2016 | 2 | 14 | 2 | 56 | 2.4 GHz | ~256 GB |
Intel® Xeon® E5-2640 v3 @ 2.60 GHz (haswell) | Haswell (Xeon v3) | 2014 | 2 | 8 | 2 | 32 | 2.6 GHz | ~128 GB |
GPU | Arhitectura | An lansare | Nuclee (cores) | Memorie (VRAM) | Scop |
---|---|---|---|---|---|
NVIDIA H100 80GB HBM3 (dgxh100) | Hopper | 2022 | 14592 CUDA cores + 456 Tensor cores (Gen 4) | 80 GB HBM3 | Advanced AI, LLMs, HPC |
NVIDIA A100-SXM4-80GB (dgxa100) | Ampere | 2020 | 6912 CUDA cores + 432 Tensor cores (Gen 3) | 80 GB HBM2e | AI, HPC, simulări numerice |
NVIDIA A100-PCIE-40GB (ucsx) | Ampere | 2020 | 6912 CUDA cores + 432 Tensor cores (Gen 3) | 40 GB HBM2e | AI, HPC, simulări numerice |
NVIDIA Tesla P100-PCIE-16GB (xl) | Pascal | 2016 | 3584 CUDA cores | 16 GB HBM2 | HPC tradițional, aplicații științifice, AI timpuriu |
FEP-ul (Front-End Processor) reprezintă nodul de acces către clusterul HPC al universității. Pe scurt, acesta este serverul prin intermediul căruia utilizatorii se conectează la infrastructură pentru a pregăti și lansa job-urile pe resursele de calcul ale clusterului (CPU-uri și/sau GPU-uri).
Conectarea la FEP se realizează prin protocolul SSH, folosind următoarea comandă:
ssh -X -o ServerAliveInterval=100 user.name@fep.grid.pub.ro
Explicația parametrilor:
-X
– permite redirecționarea interfeței grafice (dacă folosiți aplicații GUI);ServerAliveInterval=100
– menține conexiunea activă dacă terminalul e inactiv o perioadă.
Pentru o conectare mai simplă, puteți adăuga, local, în fișierul ~/.ssh/config
, următorul bloc (după ce ați generat o pereche cheie privată/publică, de exemplu RSA):
Host fep fep.grid.pub.ro HostName fep.grid.pub.ro User <user.name> ForwardX11 yes IdentityFile ~/.ssh/id_fep ServerAliveInterval 100
Apoi, copiați cheia publică în fișierul ~/.ssh/authorized_keys
de pe FEP, pentru a vă putea conecta de acum direct prin ssh fep
.
După conectare, utilizatorul se află pe serverul FEP. Atenție, acest server NU este destinat execuției joburilor!
FEP-ul are un rol limitat, oferind:
Execuția efectivă a joburilor are loc exclusiv pe nodurile de calcul, care dispun de resursele reale de procesare (CPU, GPU, RAM extins).
Într-un sistem HPC, numeroase aplicații, compilatoare, biblioteci sunt instalate simultan (de exemplu mai multe versiuni de GCC, CUDA, OpenMPI, etc.). Aceste pachete pot depinde de versiuni diferite de drivere sau biblioteci, iar utilizarea lor directă poate duce la conflicte.
Pentru a evita astfel de probleme și pentru a permite fiecărui utilizator să își configureze rapid propriul mediu de lucru, infrastructurile HPC folosesc sisteme specializate de gestionare a mediului software, precum Environment Modules sau Lmod.
Aceste instrumente permit încărcarea dinamică a mediului de lucru. Practic, ele modifică temporar variabile precum PATH, LD_LIBRARY_PATH, CPATH, astfel încât utilizatorul să folosească exact versiunea dorită a unui compilator sau a unei biblioteci, fără a afecta sistemul global.
Pe clusterul HPC al Politehnicii este instalat Environment Modules, disponibil implicit atât pe nodul de acces (FEP), cât și pe nodurile de calcul.
Prin comenzile module
, fiecare utilizator poate vedea ce software este disponibil și poate încărca mediul de lucru potrivit pentru aplicația sa.
Comenzi uzuale:
module help module avail # afișează modulele disponibile module load libraries/cuda-12.3 # încarcă biblioteca CUDA corespunzătoare module list # arată modulele active în sesiunea curentă module unload libraries/cuda-12.3 # dezactivează un modul module purge # dezactivează toate modulele încărcate
Exemplu de utilizare într-un job SLURM (hello.sh
):
#!/bin/bash #SBATCH --gres=gpu:1 #SBATCH --partition=<GPU_PARTITION> module load libraries/<CUDA_VERSION> nvcc -o hello hello.cu ./hello
Apoi rulati sbatch hello.sh
pentru a submite jobul.
scontrol
)sacctmgr, MaxWallDurationPerJob
)sbatch
. Verificați rezultatele.