# Reduce

From Mesham

Jump to navigationJump to search## Syntax

reduce[root,operation]

## Semantics

All processes in the group will combine their values together at the root process and then the operation will be performed on them.

## Example

function void main() { var t:Int::allocated[multiple[]]; var x:Int::allocated[multiple[]]; var p; par p from 0 to 3 { x:(x::reduce[1,"max"]; x:=p; t:=x; }; };

In this example, *x* is to be reduced, with the root as process 1 and the operation will be to find the maximum number. In the first assignment *x:=p* all processes will combine their values of *p* and the maximum will be placed into process 1's *x*. In the second assignment *t:=x* processes will combine their values of *x* and the maximum will be placed into process 1's *t*.

*Since: Version 0.41b*

## Supported operations

Operator | Description |
---|---|

max | Identify the maximum value |

min | Identify the minimum value |

sum | Sum all the values together |

prod | Generate product of all values |