Next: Vectorized Communication Up: Optimizations Previous: Single Node Parallelism

Communication Hierarchy

Communication is divided into a hierarchy of types, with the lowest types in the hierarchy being more expensive. The hierarchy is as follows:

1) No communication. The left and right hand side arrays reside on the same processor.

2) Overlap shift. A BLOCK-distributed array is involved in a shift communication pattern. The local array section is enlarged by the shift amount, and the boundary elements are transferred from neighboring processors.

3) Collective communications. Two arrays, aligned to the same template, are involved in a multicast, transfer, or variable shift pattern.

4) Pre_readand pre_write. An array is indexed with an arbitrary subscript, but the evaluation of the subscript does not involve any communication. For example, this primitive can efficiently handle the transpose or diagonal accesses that may arise in a statement.

5) gather and scatter. An array is indexed with a subscript that involves communication.

6) Scalarization. No efficient communication pattern was found, so every processor performs the entire loop, broadcasting the data that it owns one element at a time, and storing the results that it owns.


zbozkus@
Thu Jul 6 21:09:19 EDT 1995