PAR · Tema 3
Descomposició de tasques
Com s'expressa el paral·lelisme amb OpenMP. Regions paral·leles, tasques, dependències, privacitat de variables i les estratègies per descompondre bucles i algorismes recursius.
Capítols
- 3.1Regió paral·lelaEsborranyLlegit
Passes de la teoria al codi amb OpenMP. Tot comença a la regió paral·lela: un bloc que crea un team de threads, amb una barrera implícita al final.
- 3.2Models d'execució: tasques implícites i explícitesEsborranyLlegit
Un cop tens el team, OpenMP et dona dos models: tasques implícites (cada thread executa el bloc) i tasques explícites (un thread crea tasques a una pool i tots les agafen).
- 3.3Instruccions bàsiques d'OpenMPEsborranyLlegit
Les directives que faràs servir sempre: `parallel`, `single`, `task` i `taskloop` per crear tasques, i `taskwait` i `taskgroup` per esperar-les.
- 3.4Dependències en OpenMPEsborranyLlegit
Amb `depend` indiques quines dades llegeix o escriu cada tasca, i OpenMP ordena les germanes sense que hagis de posar barreres a mà.
- 3.5Privacitat de variablesEsborranyLlegit
Cada variable ha de ser compartida o privada. `private`, `firstprivate` i `shared` ho controlen, i les regles per defecte canvien entre `parallel` i `task`.
- 3.6Protegir problemes de concurrènciaEsborranyLlegit
Quan molts threads actualitzen la mateixa variable apareixen data races. Veuràs `critical`, els locks, `atomic`, la reducció manual i `reduction`, de menys a més eficient.
- 3.7Descomposició iterativa de buclesEsborranyLlegit
Per paral·lelitzar un bucle reparteixes les iteracions entre threads. Ho veuràs amb tasques implícites (atomic per iteració o reducció manual) i amb tasques explícites (`task` i `taskloop`).
- 3.8Descomposició recursivaEsborranyLlegit
Els algorismes divide-and-conquer es paral·lelitzen creant tasques a la recursió. Veuràs les estratègies Leaf i Tree, els seus problemes i com el cut-off (a mà o amb `final`) els controla.
- 3.9ConsolidacióEsborranyLlegit
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.