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.
Capítols
- 5.1Objectius de la descomposició de dadesEsborranyLlegit
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.
- 5.2Estratègies geomètriquesEsborranyLlegit
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.
- 5.3Padding contra el false sharingEsborranyLlegit
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.
- 5.4Descomposicions 2DEsborranyLlegit
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.
- 5.5Padding en matriusEsborranyLlegit
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.
- 5.6ConsolidacióEsborranyLlegit
Repàs del tema 5: els objectius de la descomposició de dades, les estratègies geomètriques i com evitar el false sharing.