Difference between revisions of "Reduce"

From Mesham
Jump to navigationJump to search
m (6 revisions imported)
 
(3 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
== Example ==
 
== Example ==
  
  var t:Int::allocated[multiple[]];
+
  function void main() {
var x:Int::allocated[multiple[]];
+
    var t:Int::allocated[multiple[]];
var p;
+
    var x:Int::allocated[multiple[]];
par p from 0 to 3 {
+
    var p;
    x:(x::reduce[1,"max"];
+
    par p from 0 to 3 {
    x:=p;
+
      x:(x::reduce[1,"max"];
    t:=x;
+
      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''.  
 
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 ==
 
== Supported operations ==
Line 25: Line 29:
  
 
[[Category:Type Library]]
 
[[Category:Type Library]]
[[Category:Composite Types]]
+
[[Category:Compound Types]]
 
[[Category:Primitive Communication Types]]
 
[[Category:Primitive Communication Types]]

Latest revision as of 15:44, 15 April 2019

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