ExclusiveScan is a collective algorithm that performs partial reductions on data provided by each process in the communicator. ExclusiveScan combines the values stored by each process into partial results delivered to each process. The values are combined in a user-defined way, specified via a delegate. If value1, value2, ..., valueN are the values provided by the N processes in the communicator, the resulting value for the process with rank P > 0 will be value1 op value2 op ... op valueP. The rank 0 process receives a default value. ExclusiveScan is sometimes called an "exclusive" scan, because the result returned to each process does not include the contribution of that process. For an "inclusive" scan (that does include the contribution of the calling process in its result), use Scan<(Of <(T>)>)(T, ReductionOperation<(Of <(T>)>)). Note that the results provided by ExclusiveScan are the same as those provided by Scan, except that with ExclusiveScan, the process with rank i will receive the result that rank i-1 would have received from Scan, i.e., ExclusiveScan gives the same results but shifted to the right.

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


public T ExclusiveScan<T>(
	T value,
	ReductionOperation<T> op
Visual Basic (Declaration)
Public Function ExclusiveScan(Of T) ( _
	value As T, _
	op As ReductionOperation(Of T) _
) As T
Visual C++
generic<typename T>
T ExclusiveScan(
	T value, 
	ReductionOperation<T>^ op


Type: T
The value contributed by the calling process.
Type: MPI..::.ReductionOperation<(Of <(T>)>)
Operation used to combine two values from different processes. This operation must be associative.

Type Parameters

Any serializable type.

Return Value

If the rank of the calling process is not zero, the value value1 op value2 op ... op valueP, where P is the rank of the calling process. Otherwise, returns a default value.

See Also