Title: StreamIt: A Language and Compiler for Streaming Applications
1StreamItA Language and Compiler for Streaming
Applications
- Michael Gordon, Michal Karczmarek, William
Thies, David Maze, and Saman Amarasinghe - MIT Laboratory for Computer Science
2Goals of StreamIt
- High-level language for stream programs
- High-performance compiler
Improve programmer productivity without
sacrificing performance
3Radar Application
- Multistage Beamforming Target Detection
Application
- This application includes
- Input Generator
- Decimating Low Pass Filter Stage
- Reduce the bandwidth of the input
- Beamformer
- Detection Stage
4New Text (added in current slide) Keywords in
the New Text Old Text (from previous slide) Old
Keywords
5pipeline void-gtvoid PCA_App ()
6pipeline void-gtvoid PCA_App () add pipeline
add InputSource() add
LowPass(coarseTaps, coarseSamples,
coarseDec) add LowPass(fineTaps,
fineSamples, fineDec)
InputSource
LowPass
LowPass
7pipeline void-gtvoid PCA_App () add splitjoin
split NULL for (int i0 ilt12 i)
add pipeline add InputSource()
add LowPass(coarseTaps, coarseSamples,
coarseDec) add
LowPass(fineTaps, fineSamples,
fineDec) join RoundRobin()
Input
LowPass
LowPass
RoundRobin
8Input
pipeline void-gtvoid PCA_App () add splitjoin
split NULL for (int i0 ilt12 i)
add pipeline add InputSource()
add LowPass(coarseTaps, coarseSamples,
coarseDec) add
LowPass(fineTaps, fineSamples,
fineDec) join RoundRobin()
add pipeline add BeamForm(numChannels)
add LowPass(matchedTaps, samples,
matchedDec) add Magnitude() add
Detector(threshold, target)
LowPass
LowPass
RoundRobin
BeamForm
LowPass
Magnitude
Detector
9Input
pipeline void-gtvoid PCA_App () add splitjoin
split NULL for (int i0 ilt12 i)
add pipeline add InputSource()
add LowPass(coarseTaps, coarseSamples,
coarseDec) add
LowPass(fineTaps, fineSamples,
fineDec) join RoundRobin()
add splitjoin split Duplicate
for (int i0 ilt4 i) add pipeline
add BeamForm(i, numChannels) add
LowPass(matchedTaps, samples,
matchedDec) add Magnitude() add
Detector(i, threshold, target)
join NULL
LowPass
LowPass
RoundRobin
Duplicate
BeamForm
BeamForm
BeamForm
BeamForm
LowPass
LowPass
LowPass
LowPass
Magnitude
Magnitude
Magnitude
Magnitude
Detector
Detector
Detector
Detector
10Compiling the Application
- Compiled to 16 RAW tiles
- Automatic partitioning
- Automatic load balancing
- Automatic layout
- 73 Processor Utilization
11pipeline void-gtvoid PCA_App () add splitjoin
split Null for (int i0 ilt12 i)
add pipeline add InputSource()
add LowPass(coarseTaps, coarseSamples,
coarseDec) add
LowPass(fineTaps, fineSamples,
fineDec) join RoundRobin()
add splitjoin split Duplicate
for (int i0 ilt4 i) add pipeline
add BeamForm(i, numChannels) add
LowPass(matchedTaps, samples,
matchedDec) add Magnitude() add
Detector(i, threshold, target)
join NULL
Input
LowPass
LowPass
RoundRobin
Duplicate
BeamForm
BeamForm
BeamForm
BeamForm
LowPass
LowPass
LowPass
LowPass
Magnitude
Magnitude
Magnitude
Magnitude
Detector
Detector
Detector
Detector
12pipeline void-gtvoid PCA_App () add splitjoin
split NULL for (int i0 ilt48 i)
add pipeline add InputSource()
add LowPass(coarseTaps, coarseSamples,
coarseDec) add
LowPass(fineTaps, fineSamples,
fineDec) join RoundRobin()
add splitjoin split Duplicate
for (int i0 ilt16 i) add pipeline
add BeamForm(i, numChannels) add
LowPass(matchedTaps, samples,
matchedDec) add Magnitude() add
Detector(i, threshold, target)
join NULL
13Input
LowPass
LowPass
RoundRobin
Duplicate
BeamForm
LowPass
Magnitude
Detector
14Processor Utilization (16 Tiles)
- Compiled to a 16 tile RAW configuration
- 66 Processor Utilization
15For More Information
StreamIt Homepage
http//cag.lcs.mit.edu/streamit