This shows you the differences between two versions of the page.
|
asc:laboratoare:06 [2026/04/08 07:12] alexandru.bala [Ierarhia de memorie] |
asc:laboratoare:06 [2026/04/08 08:14] (current) alexandru.bala [Ierarhia de memorie] |
||
|---|---|---|---|
| Line 41: | Line 41: | ||
| **Register File** | **Register File** | ||
| <code sh> | <code sh> | ||
| - | /* marcam pentru compilator regValPi in register file */ | + | /* compilatorul incadreaza regVal2Pi ca registru in CUDA */ |
| - | __private__ float regValPi = 3.14f; | + | |
| - | /* compilatorul cel mai probabil oricum incadreaza regVal2Pi ca registru */ | + | |
| float regVal2Pi = 2 * 3.14f; | float regVal2Pi = 2 * 3.14f; | ||
| + | /* marcam pentru compilator regValPi in register file in OpenCL */ | ||
| + | __private__ float regValPi = 3.14f; | ||
| </code> | </code> | ||
| *Cea mai rapida forma de memorie de pe GPU, care lucreaza la aceeasi frecventa cu core-urile CUDA (poate atinge viteze mai mari de 300 TB/s) | *Cea mai rapida forma de memorie de pe GPU, care lucreaza la aceeasi frecventa cu core-urile CUDA (poate atinge viteze mai mari de 300 TB/s) | ||
| Line 54: | Line 54: | ||
| **Local Memory** | **Local Memory** | ||
| <code sh> | <code sh> | ||
| - | /* fiecare work item salveaza un element */ | + | /* fiecare work item salveaza un element in OpenCL */ |
| __local__ float lArray[lid] = data[gid]; | __local__ float lArray[lid] = data[gid]; | ||
| </code> | </code> | ||
| Line 67: | Line 67: | ||
| </code> | </code> | ||
| *In functie de implementarea hardware, 100GB/sec -> 200TB/sec | *In functie de implementarea hardware, 100GB/sec -> 200TB/sec | ||
| - | *Accesibila tuturor threadurilor dintr-un bloc (warp/wavefront), iar durata de viata este aceeasi ca si a blocului | + | *Accesibila tuturor threadurilor dintr-un bloc (care conține mai multe warp-uri/wavefront-uri), iar durata de viata este aceeasi ca si a blocului |
| *Trebuie evitate conflictele de access (bank conflicts) | *Trebuie evitate conflictele de access (bank conflicts) | ||
| Line 75: | Line 75: | ||
| </code> | </code> | ||
| * In functie de implementarea hardware, 100GB/sec -> 100TB/sec | * In functie de implementarea hardware, 100GB/sec -> 100TB/sec | ||
| - | * In general performanta foarte buna, (cache L1/L2, zona dedicata), | + | * In general performanta foarte buna, (cache L1/L2, zona dedicata) |
| * Are durata de viata a aplicatiei kernel | * Are durata de viata a aplicatiei kernel | ||
| Line 97: | Line 97: | ||
| | Constant | Grid | Application | Device (VRAM, cached) | | | Constant | Grid | Application | Device (VRAM, cached) | | ||
| | Shared | Block | Kernel | SM (on-chip SRAM) | | | Shared | Block | Kernel | SM (on-chip SRAM) | | ||
| - | | Local | Thread | Kernel | Device (VRAM) | | + | | Local CUDA* | Thread | Kernel | Device (VRAM) | |
| | Register | Thread | Kernel | SM (Register File) | | | Register | Thread | Kernel | SM (Register File) | | ||
| + | |||
| + | *A nu se confunda cu Local din OpenCL. | ||
| Caracteristici GPU K40m (coada hpsl), via query device properties CUDA | Caracteristici GPU K40m (coada hpsl), via query device properties CUDA | ||