Descomposició de dades · 5.6
Consolidació
Repàs del tema 5: els objectius de la descomposició de dades, les estratègies geomètriques i com evitar el false sharing.
Conceptes clau
- Objectius de la descomposició
- Block, cyclic i block-cyclic
- False sharing: alineació i padding
Objectius:
- Balanceig de càrrega: generar tasques amb temps de còmput similar (no només el mateix nombre d’iteracions).
- Maximitzar la localitat de dades (caché i NUMA).
- Minimitzar dades compartides entre tasques → menys tràfic de coherència.
- Minimitzar volum i freqüència de transmissions.
- Minimitzar zones molt concurrents (hot spots) → usar reduccions.
- Solapar transmissions per amagar-ne l’overhead.
Estratègies de descomposició geomètrica:
- Block: cada processador executa un rang contigu. Molt bona localitat, poc tràfic de coherència. Mal balanceig si el cost per iteració no és uniforme.
- Cyclic: iteracions saltejades. Excel·lent balanceig, però mala localitat i alt risc de false sharing.
- Block-Cyclic: compromís entre ambdues. Triar
BSalineat amb la línia de caché per evitar false sharing i maximitzar localitat.
False sharing i solucions:
- Alinear
BSa la línia de caché. - Block-cyclic en lloc de cyclic.
- Padding (afegir espai entre variables de threads diferents).