1 |
ALIGN data based on physical domains
-
Arrays with the same domain should be aligned
-
Arrays not physically connected should not
|
2 |
DISTRIBUTE based on parallelism
-
Optimal performance comes from parallel operations on a distributed axis
|
3 |
Pick distribution pattern based on communications
-
BLOCK generally good for local stencils and fully-filled arrays
-
CYCLIC and CYCLIC(K) generally good for load balancing and triangular loops
-
Conflicts require compromises, remapping, complex compilers, or new algorithms
|
4 |
REALIGN with care; REDISTRIBUTE with extreme care
-
Computation performed must outweigh communication for the remapping
|