This shows you the differences between two versions of the page.
|
app:laboratoare:00 [2025/10/09 23:20] tudor.calafeteanu [Ce este FEP-ul?] |
app:laboratoare:00 [2025/10/18 22:02] (current) tudor.calafeteanu [Resurse utile] |
||
|---|---|---|---|
| Line 81: | Line 81: | ||
| </code> | </code> | ||
| - | ^ CPU ^ Arhitectura ^ An lansare ^ Socket(s) ^ Cores/Socket ^ Threads/Core ^ Total CPU(s) (threads) ^ Frecvență (GHz) ^ RAM per nod ^ | + | <note tip> |
| - | | Intel® Xeon® Platinum 8480C (dgxh100) | Sapphire Rapids (Intel 4th Gen Xeon Scalable) | 2023 | 56 | 2 | 2 | 224 | până la 3.8 GHz | ~2 TB | | + | Asteriscul de lângă numele unei partiții (in cazul nostru haswell) indică faptul că aceasta este partiția implicită în clusterul orchestrat de SLURM. Prin urmare, dacă trimiteți un job fără să specificati în mod explicit o partiție prin directiva, SLURM va asigna automat jobul tău partiției haswell. |
| - | | AMD EPYC 7742 64-Core Processor (dgxa100) | Rome (AMD Zen 2) | 2019 | 64 | 2 | 2 | 256 | până la 2.25 GHz | ~2 TB | | + | </note> |
| - | | Intel® Xeon® Gold 6326 @ 2.90 GHz (ucsx) | Ice Lake (Intel 3rd Gen Xeon Scalable) | 2021 | 16 | 2 | 2 | 64 | 2.9 GHz | ~256 GB | | + | |
| - | | Intel® Xeon® E5-2680 v4 @ 2.40 GHz (xl) | Broadwell (Xeon v4) | 2016 | 14 | 2 | 2 | 56 | 2.4 GHz | ~256 GB | | + | ^ 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 ^ | ^ 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 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-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 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 | | + | | NVIDIA Tesla P100-PCIE-16GB (**xl**) | Pascal | 2016 | 3584 CUDA cores | 16 GB HBM2 | HPC tradițional, aplicații științifice, AI timpuriu | |
| ===== Ce este FEP-ul? ===== | ===== Ce este FEP-ul? ===== | ||
| Line 117: | Line 122: | ||
| 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''. | 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. | + | 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: | FEP-ul are un rol limitat, oferind: | ||
| * un mediu de lucru minimal (shell Linux), | * un mediu de lucru minimal (shell Linux), | ||
| - | * acces la fișierele și directoarele proprii; | + | * acces la fișierele și directoarele proprii, |
| * pregătirea codului sursă, | * pregătirea codului sursă, | ||
| * lansarea joburilor către nodurile de calcul din cluster. | * lansarea joburilor către nodurile de calcul din cluster. | ||
| Line 129: | Line 134: | ||
| <note important> Va rugăm **NU** rulați aplicațiile direct **PE FEP**! Trimiteți-le ca joburi către cluster, folosind SLURM.</note> | <note important> Va rugăm **NU** rulați aplicațiile direct **PE FEP**! Trimiteți-le ca joburi către cluster, folosind SLURM.</note> | ||
| + | ===== Configurarea mediului de lucru pe cluster ===== | ||
| + | Î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: | ||
| + | <code bash> | ||
| + | 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 | ||
| + | </code> | ||
| + | |||
| + | Exemplu de utilizare într-un job SLURM (''hello.sh''): | ||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | #SBATCH --gres=gpu:1 | ||
| + | #SBATCH --partition=<GPU_PARTITION> | ||
| + | module load libraries/<CUDA_VERSION> | ||
| + | nvcc -o hello hello.cu | ||
| + | ./hello | ||
| + | </code> | ||
| + | |||
| + | Apoi rulati ''sbatch hello.sh'' pentru a submite jobul. | ||
| ===== Exerciții ===== | ===== Exerciții ===== | ||
| Line 137: | Line 174: | ||
| * Cum vezi toate joburile tale care se execută în prezent pe cluster? Cum oprești un job specific? Dar pe toate dintr-o singură comandă? | * Cum vezi toate joburile tale care se execută în prezent pe cluster? Cum oprești un job specific? Dar pe toate dintr-o singură comandă? | ||
| * Care este timpul maxim de rulare care îți este alocat per job? (hint: ''sacctmgr, MaxWallDurationPerJob'') | * Care este timpul maxim de rulare care îți este alocat per job? (hint: ''sacctmgr, MaxWallDurationPerJob'') | ||
| - | * Rulați cel puțin un program CPU-based și un program care utilizează CUDA cu sbatch. Verificați rezultatele | + | * Rulați cel puțin un program CPU-based și un program care utilizează CUDA cu ''sbatch''. Verificați rezultatele. |
| - | * Hint: Faceți un script ''.sh'' care să: precizeze arhitectura pe care rulați (hint: ''directive SLURM''), să încarce dependențele necesare (hint: ''module avail''), să compileze codul sursă, apoi să îl ruleze. Rulați apoi ''sbatch my_script.sh''. | + | |
| ===== Resurse utile ===== | ===== Resurse utile ===== | ||
| - | * https://slurm.schedmd.com/quickstart.html | + | * [[https://slurm.schedmd.com/pdfs/summary.pdf | SLURM Cheat sheet (2 pages)]] |
| + | * [[https://slurm.schedmd.com/mc_support.html#flags | SLURM Support for Multi-core/Multi-thread Architectures]] | ||
| * https://infrastructure.pages.upb.ro/wiki/docs/grid/ | * https://infrastructure.pages.upb.ro/wiki/docs/grid/ | ||