Skip to content
alinas edited this page Dec 5, 2011 · 6 revisions

There have been several divergences between Intel and Rice CnC implementations which we attempt to document here.

Basic CnC Syntax

Extensions

Hierarchy - sub-graph step implementations

Tag Ranges

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), ...);

Data-Step-Args

Rather than steps performing gets 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]