Salta al contingut

    ↑ ↓ per moure't↵ per obrir

    Mesurar el paral·lelisme · 2.5

    Granularitat

    Un cop saps què pots paral·lelitzar, has de decidir en quantes tasques ho divideixes. Tasques grans donen desbalanceig; tasques petites donen overheads. Cal trobar el punt mig.

    Conceptes clau

    • Eficiència EP=SP/PE_P = S_P / P
    • Granularitat gruixuda i load imbalance
    • Granularitat fina i overheads
    • Compromís entre les dues
    Prova-hoGranularitat: quina mida de tasca?

    Eix horitzontal: mida de tasca (escala logarítmica). Corall: el temps; ratllada: el temps ideal n/p; punt fosc: la millor mida.

    tasques (n = 4.096)
    temps Tp
    speed-up
    millor mida de tasca

    Tp = (n/b)·tcreació + ⌈(n/b)/p⌉·b.

    Un cop hem identificat una part del programa que podem paral·lelitzar, el pas següent és decidir en quantes tasques la dividim (granularitat). Aquesta decisió afecta directament el rendiment, perquè l’eficiència depèn del speedup i del nombre de processadors:

    EP=SPP.E_P = \frac{S_P}{P}.

    Granularitat gruixuda → tasques grans.

    Si les tasques són molt grans, n’hi haurà poques i cadascuna tindrà molta càrrega de treball. Això redueix el cost de gestió (menys tasques a crear i planificar), però incrementa el risc de load imbalance: si una tasca és significativament més llarga, fixa el TPT_P i la resta de processadors poden quedar-se inactius (idleness) fins que acabi.

    Quatre tasques grans T0…T3 en quatre processadors: TPT_P queda determinat per la tasca més llarga, i els processadors que acaben abans no poden contribuir i es queden esperant (idleness). (figura al dossier, p. 13)

    Granularitat fina → tasques petites.

    Si fem les tasques molt petites, n’hi haurà moltes i per tant la feina quedarà molt més repartida. Quan un thread acaba, pot continuar amb una altra tasca disponible, reduint el desbalanceig i l’idleness, però pagant un cost addicional: en crear i planificar moltes tasques, creixen els overheads de gestió.

    28 tasques petites t1…t28 repartides entre quatre processadors: repartiment més homogeni i amb menys idleness, però amb un cost de gestió més gran, degut als trams d’overhead (groc) per la creació de tasques. (figura al dossier, p. 13)