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
dependi privacitat- Data races: de
criticalareduction - 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,taskwaititaskgroup, 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 (parallelvstask). - Identificar data races i saber protegir-les amb el mecanisme adequat (
critical, locks,atomic, reducció manual oreduction), 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).