A collective operation that first performs a reduction on the given values (see Reduce<(Of <(T>)>)(array<T>[]()[], ReductionOperation<(Of <(T>)>), Int32) from one group and then scatters the results by sending some elements to each process of the other group. The reduction will be performed on the entire array of values (like the array form of Reduce<(Of <(T>)>)(array<T>[]()[], ReductionOperation<(Of <(T>)>), Int32)). Then, the array will be scattered, with process i receiving counts[i] elements. The process with rank 0 will receive the first counts[0] elements, the process with rank 1 will receive the next counts[1] elements, and so on.

Namespace:  MPI
Assembly:  MPI (in MPI.dll)
Version: (


public T[] ReduceScatter<T>(
	T[] values,
	ReductionOperation<T> op,
	int[] counts
Visual Basic (Declaration)
Public Function ReduceScatter(Of T) ( _
	values As T(), _
	op As ReductionOperation(Of T), _
	counts As Integer() _
) As T()
Visual C++
generic<typename T>
array<T>^ ReduceScatter(
	array<T>^ values, 
	ReductionOperation<T>^ op, 
	array<int>^ counts


Type: array< T >[]()[]
An array of values that will be reduced. This array must be the same length at every process within a group.
Type: MPI..::.ReductionOperation<(Of <(T>)>)
The operation used to combine the elements in values. This operation must be associative.
Type: array< System..::.Int32 >[]()[]
An array whose ith element states the number of elements from the reduced result that will be returned to the process with rank i. This array should be the same at every process within a group (though the count values within the array need not be the same). The sum of all counts for one group must be the same as the sume of all counts for the other group.

Type Parameters

Any serializable type.

Return Value

An array of length counts[Rank] containing the reduced results destined for the calling process.

See Also