Difference between revisions of "Alltoall"
From Mesham
Jump to navigationJump to searchm |
|||
Line 9: | Line 9: | ||
== Example == | == Example == | ||
− | x:array[Int,12]::allocated[multiple[]]; | + | function void main() { |
− | + | x:array[Int,12]::allocated[multiple[]]; | |
− | + | var r:array[Int,3]::allocated[multiple[]]; | |
− | + | var p; | |
− | + | par p from 0 to 3 { | |
− | + | (x:alltoall[3]):=r; | |
+ | }; | ||
}; | }; | ||
Revision as of 14:15, 15 April 2013
Syntax
alltoall[elementsoneach]
Semantics
Will cause each process to send some elements (the number being equal to elementsoneach) to every other process in the group.
Example
function void main() { x:array[Int,12]::allocated[multiple[]]; var r:array[Int,3]::allocated[multiple[]]; var p; par p from 0 to 3 { (x:alltoall[3]):=r; }; };
In this example each process sends every other process three elements (the elements in its r.) Therefore each process ends up with twelve elements in x, the location of each is based on the source processes's PID.
Since: Version 0.41b