Descomposició de tasques · 3.4
Dependències en OpenMP
Amb depend indiques quines dades llegeix o escriu cada tasca, i OpenMP ordena les germanes sense que hagis de posar barreres a mà.
Conceptes clau
- Clàusula
dependentre tasques germanes depend(in: var)i RaWdepend(out: var), WaR i WaWdepend(inout: var)
Clica una casella per anar canviant entre —, in, out i inout.
RAW: la tasca llegeix el que una altra ha escrit (dependència real). WAR: escriu el que una altra havia de llegir abans. WAW: totes dues escriuen; ha de quedar el valor de l'última.
La clàusula depend(...) s’afegeix a #pragma omp task per indicar dependències de dades entre tasques germanes (del mateix pare), evitant haver de gestionar barreres manualment.
Especificadors de dependència:
depend(in: var): la tasca espera totes les germanes anteriors amboutoinoutsobre la mateixa variable. Garanteix dependències RaW (Read after Write).depend(out: var): la tasca espera les germanes anteriors ambin,outoinoutsobre la mateixa variable. Garanteix dependències WaR (Write after Read) i WaW (Write after Write).depend(inout: var): combinainiout. Espera totes les germanes que llegeixin o escriguin la mateixa variable.