![Page 1: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/1.jpg)
A Dataflow Programming Language and Its Compiler for
Streaming Systems
Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao
University of Delaware
![Page 2: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/2.jpg)
Why a new dataflow programming language?
2
![Page 3: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/3.jpg)
Why a new dataflow programming language?
3
![Page 4: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/4.jpg)
Why a new dataflow programming language?
4
![Page 5: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/5.jpg)
Why a new dataflow programming language?
5
Arbitrary dataflow graph with multiple input/output operators Beyond static mapping True asynchronous processing
Primitive and compositional coding Code reuse: using subgraph template Easy to construct dataflow graph: using explicit
variable/name passing to connect the computation node
Efficiency under dynamic program configurations Automatic software pipelining Optimized resource allocation and mapping
![Page 6: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/6.jpg)
COStream Programming Language
Multiple I/O Operators VS Single I/O Operator
6
Fork-join style dataflow graph in Streamit with single input/output and split-join structure
Arbitrary Dataflow graph in COSTream with multiple Input/Output Operator and stream
Split
Join
![Page 7: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/7.jpg)
COStream Programming Language
composite Connect operators to construct a dataflow
subgraph
Can be instantiated to reuse the code to explore the parallelism
![Page 8: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/8.jpg)
COStream Programming Language
8
composite Main(){
graph stream<float x> S=A(){…}
stream<float x> T=B(){…}
stream<float x> P=C(T,S){…}}
A B
C
Stream variable and dataflow graph construct
Split
A B
Join
C
StreamIt: Introduce useless split-join nodes which makes programming hard
and brings the overhead
Costream: Easy to construct and make it simple
![Page 9: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/9.jpg)
Example: Moving Average
9
Average
…
N
1
Source
Sink
composite Main(){ Int N=10; graph stream<float x> S=Source(){ int x; init{x=0;} work{ S[0].x=x; x++; }//initialize an instance of compositeMovAve stream<float x> P=MovAver(S)(N); Sink(P){ work{ print(P[0].x); } }}
composite MovAver(output O, input rawIn){ param int N; graph stream<float x> O=Aver(rawIn){ float w[N]; init{ for(i=0;i<N;i++) w[i]=i;} work{ int sum=0, i; for(i=0;i<N;i++) sum += rawIn[i].x*w[i]; O[0].i=sum/N; } window{ rawIn sliding(N,1) O tumbling(1);}}}
Sliding Window
tumblingWindow
![Page 10: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/10.jpg)
Example: Moving Average
10
Average
…
N
1
Source
Sink
composite Main(){ Int N=10; graph stream<float x> S=Source(){ int x; init{x=0;} work{ S[0].x=x; x++; }//initialize an instance of composite
MovAve stream<float x> P=MovAver(S)(N); Sink(P){ work{ print(P[0].x); } }}
composite MovAver(output O, input rawIn){ param int N; graph stream<float x> O=Aver(rawIn){ float w[N]; init{ for(i=0;i<N;i++) w[i]=i;} work{ int sum=0, i; for(i=0;i<N;i++) sum += rawIn[i].x*w[i]; O[0].i=sum/N; } window{ rawIn sliding(N,1) O tumbling(1);}}}
Sliding Window
tumblingWindow
![Page 11: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/11.jpg)
Example: Moving Average
11
Average
…
N
1
Source
Sink
composite Main(){ Int N=10; graph stream<float x> S=Source(){ int x; init{x=0;} work{ S[0].x=x; x++; }//initialize an instance of compositeMovAve stream<float x> P=MovAver(S)(N); Sink(P){ work{ print(P[0].x); } }}
composite MovAver(output O, input rawIn){ param int N; graph stream<float x> O=Aver(rawIn){ float w[N];
init{ for(i=0;i<N;i++) w[i]=i;} work{ int sum=0, i; for(i=0;i<N;i++) sum += rawIn[i].x*w[i]; O[0].i=sum/N; } window{ rawIn sliding(N,1) O tumbling(1);}}}
Sliding Window
tumblingWindow
![Page 12: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/12.jpg)
Example: Moving Average
12
Average
…
N
1
Source
Sink
composite Main(){ Int N=10; graph stream<float x> S=Source(){ int x; init{x=0;} work{ S[0].x=x; x++; }//initialize an instance of compositeMovAve stream<float x> P=MovAver(S)(N); Sink(P){ work{ print(P[0].x); } }}
composite MovAver(output O, input rawIn){ param int N; graph stream<float x> O=Aver(rawIn){ float w[N]; init{ for(i=0;i<N;i++) w[i]=i;}
work{ int sum=0, i; for(i=0;i<N;i++) sum += rawIn[i].x*w[i]; O[0].i=sum/N; } window{ rawIn sliding(N,1) O tumbling(1);}}}
Sliding Window
tumblingWindow
![Page 13: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/13.jpg)
Example: Moving Average
13
Average
…
N
1
Source
Sink
composite Main(){ Int N=10; graph stream<float x> S=Source(){ int x; init{x=0;} work{ S[0].x=x; x++; }//initialize an instance of compositeMovAve stream<float x> P=MovAver(S)(N); Sink(P){ work{ print(P[0].x); } }}
composite MovAver(output O, input rawIn){ param int N; graph stream<float x> O=Aver(rawIn){ float w[N]; init{ for(i=0;i<N;i++) w[i]=i;} work{ int sum=0, i; for(i=0;i<N;i++) sum += rawIn[i].x*w[i]; O[0].i=sum/N; }
window{ rawIn sliding(N,1) O tumbling(1);}}}
Sliding Window
tumblingWindow
![Page 14: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/14.jpg)
Compiler Framework
14
Front-endLexer, parser and
construct AST
MIR Construct stream graph from AST
Symbol Execute Initial && Periodic
schedule of SG
Optimization• Parallel
exploring• Buffer
allocation• Synchronizatio
n
Code Generation
Runtime
System Lo
w-level
c/c++
co
mp
iler
Multi/Many-core
A C
B
D
E Synchronization Data Flow
COStream program
![Page 15: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/15.jpg)
Software Pipelining
15
A021
A121
B09
B19
B29
Core1 Core2
Core3
Step1:Task Assignment
![Page 16: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/16.jpg)
Software Pipelining
Stage1
Stage0
A021
A121
B09
B19
B29
Step2:Stage Assignment
![Page 17: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/17.jpg)
Software Pipelining
17
Tim
e
B0
B1
B2
Core1 Core2 Core3
A0 A1
B0
B1
B2
A0 A1
A0 A1
…
Software Pipelining
Barrier
![Page 18: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/18.jpg)
![Page 19: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/19.jpg)
![Page 20: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/20.jpg)
Ongoing Research
Compilation Software Pipelining within codelets
BackendCurrently using pthreadWill use Fresh Breeze runtime
20
![Page 21: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/21.jpg)
Ongoing Research (cont’d)
RuntimeCurrently re-optimize for every new
configurationGraceful transition between
configurations
21
![Page 22: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/22.jpg)
Transition between configurations
22
![Page 23: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/23.jpg)
Transition between configurations
23
![Page 24: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/24.jpg)
Transition between configurations
24
![Page 25: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/25.jpg)
Transition between configurations
25
![Page 26: A Dataflow Programming Language and Its Compiler for Streaming Systems Haitao Wei, Stephane Zuckerman, Xiaoming Li, and Guang Gao University of Delaware](https://reader035.vdocuments.mx/reader035/viewer/2022070411/56649c7c5503460f949314ec/html5/thumbnails/26.jpg)
Acknowledgements
AFOSR FA9550-13-1-0213
NSF CCF-0925863, CCF-0937907 and OCI-0904534
26