-
Notifications
You must be signed in to change notification settings - Fork 0
CnCSyntaxVariants
There have been several divergences between Intel and Rice CnC implementations which we attempt to document here.
Tag ranges are intervals of ordered tag values, represented abstractly:
{ start .. end }
where the items referred are in the interval [start, end).
For example to get a range of items:
[inputs : k, { 0 .. 10 }] -> (compute : k);
The "compute" step reads from input collection "inputs", a range of items defined by a tag with 2 components. The first one refers to the step's tag (k) and the second one is a range with constant bounds. With this information the CnC translator can generate code looking like:
for (int i = 0; i < 10; i++)
Get( createTag(k, i), ...);
Rather than steps performing get
s to retrieve data, if they declare their data dependencies as tag functions it is also possible to pass additional data inputs as function or method arguments to the step.
compute ( type* inputs_concrete, ...){
//use coder;
//gets were done and the result passed as an argument to the step: inputs_concrete[i] = inputs[k, i]
}
[UNFINISHED]