Descomposició de dades · 5.4
Descomposicions 2D
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.
Conceptes clau
- Block, cyclic i block-cyclic per files
- Les mateixes estratègies per columnes
- Matrius row-major i localitat
Per descompondre matrius, podem aplicar les mateixes estratègies per files, o bé per columnes:
Block, cyclic i block-cyclic per files (a dalt) i per columnes (a sota), amb quatre processadors. (figura al dossier, p. 27)
| Estratègia 2D | Localitat | False sharing | Imbalance elements | Imbalance temps |
|---|---|---|---|---|
| Block per files | Bona (files contigües) | Baix | ≤ 1 fila | Alt |
| Cyclic per files | Acceptable (tot i anar saltant) | Baix | ≤ 1 fila | Baix |
| Block-Cyclic per files | Bona (files contigües) | Baix | ≤ BS files | Mig |
| Block per columnes | Dolenta | Baix | ≤ 1 col | Alt |
| Cyclic per columnes | Molt dolenta | Molt alt | ≤ 1 col | Baix |
| Block-Cyclic per columnes | Dolenta | Depèn de BS | ≤ BS cols | Mig |
La diferència clau entre files i columnes és la disposició en memòria. Les matrius es guarden per files (row-major), de manera que elements consecutius d’una fila són contigus en memòria. Per això qualsevol estratègia per files té millor localitat que la seva equivalent per columnes.