Difference between pages "Sync" and "File"

From Mesham
(Difference between pages)
Jump to navigationJump to search
m
 
(Created page with '== Syntax == File == Semantics == A file handle with which the programmer can use to reference open files on the file system == Example == var i:File; In this example vari…')
 
Line 1: Line 1:
 
== Syntax ==
 
== Syntax ==
  
sync name;
+
File
  
Where the optional ''name'' is a variable.
+
== Semantics ==
  
== Semantics ==
+
A file handle with which the programmer can use to reference open files on the file system
 +
 
 +
== Example ==
 +
 
 +
var i:File;
 +
 
 +
In this example variable ''i'' is explicitly declared to be of type ''File''.
  
Will synchronise processes and acts as a blocking call involving all processes. This keyword is linked with default shared memory communication and other types. Omitting the variable name will result in synchronisation for all appropriate constructs. This can be thought of as a barrier, and the value of a variable can only be guaranteed after the appropriate barrier has completed.
+
== Communication ==
  
''Since: Version 0.5''
+
{{ElementTypeCommunication}}
  
[[Category:Parallel]]
+
[[Category:Element Types]]
 +
[[Category:Type Library]]

Revision as of 00:23, 4 January 2010

Syntax

File

Semantics

A file handle with which the programmer can use to reference open files on the file system

Example

var i:File;

In this example variable i is explicitly declared to be of type File.

Communication

When a variable is assigned to another, depending on where each variable is allocated to, there may be communication required to achieve this assignment. Table \ref{tab:eltypecomm} details the communication rules in the assignment \emph{assignmed variable := assigning variable}. If the communication is issued from MPMD programming style then this will be one sided. The default communication listed here is guaranteed to be safe, which may result in a small performance hit.


Assigned Variable Assigning Variable Semantics
multiple[] multiple[] local assignment
single[on[i]] multiple[] individual processes write values to process i
multiple[] single[on[i]] individual processes read values from process i
single[on[i]] single[on[i]] local assignment where i==i
single[on[i]] single[on[j]] communication from j to i where i!=j

Communication Example

var a:Int;
var b:Int :: allocated[single[on[2]]];
var p;
par p from 0 to 3 {
   if (p==2) b:=p;
   a:=b;
   sync;
};


This code will result in each process reading the value of b from process 2 and then writing this into a. As already noted, in absence of allocation information the default of allocating to all processes is used. In this example the variable a can be assumed to additionally have the type allocated[multiple]. Note that communication groups are the same as multiple in this context and share the same semantics. All variables marked multiple are private to their containing process.