|
|
Line 1: |
Line 1: |
− | <metadesc>Mesham is a type oriented programming language allowing the writing of high performance parallel codes which are efficient yet simple to write and maintain</metadesc>
| |
| == Overview == | | == Overview == |
| | | |
− | Prefix sums is a very simple, basic parallel algorithm commonly used as the building block of many applications. Also known as a scan, each process will sumate their value with every preceding processes' value. For instance, p=0 returns its value, p=1 returns p=1 + p=0 values, p=2 returns p=2 + p=1 + p=0 values. The MPI reduce command often implements the communication via the logarithmic structure shown below.
| + | The asin(d) function will find the inverse sine of the value or variable ''d'' passed to it. |
| | | |
− | == Source Code == | + | * '''Pass:''' A [[Double]] to find the inverse sine of |
| + | |
| + | * '''Returns:''' A [[Double]] representing the inverse sine |
| + | |
| + | == Example == |
| | | |
| #include <maths> | | #include <maths> |
− | #include <io>
| |
− | #include <string>
| |
− |
| |
− | var processes:=10;
| |
| | | |
− | function void main(var argc:Int,var argv:array[String]) { | + | function void main() { |
− | var a:Int :: allocated[multiple[]]; | + | var d:=asin(23); |
− | var p;
| + | var y:=asin(d); |
− | par p from 0 to processes - 1 {
| |
− | var mine:Int; // Force to be an integer as randomnumber function defaults to double
| |
− | mine:= randomnumber(0,toint(argv[1]));
| |
− | var i;
| |
− | for i from 0 to processes - 1 {
| |
− | var myvalue:=mine;
| |
− | if (i < p) myvalue:=0;
| |
− | (a :: reduce[i, "sum"]):=myvalue;
| |
− | };
| |
− | print(itostring(p)+" "+itostring(mine)+" = "+itostring(a)+"\n");
| |
− | };
| |
| }; | | }; |
| | | |
− | ''This code requires at least Mesham version 1.0'' | + | ''Since: Version 1.0'' |
− | | |
− | == Notes ==
| |
− | | |
− | The user can provide, via command line options, the range of the random number to find. The (relative) complexity of the prefix sums is taken away by using the reduce primitive communication type.
| |
− | | |
− | == Download ==
| |
− | | |
− | Download the entire prefix sums source code [http://www.mesham.com/downloads/prefix.mesh here]
| |
| | | |
− | [[Category:Example Codes]] | + | [[Category:Function Library]] |
| + | [[Category:Maths Functions]] |