Differences

This shows you the differences between two versions of the page.

Link to this comparison view

asc:laboratoare:01 [2026/03/11 22:48]
tudor.calafeteanu [Resurse utile]
asc:laboratoare:01 [2026/03/26 14:25] (current)
emil.slusanschi [Resurse utile]
Line 108: Line 108:
 ==== CPU ==== ==== CPU ====
  
-^ Partiție ^ CPU ^ Arhitectură ^ Topologie CPU¹ ^ NUMA nodes ^ Frecvență core (bază; boost) ^+^ Partiție ^ CPU ^ Arhitectură ^ Topologie CPU¹ ^ NUMA nodes ^ Frecvență core [[https://​www.intel.com/​content/​www/​us/​en/​gaming/​resources/​cpu-clock-speed.html | (bază; boost)]] ^
 | dgxh100 | Intel Xeon Platinum 8480C | Sapphire Rapids | 2 S/N x 56 C/S x 2 T/C = 224 T/N | 2 NUMA (1 per socket) | 2.0 GHz; 3.8 GHz | | dgxh100 | Intel Xeon Platinum 8480C | Sapphire Rapids | 2 S/N x 56 C/S x 2 T/C = 224 T/N | 2 NUMA (1 per socket) | 2.0 GHz; 3.8 GHz |
-| dgxa100 | AMD EPYC 7742 | Zen 2 (Rome) | 2 S/N x 64 C/S x 2 T/C = 256 T/N | 8 NUMA (4 per socket) | 2.25 GHz; 3.4 GHz |+| dgxa100 | AMD EPYC 7742 | Zen 2 (Rome) | 2 S/N x 64 C/S x 2 T/C = 256 T/N | 8 NUMA (4 per socket²) | 2.25 GHz; 3.4 GHz |
 | ucsx | Intel Xeon Gold 6326 | Ice Lake | 2 S/N x 16 C/S x 2 T/C = 64 T/N | 2 NUMA (1 per socket) | 2.9 GHz; 3.5 GHz | | ucsx | Intel Xeon Gold 6326 | Ice Lake | 2 S/N x 16 C/S x 2 T/C = 64 T/N | 2 NUMA (1 per socket) | 2.9 GHz; 3.5 GHz |
 | xl | Intel Xeon E5-2680 v4 | Broadwell | 2 S/N x 14 C/S x 2 T/C = 56 T/N | 2 NUMA (1 per socket) | 2.4 GHz; 3.3 GHz | | xl | Intel Xeon E5-2680 v4 | Broadwell | 2 S/N x 14 C/S x 2 T/C = 56 T/N | 2 NUMA (1 per socket) | 2.4 GHz; 3.3 GHz |
 | haswell | Intel Xeon E5-2640 v3 | Haswell | 2 S/N x 8 C/S x 2 T/C = 32 T/N | 2 NUMA (1 per socket) | 2.6 GHz; 3.4 GHz | | haswell | Intel Xeon E5-2640 v3 | Haswell | 2 S/N x 8 C/S x 2 T/C = 32 T/N | 2 NUMA (1 per socket) | 2.6 GHz; 3.4 GHz |
  
-¹ Sockets/​Node x Cores/​Socket x Threads/​Core = Threads/​Node+¹ Sockets/​Node x Cores/​Socket x Threads/​Core = Threads/​Node ​\\ 
 +² Pe AMD EPYC, fiecare socket expune 4 NUMA nodes datorită arhitecturii chiplet (CCD/CCX). Fiecare NUMA node conține 16 core-uri și o porțiune de memorie locală. Pe Intel, de regulă 1 socket = 1 NUMA node.
  
-==== Ierarhie ​de memorie ====+<spoiler Alte informații utile (click pentru detalii)>​ 
 +<note tip> 
 +Toate partițiile folosesc arhitectura x86_64 cu 16 registre generale de 64 biți (RAX, RBX, ..., R8–R15). Partițiile mai noi (Sapphire Rapids, Ice Lake) dispun și de 32 registre AVX-512 de 512 biți, iar Sapphire Rapids adaugă registre AMX (tile registers) pentru operații matriceale. 
 +</​note>​ 
 +</​spoiler>​ 
 +\\ 
 +==== Ierarhia ​de memorie ====
  
 ^ Partiție ^ Linie cache ^ L1d SRAM/core ^ L1i SRAM/core ^ L2 SRAM/core ^ L3 SRAM/socket ^ DRAM/nod¹ ^ ^ Partiție ^ Linie cache ^ L1d SRAM/core ^ L1i SRAM/core ^ L2 SRAM/core ^ L3 SRAM/socket ^ DRAM/nod¹ ^
-| dgxh100 | 64B | 32 KB | 48 KB | 2 MB | 105 MB | ~2 TB DDR5-4800; 8 canale; ~307 GB/s |+| dgxh100 | 64B | 48 KB | 32 KB | 2 MB | 105 MB | ~2 TB DDR5-4800; 8 canale; ~307 GB/s |
 | dgxa100 | 64B | 32 KB | 32 KB | 512 KB | 256 MB | ~2 TB DDR4-3200; 8 canale; ~204 GB/s | | dgxa100 | 64B | 32 KB | 32 KB | 512 KB | 256 MB | ~2 TB DDR4-3200; 8 canale; ~204 GB/s |
 | ucsx | 64B | 48 KB | 32 KB | 1.25 MB | 24 MB | ~512 GB DDR4-3200; 4 canale; ~102 GB/s | | ucsx | 64B | 48 KB | 32 KB | 1.25 MB | 24 MB | ~512 GB DDR4-3200; 4 canale; ~102 GB/s |
Line 128: Line 135:
 ¹ capacitate tip; canale per socket; bandwidth teoretic per socket ¹ capacitate tip; canale per socket; bandwidth teoretic per socket
  
 +<spoiler Alte informații utile (click pentru detalii)>​
 +<note tip>
 +Bandwidth-ul teoretic per socket se calculează astfel: \\
 +''​lățime_bandă (GB/s) = nr._canale x rată_transfer (MT/s) x lățime_magistrală_date (B/​T)''​ \\
 +De exemplu, pentru ''​dgxh100'':​ 8 × 4800 MT/s × 8 B/T = ~307 GB/s.
 +</​note>​
 +</​spoiler>​
 +\\
 ==== GPU ==== ==== GPU ====
  
Line 139: Line 154:
 ² capacitate tip; bus; bandwidth teoretic ² capacitate tip; bus; bandwidth teoretic
  
 +<spoiler Alte informații utile (click pentru detalii)>​
 +<note tip>
 +Un Streaming Multiprocessor (SM) este unitatea fundamentală de execuție pe GPU, echivalentul unui core pe CPU. Fiecare SM conține multiple CUDA cores (pentru operații generale FP32/INT32) și Tensor Cores (pentru operații matriceale accelerate, folosite în deep learning). Toate CUDA cores dintr-un SM partajează aceleași resurse: registre, shared memory și cache L1.
 +</​note>​
 +
 +<note tip>
 +Compute Capability (sm_XX) determină ce instrucțiuni și funcționalități hardware sunt disponibile. Este esențial la compilarea CUDA: ''​nvcc -arch=sm_90''​ pentru H100, ''​sm_80''​ pentru A100. Un binar compilat pentru un anumit compute capability nu rulează pe GPU-uri cu o versiune mai veche.
 +</​note>​
 +</​spoiler>​
 +\\
 ===== Ce este FEP-ul? ===== ===== Ce este FEP-ul? =====
 FEP-ul reprezintă nodul de acces către clusterul HPC al universității. Pe scurt, 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. FEP-ul reprezintă nodul de acces către clusterul HPC al universității. Pe scurt, 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.
Line 388: Line 413:
 srun --partition=ucsx --gres=gpu:​1 ./​hello_cuda ​ # rulare interactivă simplă srun --partition=ucsx --gres=gpu:​1 ./​hello_cuda ​ # rulare interactivă simplă
 srun --partition=ucsx --gres=gpu:​1 --pty bash    # sesiune interactivă pe nodul de calcul srun --partition=ucsx --gres=gpu:​1 --pty bash    # sesiune interactivă pe nodul de calcul
 +srun --partition=haswell -w haswell-wnxx --pty bash # rulare interactivă simplă pe un anumit nod (xx se inlocuieste cu un numar anume de sistem) de pe partitia haswell
 +
  
 # === Informații despre cluster === # === Informații despre cluster ===
Line 419: Line 446:
     * Cât RAM e disponibil per nod vs. maximul permis per job? (hint: ''​scontrol show partition <​nume>''​)     * Cât RAM e disponibil per nod vs. maximul permis per job? (hint: ''​scontrol show partition <​nume>''​)
     * Cum vedeți joburile care se execută în prezent pe cluster? Cum opriți un job specific?     * Cum vedeți joburile care se execută în prezent pe cluster? Cum opriți un job specific?
 +    * Cum puteti rula un job (interactiv sau nu) pe un anumit nod din cluster (Hint, explorati optiunea -w de la srun)
   * Rulați cel puțin un program C multi-threaded și un program CUDA, atât cu ''​sbatch'',​ cât și cu ''​srun''​. Verificați rezultatele. Care este diferența dintre cele două comenzi?   * Rulați cel puțin un program C multi-threaded și un program CUDA, atât cu ''​sbatch'',​ cât și cu ''​srun''​. Verificați rezultatele. Care este diferența dintre cele două comenzi?
   * Scrieți un program C multi-threaded care face calcule intensive (de exemplu suma unei serii pe fiecare thread). Rulați-l o dată cu ''​%%--cpus-per-task=N%%''​ și o dată fără ''​%%--cpus-per-task=N%%'',​ unde N este numărul de thread-uri din program. Comparați timpii de execuție (hint: ''​time ./​program''​) și explicați diferența.   * Scrieți un program C multi-threaded care face calcule intensive (de exemplu suma unei serii pe fiecare thread). Rulați-l o dată cu ''​%%--cpus-per-task=N%%''​ și o dată fără ''​%%--cpus-per-task=N%%'',​ unde N este numărul de thread-uri din program. Comparați timpii de execuție (hint: ''​time ./​program''​) și explicați diferența.
Line 426: Line 454:
   * [[https://​slurm.schedmd.com/​mc_support.html | SLURM Support for Multi-core/​Multi-thread Architectures]]   * [[https://​slurm.schedmd.com/​mc_support.html | SLURM Support for Multi-core/​Multi-thread Architectures]]
   * https://​infrastructure.pages.upb.ro/​wiki/​docs/​grid/​   * https://​infrastructure.pages.upb.ro/​wiki/​docs/​grid/​
 +  * https://​guides.upb.ro/​docs/​grid/​apptainer-usage
asc/laboratoare/01.1773262103.txt.gz · Last modified: 2026/03/11 22:48 by tudor.calafeteanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0