Package at.dms.kjc.cluster

The cluster backend for StreamIt generates a set of threads that can be executed on a cluster of networked computers or a SMP.

See:
          Description

Interface Summary
Tape Common elements for all kinds of tapes.
 

Class Summary
ClusterBackend Top level of back ends for cluster and uniprocessor based on cluster.
ClusterCode This class generates and emits code for each filter, splitter, and joiner in the flat graph.
ClusterFusion the class finds splitters / joiners that need to be fused with filters.
ClusterStaticStreamGraph  
ClusterStreamGraph  
CodeEstimate Estimates the code size and size of local variables for a SIRFilter
DataEstimate Estimates the data working set of an operator.
DetectConst Constructs a set of fields that are modified by a method other that the init function.
DoSchedules Looks like printing some debugging info about SDEP schedules.
FindPath Attempts to find a path between two stream nodes.
FixedBufferTape Calculate buffer sizes for an edge (a tape) that uses a fixed-length buffer.
FlatIRToCluster This class dumps the tile code for each filter into a file based on the tile number assigned.
GenerateClusterDotH Generate file cluster.h
GenerateConfigFile Generate cluster-config.txt for cluster back end.
GenerateGlobalDotCpp Generate "global.cpp" for cluster back end.
GenerateGlobalDotH Generate "global.h" for cluster back end.
GenerateMakefile Generate Makefile.cluster for cluster back end.
GenerateMasterDotCpp Generate "master.cpp"
GenerateSetupFile Generates cluster-setup.txt for cluster back end.
GenerateWorkEst Generates work-estimate.txt file that contains work estimates for all threads during a single steady state cycle
InsertCounters If KjcOptions.countops is enabled, this class inserts insrumentation calls for counting the number of operations in the C runtime.
InsertTimers If KjcOptions.profiling is enabled, this class inserts timers around certain sections of code.
LatencyConstraint Represents a pairwise constraint due to a latency constrained message between a source and destination filters.
LatencyConstraints A class that detects and stores pairwise latency constraints between message senders and receivers.
ModState Determines if a method modifies the state of a stream node!
NetStream A class that represents a tape with input and output operators and object type.
NodeEnumerator Create a mapping from SIROperators and FlatNodes to unique numbers [0..n] used for thread ids.
PPAnalyze  
RegisterStreams Constructs a list of input and output tapes for each stream operator.
StructureIncludeFile Create structs.h and its contents.
TapeBase  
TapeCluster Janis' code for cluster edges pulled out
TapeClusterFused  
TapeDynrate Dynamic-rate tapes linking nodes.
TapeFixedBase Class of tapes with fixed size buffers.
TapeFixedCircular  
TapeFixedCopydown  
 

Package at.dms.kjc.cluster Description

The cluster backend for StreamIt generates a set of threads that can be executed on a cluster of networked computers or a SMP. For each splitter/joiner/filter a threadX.cpp file is generated that contains code for the operator. The threads are enumerated from 0 to N-1 (the mapping between operators and integers is maintained by the class NodeEnumerator).

A file master.cpp contains the master thread that is executed on each cluster node and invokes appropriate operator threads. File 'Makefile.cluster' contains instructions about compiling the C files generated by the cluster backend.

The mapping between operator threads and cluster machines is defined in 'cluster-config.txt' file. File 'cluster-setup.txt' contains the number of steady state iterations the stream program should execute (Note that this can be overridden by passing '-i N' parameter to the 'run_cluster').

After executing 'make -f Makefile.cluster' a 'run_cluster' executable is generated. This executable should be invoked on all machines defined in 'cluster-config.txt'.

The file 'cluster.h' defines the checkpointing freqency. By default the checkpointing is turned off. Files 'global.h' and 'global.cpp' contain static fields of the stream program. File 'structs.h' contains structures defined by the stream program.

Cluster Standalone

Cluster backend also generates fusion.h and fusion.cpp files that can be used to compile a single thread version of a stream program for execution on a uniprocessor. The fusion.cpp contains a method that invokes work functions of the operators from a single thread. If -cluster option is combined with -standalone then after executing 'make -f Makefile.cluster' a 'fusion' file will be generated instead or 'run_cluster'. Despite compiling for a single thread, the code is still split into files threadX.cpp. If the
-fusion
switch is passed along with the
-standalone
switch, then the usual fusion is performed, resulting in a minimal number of threadX.cpp files.

Class Overview