StreamIt Compiler Documentation

Notes on StreamIt development

See:
          Description

StreamIt Front End Packages
streamit.frontend High-level code for the StreamIt frontend.
streamit.frontend.controlflow Control-flow and data-flow analysis for the StreamIt front-end IR.
streamit.frontend.nodes Intermediate representation nodes for the StreamIt frontend.
streamit.frontend.passes Assorted passes on the StreamIt front-end IR.
streamit.frontend.tojava Helper classes for converting StreamIt code to Java.

 

StreamIt Library Packages
streamit.library The main library package.
streamit.library.io  
streamit.library.iriter Implements the iterators necessary for communicating with scheduler2.
streamit.library.jcc  
streamit.misc  

 

Streamit SIR representation
at.dms.kjc.sir Contains the heart of the StreamIt Intermediate Representation, or SIR for short.

 

StreamIt LIR Rep and Uni code generator
at.dms.kjc.lir Provides a set of low-level stubs (LIR stands for Low-level IR) for compiling to the original (and mostly obsolete) uniprocessor backend.

 

StreamIt Cluster compiler
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.

 

StreamIt Rstream compiler
at.dms.kjc.rstream  

 

Streamit Raw space compiler
at.dms.kjc.raw  

 

Streamit Raw spacetime compiler
at.dms.kjc.spacetime  
at.dms.kjc.spacetime.switchIR  

 

Streamit Raw spacedynamic compiler
at.dms.kjc.spacedynamic  

 

Other StreamIt Compiler Packages
at.dms.kjc  
at.dms.kjc.backendSupport Package documentation for at.dms.kjc.backendSupport
at.dms.kjc.cell  
at.dms.kjc.common  
at.dms.kjc.flatgraph FlatNode basics
at.dms.kjc.iterator Package Specification.
at.dms.kjc.linprog Provides a programmatic interface to various linear programming solvers.
at.dms.kjc.sir.linear Provides analysis and optimization of linear portions of the stream graph.
at.dms.kjc.sir.linear.frequency Translates linear filters into the frequency domain.
at.dms.kjc.sir.linear.transform Performs algebraic combination of adjacent linear filters in the stream graph.
at.dms.kjc.sir.lowering Provides compiler passes that analyze or optimize the SIR, primarily within the code of each filter.
at.dms.kjc.sir.lowering.fission Provides compiler passes to split (parallelize) a filter into a set of fine-grained filters.
at.dms.kjc.sir.lowering.fusion Provides compiler passes to fuse (combine) a set of filters into a single filter.
at.dms.kjc.sir.lowering.partition Provides algorithms for adjusting the granularity of the stream graph to improve load balancing or optimization potential.
at.dms.kjc.sir.lowering.partition.cache Fuses filters in the stream graph while respecting instruction and data cache constraints.
at.dms.kjc.sir.lowering.partition.dynamicprog Adjusts the granularity of the stream graph, using a dynamic programming algorithm to optimize the load balancing.
at.dms.kjc.sir.lowering.partition.linear Applies linear optimizations to the stream graph, using a dynamic programming algorithm to calculate the most profitable set of transformations.
at.dms.kjc.sir.statespace Provides analysis and optimization of linear statespace portions of the stream graph.
at.dms.kjc.sir.statespace.transform Performs algebraic combination of adjacent linear statespace filters in the stream graph.
at.dms.kjc.sir.stats Provides passes to gather statistics about stream programs, such as parallelization potential and botteleneck work.
at.dms.kjc.slicegraph This package aims to supersede the SIR and flatgraph representations of the stream graph with a single representation that maintains all relevant information as well as slice information.
at.dms.kjc.vanillaSlice This package was written to provide a test for the classes in backendSupport.

 

StreamIt Scheduler Packages
streamit.scheduler1  
streamit.scheduler1.simple  
streamit.scheduler2 The main scheduler2 package.
streamit.scheduler2.base The basic scheduler2 package providing interfaces and some functionality for all scheduler implementations.
streamit.scheduler2.constrained This package was meant to provide a scheduler for programs constrained by messaging.
streamit.scheduler2.hierarchical This is a top-level scheduler base for all schedulers that produce hierarchical schedules.
streamit.scheduler2.iriter Provides iterfaces that need to be implemented in order to use the scheduler.
streamit.scheduler2.minlatency This scheduler implements a minlatency scheduler, as described in my (Michal Karczmarek) Master's Thesis.
streamit.scheduler2.print  
streamit.scheduler2.singleappearance This is the simplest scheduler we have.

 

Other Kopi Packages
at.dms.backend  
at.dms.classfile  
at.dms.compiler  
at.dms.compiler.antlr.extra  
at.dms.compiler.antlr.runtime  
at.dms.compiler.getopt  
at.dms.compiler.tools.antlr.compiler  
at.dms.compiler.tools.antlr.extra  
at.dms.compiler.tools.antlr.runtime  
at.dms.compiler.tools.common  
at.dms.compiler.tools.include  
at.dms.compiler.tools.jperf  
at.dms.compiler.tools.lexgen  
at.dms.compiler.tools.msggen  
at.dms.compiler.tools.optgen  
at.dms.optimize  
at.dms.util  

 

Other Packages
org.jgraph  
org.jgraph.event  
org.jgraph.graph  
org.jgraph.plaf  
org.jgraph.plaf.basic  
streamit.stair.core Core nodes for the STAIR intermediate representation.

 

Notes on StreamIt development