Salta al contingut

    ↑ ↓ per moure't↵ per obrir

    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 BS alineat amb la línia de caché per evitar false sharing i maximitzar localitat.

    False sharing i solucions:

    • Alinear BS a la línia de caché.
    • Block-cyclic en lloc de cyclic.
    • Padding (afegir espai entre variables de threads diferents).