Salta al contingut

    ↑ ↓ per moure't↵ per obrir

    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 depend entre tasques germanes
    • depend(in: var) i RaW
    • depend(out: var), WaR i WaW
    • depend(inout: var)
    Prova-hoDependències amb depend

    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 amb out o inout sobre la mateixa variable. Garanteix dependències RaW (Read after Write).
      • depend(out: var): la tasca espera les germanes anteriors amb in, out o inout sobre la mateixa variable. Garanteix dependències WaR (Write after Read) i WaW (Write after Write).
      • depend(inout: var): combina in i out. Espera totes les germanes que llegeixin o escriguin la mateixa variable.