Salta al contingut

    ↑ ↓ per moure't↵ per obrir

    PAR · Tema 5

    Descomposició de dades

    Repartir les dades en lloc de les tasques. Estratègies geomètriques per a vectors i matrius, i com evitar el false sharing amb padding.

    Descarrega el dossier en PDF

    Capítols

    1. 5.1
      Objectius de la descomposició de dadesEsborrany

      Amb memòria jeràrquica i NUMA no n'hi ha prou amb repartir la feina: cal repartir les dades i qui les calcula. Aquests són els sis objectius d'una bona descomposició de dades.

      Llegit
    2. 5.2
      Estratègies geomètriquesEsborrany

      Les estratègies geomètriques reparteixen les iteracions de forma regular: block, block amb el residu repartit, cyclic i block-cyclic. Cadascuna guanya en localitat, false sharing o balanceig, però no en tot alhora.

      Llegit
    3. 5.3
      Padding contra el false sharingEsborrany

      El padding afegeix espai perquè les dades de threads diferents caiguin en línies de caché separades. El veuràs aplicat a structs i a vectors petits de control.

      Llegit
    4. 5.4
      Descomposicions 2DEsborrany

      Les matrius es reparteixen amb les mateixes estratègies, per files o per columnes. Com que es guarden per files (row-major), repartir per files dona millor localitat.

      Llegit
    5. 5.5
      Padding en matriusEsborrany

      Si el nombre de columnes no és múltiple de la línia de caché, el final d'una fila i l'inici de la següent comparteixen línia. Amb columnes de padding, cada fila comença alineada.

      Llegit
    6. 5.6
      ConsolidacióEsborrany

      Repàs del tema 5: els objectius de la descomposició de dades, les estratègies geomètriques i com evitar el false sharing.

      Llegit