The Scatter Procedure takes an input vector (bare naked vector) that is distributed across all the processors and scatters it into another distributed vector or array (bare naked vector or array) according to an indirect index vector or array. Collisions are possible, since this call is effectively putting values into a distributed variable, and more than one value can go into the same location. Therefore, a combination operator, OP, must be specified. This is the opposite of the Gather procedure.
|call Scatter_AND (Output, Input, Index, Trace)||,|
|call Scatter_MAX (Output, Input, Index, Trace)||,|
|call Scatter_MIN (Output, Input, Index, Trace)||,|
|call Scatter_OR (Output, Input, Index, Trace)||or|
|call Scatter_SUM (Output, Input, Index, Trace)|
|Index||An optional integer vector or array of indirect references to positions in the Output vector. This must be included on the first call to this procedure with a given data structure, but may be omitted on subsequent calls if the Trace variable is present. [Optional]|
|Input||A real, integer or logical vector that is distributed across all the processors.|
|Trace||An optional structure that stores the setup from a previous Gather/Scatter call using the same Index variable and Output vector length. If Trace is present and uninitialized, it is set by this procedure. If Trace is present, it is used regardless of whether Index is present.|
|Output||The scattered vector version of the Input vector, distributed across the processors.|
|Trace||If present, Trace is set to the setup information for this Gather/Scatter. [Optional]|
The Scatter code listing contains additional documentation.
Michael L. Hall