The JADE compiler generates a task-flow graph according to the parallel program and the given input. In that way the same parallel code could be used for functional algorithm simulation and actual execution. Task-nodes in the graph contain a number of Intermediate Representation primitives. The tasks start executing upon receipt of all incoming data and continue to completion without interruption. Upon completion their results are forwarded to adjacent nodes.
Edges correspond to Send-Receive pairs and represent the data dependencies between the nodes.
The annotation of the task-flow graph is straightforward. Nodes are assigned the sum of the constants of their corresponding IR-operations. Tasks are generated by FAST with no implicit assumptions regarding partitioning and placement of data. To this end, the user of FAST has the flexibility to have the system partition the data-structures into blocks structured either according to a given geometry or in compliance to some specified heuristic. Tasks belonging to the same partition will eventually be merged into a sequential thread of execution.