Salta al contingut

    ↑ ↓ per moure't↵ per obrir

    Descomposició de tasques · 3.9

    Consolidació

    Repàs del tema 3: les directives d'OpenMP, les dependències, la privacitat de variables, com protegir les data races i com paral·lelitzar bucles i recursivitat.

    Conceptes clau

    • Tasques implícites i explícites
    • Directives bàsiques i barreres
    • depend i privacitat
    • Data races: de critical a reduction
    • Bucles, Leaf i Tree amb cut-off

    Del tema 3 hauries de saber:

    • Entendre la diferència entre tasques implícites (paral·lelisme per threads) i tasques explícites (paral·lelisme per tasques), i saber quan convé cada model.
    • Conèixer les directives bàsiques d’OpenMP: parallel, single, task, taskloop, taskwait i taskgroup, i saber quines inclouen barreres implícites.
    • Saber establir dependències entre tasques amb la clàusula depend(in/out/inout) i identificar els tipus de dependència (RaW, WaR, WaW).
    • Decidir correctament l’àmbit de cada variable (private, firstprivate, shared) i conèixer les regles per defecte segons el context (parallel vs task).
    • Identificar data races i saber protegir-les amb el mecanisme adequat (critical, locks, atomic, reducció manual o reduction), entenent els compromisos de sobrecost i escalabilitat de cadascun.
    • Paral·lelitzar bucles iteratius tant amb tasques implícites com explícites, aplicant reducció manual o automàtica (taskloop + reduction) segons el cas.
    • Paral·lelitzar codi recursiu amb les estratègies Leaf i Tree, identificant els problemes de cada una (overhead de creació, granularitat, load imbalance) i aplicant cut-off per mitigar-los (manualment o amb final/omp_in_final).