streamit: a language for streaming applications william thies, michal karczmarek, michael gordon,...
TRANSCRIPT
![Page 1: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/1.jpg)
StreamIt: A Language for Streaming Applications
William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris Leger and Saman
Amarasinghe
MIT Laboratory for Computer Science
New England Programming Languages and Systems Symposium
August 7, 2002
![Page 2: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/2.jpg)
Streaming Application Domain
• Based on streams of data• Increasingly prevalent and important
– Embedded systems• Cell phones, handheld computers, DSP’s
– Desktop applications• Streaming media – Real-time encryption• Software radio - Graphics packages
– High-performance servers• Software routers • Cell phone base stations• HDTV editing consoles
![Page 3: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/3.jpg)
Synchronous Dataflow (SDF)
• Application is a graph of nodes• Nodes send/receive items over
channels• Nodes have static I/O ratesCan construct a static schedule
![Page 4: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/4.jpg)
Prototyping Streaming Apps.
• Modeling Environments:– Ptolemy (UC Berkeley)– COSSAP (Synopsys)– SPW (Cadence)– ADS (Hewlett Packard)– DSP Station (Mentor Graphics)
![Page 5: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/5.jpg)
Programming Streaming Apps.
Programmability
Perf
orm
ance
Synchronous Dataflow - LUSTRE - SIGNAL - Silage - Lucid
C / C++ / Assembly
Compiler-ConsciousLanguageDesign
![Page 6: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/6.jpg)
The StreamIt Language
• Also a synchronous dataflow language– With a few extra features
• Goals:– High performance– Improved programmer productivity
• Language Contributions:– Structured model of streams– Messaging system for control– Automatic program morphing
ENABLESCompiler Analysis & Optimization
![Page 7: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/7.jpg)
Outline
• Design of StreamIt– Structured Streams– Messaging– Morphing
• Results• Conclusions
![Page 8: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/8.jpg)
Outline
• Design of StreamIt– Structured Streams– Messaging– Morphing
• Results• Conclusions
![Page 9: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/9.jpg)
Representing Streams
• Conventional wisdom: streams are graphs– Graphs have no simple textual
representation– Graphs are difficult to analyze and
optimize
![Page 10: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/10.jpg)
Representing Streams
• Conventional wisdom: streams are graphs– Graphs have no simple textual
representation– Graphs are difficult to analyze and
optimize
• Insight: stream programs have structure
unstructured structured
![Page 11: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/11.jpg)
• Hierarchical structures:– Pipeline
– SplitJoin
– Feedback Loop
• Basic programmable unit: Filter
Structured Streams
![Page 12: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/12.jpg)
• Hierarchical structures:– Pipeline
– SplitJoin
– Feedback Loop
• Basic programmable unit: Filter
• Splits / Joins are compiler-defined
Structured Streams
![Page 13: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/13.jpg)
Representing Filters
• Autonomous unit of computation– No access to global resources– Communicates through FIFO channels
- pop() - peek(index) - push(value)
– Peek / pop / push rates must be constant
• Looks like a Java class, with– An initialization function – A steady-state “work” function– Message handler functions
![Page 14: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/14.jpg)
float->float filter LowPassFilter (float N) {float[N] weights;
init {weights = calcWeights(N);
}
work push 1 pop 1 peek N {float result = 0;for (int i=0; i<weights.length; i++) {
result += weights[i] * peek(i);}push(result);pop();
}}
Filter Example: LowPassFilter
![Page 15: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/15.jpg)
N
Filter Example: LowPassFilterfloat->float filter LowPassFilter (float N) {
float[N] weights;
init {weights = calcWeights(N);
}
work push 1 pop 1 peek N {float result = 0;for (int i=0; i<weights.length; i++) {
result += weights[i] * peek(i);}push(result);pop();
}}
![Page 16: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/16.jpg)
N
Filter Example: LowPassFilterfloat->float filter LowPassFilter (float N) {
float[N] weights;
init {weights = calcWeights(N);
}
work push 1 pop 1 peek N {float result = 0;for (int i=0; i<weights.length; i++) {
result += weights[i] * peek(i);}push(result);pop();
}}
![Page 17: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/17.jpg)
Filter Example: LowPassFilter
N
float->float filter LowPassFilter (float N) {float[N] weights;
init {weights = calcWeights(N);
}
work push 1 pop 1 peek N {float result = 0;for (int i=0; i<weights.length; i++) {
result += weights[i] * peek(i);}push(result);pop();
}}
![Page 18: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/18.jpg)
Filter Example: LowPassFilter
N
float->float filter LowPassFilter (float N) {float[N] weights;
init {weights = calcWeights(N);
}
work push 1 pop 1 peek N {float result = 0;for (int i=0; i<weights.length; i++) {
result += weights[i] * peek(i);}push(result);pop();
}}
![Page 19: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/19.jpg)
pipeline FMRadio { add DataSource(); add LowPassFilter(); add FMDemodulator(); add Equalizer(8); add Speaker();}
Pipeline Example: FM Radio
FMDemodulator
LowPassFilter
DataSource
Equalizer
Speaker
![Page 20: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/20.jpg)
pipeline FMRadio { add DataSource(); add LowPassFilter(); add FMDemodulator(); add Equalizer(8); add Speaker();}
Pipeline Example: FM Radio
FMDemodulator
LowPassFilter
DataSource
Equalizer
Speaker
![Page 21: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/21.jpg)
duplicate
SplitJoin Example: Equalizer
BPF BPF BPF
Adder
roundrobin (1)
pipeline Equalizer (int N) { add splitjoin { split duplicate; float freq = 10000; for (int i = 0; i < N; i ++, freq*=2)
{ add BandPassFilter(freq,
2*freq); } split roundrobin; } add Adder(N); }}
![Page 22: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/22.jpg)
Why Structured Streams?
• Compare to structured control flow
• Tradeoff:PRO: - more robust - more analyzableCON: - “restricted” style of programming
GOTO statements If / else / for statements
![Page 23: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/23.jpg)
Structure Helps Programmers
• Modules are hierarchical and composable– Each structure is single-input, single-output
• Encapsulates common idioms• Good textual representation
– Enables parameterizable graphs
![Page 24: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/24.jpg)
N-Element Merge Sort (3-level)
Sort Sort Sort Sort Sort Sort Sort Sort
MergeMerge Merge Merge
Merge Merge
Merge
N/2 N/2
N/4 N/4 N/4 N/4
N/8 N/8 N/8 N/8 N/8 N/8 N/8 N/8
N
![Page 25: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/25.jpg)
N-Element Merge Sort (K-level)
pipeline MergeSort (int N, int K) { if (K==1) { add Sort(N); } else { add splitjoin { split roundrobin; add MergeSort(N/2, K-1); add MergeSort(N/2, K-1); joiner roundrobin; } } add Merge(N); }}
![Page 26: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/26.jpg)
Structure Helps Compilers • Enables local, hierarchical analyses
– Scheduling– Optimization– Parallelization– Load balancing
![Page 27: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/27.jpg)
Structure Helps Compilers • Enables local, hierarchical analyses
– Scheduling– Optimization– Parallelization– Load balancing
• Examples:
Pipeline Fission
SplitJoin Fission
…
Pipeline Fusion
…
SplitJoin Fusion
![Page 28: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/28.jpg)
Structure Helps Compilers • Enables local, hierarchical analyses
– Scheduling– Optimization– Parallelization– Load balancing
• Examples:
… FilterHoisting …
![Page 29: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/29.jpg)
Structure Helps Compilers • Enables local, hierarchical analyses
– Scheduling– Optimization– Parallelization– Load balancing
• Disallows non-sensical graphs• Simplifies separate compilation
– All blocks single-input, single-output
![Page 30: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/30.jpg)
CON: Restricts Coding Style• Some graphs need
to be re-arranged• Example: FFT
Bit-reverse order
Butterfly (2 way)
Butterfly (4 way)
Butterfly (8 way)
roundrobin (2)
push(pop())
push(pop() * w[…])
duplicate
push(pop() + pop())push(pop() – pop())
roundrobin (1)
roundrobin (2)
![Page 31: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/31.jpg)
Outline
• Design of StreamIt– Structured Streams– Messaging– Morphing
• Results• Conclusions
![Page 32: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/32.jpg)
• Structures for regular, high-bandwidth data
• But also need a control mechanism for irregular, low-bandwidth events
– Change volume on a cell phone– Initiate handoff of stream– Adjust network protocol
Control Messages
![Page 33: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/33.jpg)
• Option 1: Embed message in streamPRO: - method arrives with dataCON: - complicates filter code
- complicates structure
• Option 2: Synchronous method callPRO: - delivery transparent to userCON: - timing is unclear
- limits parallelism
Supporting Control Messages
• Option 1: Embed message in streamPRO: - message arrives with dataCON: - complicates filter code
- complicates structure- runtime overhead
![Page 34: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/34.jpg)
• Looks like method call, but semantics differ
– No return value– Asynchronous delivery– Can broadcast to multiple targets
StreamIt Messaging System
void raiseVolume(int v) { myVolume += v;}
![Page 35: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/35.jpg)
• Looks like method call, but semantics differ
– No return value– Asynchronous delivery– Can broadcast to multiple targets
• Looks like method call, but semantics differ
• Timed relative to data– User gains precision; compiler gains
flexibility
StreamIt Messaging System
TargetFilter x;work { … if (lowVolume()) x.raiseVolume(10) at 100;}
![Page 36: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/36.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 37: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/37.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 38: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/38.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 39: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/39.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 40: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/40.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 41: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/41.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 42: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/42.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 43: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/43.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 44: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/44.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 45: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/45.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 46: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/46.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 47: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/47.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 48: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/48.jpg)
Message Timing
A
B
• A sends message to B with zero latency
Distancebetween wavefrontsmight havechanged
![Page 49: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/49.jpg)
Message Timing
A
B
• A sends message to B with zero latency
![Page 50: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/50.jpg)
General Message Timing
A
B
• Latency of N means:- Message attached
to wavefront that sender sees in Nexecutions
![Page 51: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/51.jpg)
General Message Timing
A
B
• Latency of N means:– Message attached
to wavefront that sender sees in Nexecutions
• Examples:- A B, latency 1
![Page 52: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/52.jpg)
General Message Timing
A
B
• Latency of N means:– Message attached
to wavefront that sender sees in Nexecutions
• Examples:- A B, latency 1
![Page 53: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/53.jpg)
General Message Timing
A
B
• Latency of N means:– Message attached
to wavefront that sender sees in Nexecutions
• Examples:- A B, latency 1- B A, latency 25
![Page 54: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/54.jpg)
General Message Timing
A
B
• Latency of N means:– Message attached
to wavefront that sender sees in Nexecutions
• Examples:- A B, latency 1- B A, latency 25
![Page 55: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/55.jpg)
Rationale
• Better for the programmer– Simplicity of method call– Precision of embedding in stream
• Better for the compiler– Program is easier to analyze
• No code for timing / embedding• No control channels in stream graph
– Can reorder filter firings, respecting constraints
– Implement in most efficient way
![Page 56: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/56.jpg)
Outline
• Design of StreamIt– Structured Streams– Messaging– Morphing
• Results• Conclusions
![Page 57: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/57.jpg)
Dynamic Changes to Stream
• Stream structure needs to change
• Examples– Switch radio from AM to FM– Change from Bluetooth to 802.11
Program “Morphing”
![Page 58: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/58.jpg)
Dynamic Changes to Stream
• Stream structure needs to change
• Challenges for programmer:– Synchronizing the beginning, end of
morphing– Preserving live data in the system– Efficiency
![Page 59: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/59.jpg)
Morphing in StreamIt• Send message to “init” to morph a
structure pipeline Equalizer (int N) { … }
![Page 60: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/60.jpg)
• Send message to “init” to morph a structure
myEqualizer.init (6);pipeline Equalizer (int N) { … }
Morphing in StreamIt
![Page 61: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/61.jpg)
pipeline Equalizer (int N) { … }
Morphing in StreamIt• Send message to “init” to morph a
structure
– When message arrives, structure is replaced
– Live data is automatically drained
myEqualizer.init (6);
![Page 62: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/62.jpg)
Rationale
• Programmer writes “init” only once– No need for complicated transitions
• Compiler optimizes each phase separately– Benefits from anticipation of phase
changes
![Page 63: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/63.jpg)
Outline
• Design of StreamIt– Structured Streams– Messaging– Morphing
• Results• Conclusions
![Page 64: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/64.jpg)
Implementation
• Basic StreamIt implementation complete
• Backends:– Uniprocessor– Raw: A tiled architecture
with fine-grained, programmable communication
• Extended KOPI, open-source Java compiler
![Page 65: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/65.jpg)
Results
• Developed applications in StreamIt– GSM Decoder - FFT– FM Radio - 3GPP Channel
Decoder– Radar - Bitonic Sort
• Load-balancing transformations improve performance on RAW
…
Vertical Fusion
Vertical Fission
…
Horizontal Fusion
Horizontal Fission
![Page 66: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/66.jpg)
Example: Radar App. (Original)Splitter
FIRFilter FIRFilterFIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter
FIRFilter FIRFilterFIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter
Joiner
Splitter
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Joiner
![Page 67: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/67.jpg)
Example: Radar App. (Original)
![Page 68: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/68.jpg)
Example: Radar App. (Original)Splitter
FIRFilter FIRFilterFIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter
FIRFilter FIRFilterFIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter
Joiner
Splitter
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Joiner
![Page 69: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/69.jpg)
Example: Radar App. (Original)Splitter
FIRFilter FIRFilterFIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter
FIRFilter FIRFilterFIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter FIRFilter
Joiner
Splitter
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Joiner
![Page 70: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/70.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Joiner
![Page 71: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/71.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Joiner
![Page 72: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/72.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Detector
Magnitude
FirFilter
Vector Mult
Joiner
![Page 73: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/73.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Vector MultFIRFilter
MagnitudeDetector
Joiner
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
![Page 74: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/74.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Vector MultFIRFilter
MagnitudeDetector
Joiner
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
![Page 75: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/75.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Vector MultFIRFilter
MagnitudeDetector
Joiner
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
![Page 76: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/76.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Vector MultFIRFilter
MagnitudeDetector
Joiner
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
![Page 77: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/77.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Vector MultFIRFilter
MagnitudeDetector
Joiner
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
![Page 78: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/78.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Vector MultFIRFilter
MagnitudeDetector
Joiner
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
![Page 79: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/79.jpg)
Example: Radar App.Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Vector MultFIRFilter
MagnitudeDetector
Joiner
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
![Page 80: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/80.jpg)
Example: Radar App. (Balanced)
Splitter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilter FIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
FIRFilterFIRFilter
Joiner
Splitter
Vector MultFIRFilter
MagnitudeDetector
Joiner
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
Vector MultFIRFilter
MagnitudeDetector
![Page 81: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/81.jpg)
Example: Radar App. (Balanced)
![Page 82: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/82.jpg)
0
10
20
30
40
50
60
70
80
90
100
Radar
FIR
Radio
Sort
FFT
Filterbank
GSM
3GPP
Vocoder
Pro
ce
ss
or
Uti
liza
tio
n o
n R
aw
(%
)
![Page 83: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/83.jpg)
![Page 84: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/84.jpg)
Outline
• Design of StreamIt– Structured Streams– Messaging– Morphing
• Results• Conclusions
![Page 85: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/85.jpg)
Conclusions
• Compiler-conscious language design can improve both programmability and performance– Structure enables local, hierachical analyses– Messaging simplifies code, exposes parallelism– Morphing allows optimization across phases
• Goal: Stream programming at high level of abstraction without sacrificing performance
![Page 86: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/86.jpg)
For More Information
http://compiler.lcs.mit.edu/streamit
StreamIt Homepage
![Page 87: StreamIt: A Language for Streaming Applications William Thies, Michal Karczmarek, Michael Gordon, David Maze, Jasper Lin, Ali Meli, Andrew Lamb, Chris](https://reader030.vdocuments.net/reader030/viewer/2022032722/56649f4f5503460f94c70b5d/html5/thumbnails/87.jpg)