EECS 144/244: Fundamental Algorithms for System Modeling, Analysis, and Optimization Dataflow Lecture: SDF, Kahn Process Networks Stavros Tripakis University of California, Berkeley Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 1 / 52
Dataflow: Meanings and Origins Dataflow: generic term in computer science, with multiple meanings common theme: data flowing through some computing network this course: asynchronous processes communicating via FIFO queues Multiple origins: Computer architecture: dataflow (vs. von Neumann) architectures for efficient, parallel computing Note: HW is dataflow in any case Signal processing (c.f. SDF) Foundations of distributed systems (c.f. Kahn Process Networks)... possibly others... Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 2 / 52
Synchronous Data Flow 1 (SDF) One of the most basic dataflow models Proposed in 1987 [Lee and Messerschmitt, 1987] Widely used: mainly in signal-processing applications Many many variants: SDF, CSDF, HSDF, SADF,... Semantics: untimed, timed, probabilistic untimed variants can be used for checking correctness of the system (e.g., consistency, deadlocks), and for design-space exploration (e.g., buffer sizing) timed variants can be used for performance analysis: worst-case or, in the case of probabilistic models, average-case We look first at untimed, then at timed SDF 1 a better (and sometimes used) term is Static Data Flow Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 3 / 52
UNTIMED SDF Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 4 / 52
(Untimed) SDF 1 α 2 3 β 1 A B C An SDFG (SDF Graph) A, B, C: dataflow actors 1, 2, 3,...: token production/consumption rates α, β: (a-priori unbounded) FIFO queues (channels) each channel has unique producer/consumer abstract from token values FIFO property ignored Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 5 / 52
(Untimed) SDF A 1 α 2 B 3 β 1 C 2 An SDFG (SDF Graph) A, B, C: dataflow actors 1, 2, 3,...: token production/consumption rates α, β: (a-priori unbounded) FIFO queues (channels) each channel has unique producer/consumer abstract from token values FIFO property ignored Channels can have initial tokens Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 5 / 52
(Untimed) SDF A 1 α 2 B 3 β 1 C 2 An SDFG (SDF Graph) A, B, C: dataflow actors 1, 2, 3,...: token production/consumption rates α, β: (a-priori unbounded) FIFO queues (channels) each channel has unique producer/consumer abstract from token values FIFO property ignored Channels can have initial tokens Behavior (intuition): A: can fire at any time; it produces 1 token every time it fires B: needs 2 tokens in order to fire; it consumes 2 tokens and produces 3 tokens every time it fires; C: needs 1 token in order to fire; it consumes 1 token each time it fires. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 5 / 52
SDF Formal Semantics (sketch) A 1 α 2 B 3 β 1 C 2 An SDFG defines a labeled transition system: State = a vector describing how many tokens are in every channel Note: tokens have no value FIFO property irrelevant Initial state (unique): determined by initial tokens E.g., (α : 2, β : 1) in example above Transitions: if actor A consumes c A tokens from α i and produces p A tokens to α j, and k i c A, then the following transition is possible: (k 1,..., k i,..., k j,..., k n ) A (k 1,..., k i c A,..., k j + p A,..., k n ) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 6 / 52
Example 1 α 2 3 β 1 A B C This SDFG defines the following LTS: (0, 0)
Example 1 α 2 3 β 1 A B C This SDFG defines the following LTS: (0, 0) A (1, 0)
Example 1 α 2 3 β 1 A B C This SDFG defines the following LTS: (0, 0) A (1, 0) A (2, 0)
Example 1 α 2 3 β 1 A B C This SDFG defines the following LTS: (0, 0) A (1, 0) A (2, 0) A (3, 0) A (4, 0)
Example 1 α 2 3 β 1 A B C This SDFG defines the following LTS: (0, 0) A (1, 0) A (2, 0) A (3, 0) A (4, 0) B (0, 3)
Example 1 α 2 3 β 1 A B C This SDFG defines the following LTS: (0, 0) A (1, 0) A (2, 0) A (3, 0) A (4, 0) B (0, 3) A A (1, 3) (2, 3) C (0, 2) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 7 / 52
Example 1 α 2 3 β 1 A B C Observe: There exist behaviors where queues grow unbounded Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 8 / 52
Example 1 α 2 3 β 1 A B C Observe: There exist behaviors where queues grow unbounded But there are also behaviors where this doesn t happen and all actors keep firing Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 8 / 52
Example 1 α 2 3 β 1 A B C Observe: There exist behaviors where queues grow unbounded But there are also behaviors where this doesn t happen and all actors keep firing These are the behaviors we want Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 8 / 52
Example 1 α 2 3 β 1 A B C Observe: There exist behaviors where queues grow unbounded But there are also behaviors where this doesn t happen and all actors keep firing These are the behaviors we want Some can be represented by periodic schedules: (AABCCC) ω Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 8 / 52
Example 1 α 2 3 β 1 A B C Observe: There exist behaviors where queues grow unbounded But there are also behaviors where this doesn t happen and all actors keep firing These are the behaviors we want Some can be represented by periodic schedules: (AABCCC) ω Can we always find such schedules? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 8 / 52
SDF: Deadlock A 1 1 2 1 2 B Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 9 / 52
SDF: Deadlock A 1 1 2 1 2 B Behavior deadlocks! (0, 2) A (1, 0) B (0, 1) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 9 / 52
SDF: Unbounded Behavior 2 1 A 1 1 B Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 10 / 52
SDF: Unbounded Behavior 2 1 A 1 1 B Queues keep growing! (0, 1) A (2, 0) B (1, 1) B (0, 2) A (2, 1) B (1, 2) B (0, 3) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 10 / 52
Balance Equations and Repetition Vectors 2 1 A 1 1 B Balance equations: For each channel: tokens produced = tokens consumed initial tokens don t matter for balance equations q A 2 = q B 1 // equation for channel A B q B 1 = q A 1 // equation for channel B A q A : number of times actor A fires Solution to balance equations is called repetition vector Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 11 / 52
Balance Equations and Repetition Vectors 2 1 A 1 1 B q A = 2q A q B = q A Only trivial solution (always exists): q A = q B = 0 SDF graph is called inconsistent Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 12 / 52
Balance Equations and Repetition Vectors Another example: 3 6 A 2 4 5 B 3q A = 6q B // equation for channel A B 2q A = 4q B // equation for channel B A Non-zero solution: q B = 1, q A = 2q B = 2 Any multiple is also a solution SDF graph is called consistent Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 13 / 52
Balance Equations and Repetition Vectors Another example: 3 6 A 2 4 5 B 3q A = 6q B // equation for channel A B 2q A = 4q B // equation for channel B A Non-zero solution: q B = 1, q A = 2q B = 2 Any multiple is also a solution SDF graph is called consistent Does consistency imply no deadlock? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 13 / 52
Consistency vs. Deadlock Consistency absence of deadlock: 1 1 A 1 1 B Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 14 / 52
Consistency vs. Deadlock Consistency absence of deadlock: 1 1 A 1 1 B Absence of deadlock consistency: 2 1 A 1 1 B Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 14 / 52
SDF Consistency Can chain SDFGs be inconsistent? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 15 / 52
SDF Consistency Can chain SDFGs be inconsistent? No. Can tree SDFGs be inconsistent? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 15 / 52
SDF Consistency Can chain SDFGs be inconsistent? No. Can tree SDFGs be inconsistent? No. Can arbitrary DAGs be inconsistent? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 15 / 52
SDF Consistency Can chain SDFGs be inconsistent? No. Can tree SDFGs be inconsistent? No. Can arbitrary DAGs be inconsistent? Yes: 2 1 A 1 1 B Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 15 / 52
Solving Balance Equations 1 1 2 1 A B C 2 1 Balance equations rewritten: let a = q A, b = q B, c = q C : in matrix form: a b = 0 2b c = 0 2a +c = 0 1 1 0 0 2 1 2 0 1 a b c = 0 Balance equations can be solved efficiently e.g., by Gaussian elimination Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 16 / 52
Checking for Deadlock Consistency absence of deadlocks: 1 1 A 1 1 B How to check whether a given SDF graph deadlocks? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 17 / 52
Checking for Deadlock Consistency absence of deadlocks: 1 1 A 1 1 B How to check whether a given SDF graph deadlocks? 1. Check consistency: if consistent, compute non-zero repetition vector q 2. Simulate execution of SDFG, firing actors no more times than what q specifies ( termination) if manage to complete execution then no deadlock: periodic schedule has been found otherwise: SDFG deadlocks Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 17 / 52
Checking for Deadlock: Example 1 1 A 1 1 B 1. Graph consistent: q A = q B = 1 2. Simulate execution: from initial channel state (0, 0) no firing possible SDFG deadlocks Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 18 / 52
Checking for Deadlock: Another Example A 2 1 2 2 1 B 1. Graph consistent: q A = 1, q B = 2 2. Simulate execution (firing A at most once, B twice): (2, 0) B (1, 1) SDFG is deadlock-free schedule: (BBA) ω B (0, 2) A (2, 0) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 19 / 52
Interesting Questions on Deadlock-Checking Algorithm Why is it enough to stop after one repetition vector? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 20 / 52
Interesting Questions on Deadlock-Checking Algorithm Why is it enough to stop after one repetition vector? channel state after one repetition = initial channel state same execution can be repeated forever Does the order in which actors are fired during simulation matter? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 20 / 52
Interesting Questions on Deadlock-Checking Algorithm Why is it enough to stop after one repetition vector? channel state after one repetition = initial channel state same execution can be repeated forever Does the order in which actors are fired during simulation matter? No. Deep result: c.f. Kahn Process Networks Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 20 / 52
KAHN PROCESS NETWORKS Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 21 / 52
Kahn Process Networks Can be seen as generalization of SDF although Kahn s work [Kahn, 1974] pre-dates SDF [Lee and Messerschmitt, 1987] by more than 10 years Kahn s motivation: distributed systems / parallel programming Main idea: generalize dataflow actors to Kahn processes Kahn process: an arbitrary sequential program reading from and writing to queues read is blocking (Kahn called it wait): if queue is empty, process blocks until queue becomes non-empty write is non-blocking (Kahn called it send): queues are a-priori unbounded as in SDF Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 22 / 52
Kahn Process Networks Can be seen as generalization of SDF although Kahn s work [Kahn, 1974] pre-dates SDF [Lee and Messerschmitt, 1987] by more than 10 years Kahn s motivation: distributed systems / parallel programming Main idea: generalize dataflow actors to Kahn processes Kahn process: an arbitrary sequential program reading from and writing to queues read is blocking (Kahn called it wait): if queue is empty, process blocks until queue becomes non-empty write is non-blocking (Kahn called it send): queues are a-priori unbounded as in SDF Highly recommended reading: [Kahn, 1974] (on bspace). Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 22 / 52
Kahn Process Network: Example Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 23 / 52
SDF Actors are a special case of Kahn Processes SDF actor: 2 A 3 Corresponding Kahn process: Process A(integer in U; integer out V); Begin integer I1, I2, R1, R2, R3; Repeat Begin I1 := wait(u); I2 := wait(u);... compute R1, R2, R3... send R1 on V; send R2 on V; send R3 on V; end; End; Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 24 / 52
Kahn Processes are more general than SDF actors In SDF, token production/consumption rates are static: 2 A 3 In Kahn processes, they are dynamic: Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 25 / 52
SDF Graphs are a special case of Kahn Process Networks Kahn process network: Begin Integer channel X; SDFG: A 1 1 2 B Process A(integer out V); Begin integer R1, R2, R;... compute initial tokens R1, R2... send R1 on V; send R2 on V; Repeat Begin... compute R... send R on V; end; End; Process B(integer in U);... End; /* main: */ A(X) par B(X) End; Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 26 / 52
Semantics of Kahn Process Networks We can give both operational and denotational semantics. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 27 / 52
Operational vs. Denotational Semantics What is the meaning of a (say, C) program? Operational semantics answer: the sequence of steps that the program takes to compute its output from its input Denotational semantics answer: a function f that returns the right output for a given input Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 28 / 52
Semantics of Kahn Process Networks Operational semantics: KPN defines a transition system (similar to the SDF semantics we defined above) global state = local states (local vars, program counters,...) of each process + contents of all queues transition: one process makes a move must define some kind of atomic moves for processes: for instance, one statement in the sequential program asynchronous (interleaving) semantics (c.f. Spin) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 29 / 52
Semantics of Kahn Process Networks Operational semantics: KPN defines a transition system (similar to the SDF semantics we defined above) global state = local states (local vars, program counters,...) of each process + contents of all queues transition: one process makes a move must define some kind of atomic moves for processes: for instance, one statement in the sequential program asynchronous (interleaving) semantics (c.f. Spin) Denotational semantics: this is what we will focus on next. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 29 / 52
Denotational Semantics of Kahn Process Networks General idea: Each process = a function on streams An entire (closed) network = a (big) function on (vectors of) streams Semantics = the stream computed by the network at every queue Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 30 / 52
Denotational Semantics of Kahn Process Networks General idea: Each process = a function on streams An entire (closed) network = a (big) function on (vectors of) streams Semantics = the stream computed by the network at every queue Major benefits: Can handle feedback loops in an elegant manner: fixpoint theory Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 30 / 52
Denotational Semantics of Kahn Process Networks General idea: Each process = a function on streams An entire (closed) network = a (big) function on (vectors of) streams Semantics = the stream computed by the network at every queue Major benefits: Can handle feedback loops in an elegant manner: fixpoint theory Determinacy: network has a unique solution In terms of operational semantics: order of interleaving does not matter (as long as it is fair) Example: if one execution deadlocks, all executions deadlock Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 30 / 52
Streams Stream = a finite or infinite sequence of values. D: set of values D : set of all finite sequences of values from D D ω : set of all infinite sequences of values from D D = D D ω Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 31 / 52
Streams Stream = a finite or infinite sequence of values. D: set of values D : set of all finite sequences of values from D This includes the empty sequence ε D ω : set of all infinite sequences of values from D D = D D ω Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 31 / 52
Streams Stream = a finite or infinite sequence of values. D: set of values D : set of all finite sequences of values from D This includes the empty sequence ε D ω : set of all infinite sequences of values from D Note: D ω = D N = set of all total functions from N to D D = D D ω Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 31 / 52
Streams: Examples Let D = {0, 1}. Consider the streams: 0 D Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 32 / 52
Streams: Examples Let D = {0, 1}. Consider the streams: 0 D 00000 = 0 5 D Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 32 / 52
Streams: Examples Let D = {0, 1}. Consider the streams: 0 D 00000 = 0 5 D 010101 = (01) ω D ω Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 32 / 52
Streams: Examples Let D = {0, 1}. Consider the streams: 0 D 00000 = 0 5 D 010101 = (01) ω D ω 0100100010 4 10 5 1 D ω Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 32 / 52
Prefix Order on Streams Let s s denote stream concatenation: if s = ε, then s s = s (s could be infinite in this case) if s ε, then s must be finite (s could be finite or infinite) s 1 is a prefix of s 2, denoted s 1 s 2, iff s 3 : s 2 = s 1 s 3 Note that s 3 may be the empty string, in which case s 1 = s 2 so s s for any stream s Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 33 / 52
Prefix Order on Streams Let s s denote stream concatenation: if s = ε, then s s = s (s could be infinite in this case) if s ε, then s must be finite (s could be finite or infinite) s 1 is a prefix of s 2, denoted s 1 s 2, iff s 3 : s 2 = s 1 s 3 Note that s 3 may be the empty string, in which case s 1 = s 2 so s s for any stream s Examples: 000 0001 Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 33 / 52
Prefix Order on Streams Let s s denote stream concatenation: if s = ε, then s s = s (s could be infinite in this case) if s ε, then s must be finite (s could be finite or infinite) s 1 is a prefix of s 2, denoted s 1 s 2, iff s 3 : s 2 = s 1 s 3 Note that s 3 may be the empty string, in which case s 1 = s 2 so s s for any stream s Examples: 000 0001 000 0001 ω Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 33 / 52
Prefix Order on Streams Let s s denote stream concatenation: if s = ε, then s s = s (s could be infinite in this case) if s ε, then s must be finite (s could be finite or infinite) s 1 is a prefix of s 2, denoted s 1 s 2, iff s 3 : s 2 = s 1 s 3 Note that s 3 may be the empty string, in which case s 1 = s 2 so s s for any stream s Examples: 000 0001 000 0001 ω 000 0010 Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 33 / 52
Prefix Order on Streams Let s s denote stream concatenation: if s = ε, then s s = s (s could be infinite in this case) if s ε, then s must be finite (s could be finite or infinite) s 1 is a prefix of s 2, denoted s 1 s 2, iff s 3 : s 2 = s 1 s 3 Note that s 3 may be the empty string, in which case s 1 = s 2 so s s for any stream s Examples: 000 0001 000 0001 ω 000 0010 000 = 0 ω 10 ω = 1000 Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 33 / 52
Partial Orders Possible definitions of partial orders: is a partial order iff it is: reflexive : s : s s antisymmetric : s, s : s s s s s = s transitive : s, s, s : s s s s s s < is a partial order iff it is: irreflexive : s : s s transitive : s, s, s : s < s s < s s < s The definitions are equivalent in the sense that from we can get < and vice-versa. How? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 34 / 52
Partial Orders Possible definitions of partial orders: is a partial order iff it is: reflexive : s : s s antisymmetric : s, s : s s s s s = s transitive : s, s, s : s s s s s s < is a partial order iff it is: irreflexive : s : s s transitive : s, s, s : s < s s < s s < s The definitions are equivalent in the sense that from we can get < and vice-versa. How? Given, define < := {(a, b) a b a b}. Given <, define := {(a, b) a < b a = b}. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 34 / 52
Prefix Order on Streams is a partial order on D, i.e., it is reflexive : s : s s antisymmetric : s, s : s s s s s = s transitive : s, s, s : s s s s s s Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 35 / 52
Prefix Order on Streams is a partial order on D, i.e., it is reflexive : s : s s antisymmetric : s, s : s s s s s = s transitive : s, s, s : s s s s s s The pair (D, ) is a poset (partially-ordered set). In fact, it is a CPO (a complete poset) because it also satisfies for any increasing chain s 0 s 1 s 2 : lim n s n is in D Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 35 / 52
Prefix Order on Streams is a partial order on D, i.e., it is reflexive : s : s s antisymmetric : s, s : s s s s s = s transitive : s, s, s : s s s s s s The pair (D, ) is a poset (partially-ordered set). In fact, it is a CPO (a complete poset) because it also satisfies for any increasing chain s 0 s 1 s 2 : lim n s n is in D It has a least element (which one is it?) such that s : s. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 35 / 52
Prefix Order on Streams is a partial order on D, i.e., it is reflexive : s : s s antisymmetric : s, s : s s s s s = s transitive : s, s, s : s s s s s s The pair (D, ) is a poset (partially-ordered set). In fact, it is a CPO (a complete poset) because it also satisfies for any increasing chain s 0 s 1 s 2 : lim n s n is in D It has a least element (which one is it?) such that s : s. = ε (the empty sequence) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 35 / 52
Functions on Streams Function on streams (single-input / single-output): f : D D Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 36 / 52
Functions on Streams Function on streams (single-input / single-output): f : D D Function on streams (general): f : (D ) n (D ) m s 1. s n f s 1. s m Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 36 / 52
Kahn Processes = Functions on Streams s 1 s 1 s 1 s 1. P. = f P.. s n s m s n s m Basic idea: Fix the contents of input queues to s 1,..., s n. Let the process P run. Observe the contents of output queues: s 1,..., s m. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 37 / 52
Kahn Processes = Functions on Streams s 1 s 1 s 1 s 1. P. = f P.. s n s m s n s m Basic idea: Fix the contents of input queues to s 1,..., s n. Let the process P run. Observe the contents of output queues: s 1,..., s m. Notice that Kahn processes are deterministic programs. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 37 / 52
Monotonic Functions on Streams A stream function f : D D is monotonic (w.r.t. ) iff s, s D : s s f(s) f(s ) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 38 / 52
Monotonic Functions on Streams A stream function f : D D is monotonic (w.r.t. ) iff s, s D : s s f(s) f(s ) Stream functions defined by Kahn processes are monotonic. Why? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 38 / 52
Monotonic Functions on Streams A stream function f : D D is monotonic (w.r.t. ) iff s, s D : s s f(s) f(s ) Stream functions defined by Kahn processes are monotonic. Why? Once something is written to an output queue, it cannot be taken back. More inputs more outputs. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 38 / 52
Continuous Functions on Streams A stream function f : D D is continuous (w.r.t. ) if f is monotonic and for any increasing chain s 0 s 1 s 2 f( lim n s n) = lim n f(s n) Note: by monotonicity of f, and the fact that s 0 s 1 s 2 is a chain, f(s 0 ) f(s 1 ) f(s 2 ) is also a chain, so is well-defined. lim f(s n) n Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 39 / 52
Continuous Functions on Streams By definition continuity implies monotonicity. 2 But: monotonicity does not generally imply continuity. Quiz: Can you think of a non-monotonic stream function? a non-continuous stream function? a monotonic but non-continuous stream function? 2 Alternative definitions of continuity exist that imply monotonicity. See good textbook on order theory: [Davey and Priestley, 2002]. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 40 / 52
Continuous Functions on Streams Stream functions defined by Kahn processes are continuous. Quiz: Why? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 41 / 52
Continuous Functions on Streams Stream functions defined by Kahn processes are continuous. Quiz: Why? Kahn processes cannot take forever to produce an output. Every output they produce must be produced because of the finite sequence of inputs the process has read so far. If for all finite sequences the process produces no outputs, then the process produces no outputs at all, even for the infinite sequence. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 41 / 52
Monotonic and Continuous Functions on Streams The notions of monotonicity and continuity extend to functions of arbitrary arity: f : (D ) n (D ) m Basic idea: Lift to vectors element-wise iff (s 1, s 2,..., s n ) (s 1, s 2,..., s n) s 1 s 1 s 2 s 2 s n s n Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 42 / 52
Fixpoint Theorem Theorem A continuous function f : (D ) n (D ) n has a least fixpoint s. Moreover, s = lim n f n (ε, ε,..., ε). Least fixpoint s means: s is a fixpoint: f(s) = s. s is a least fixpoint: for any other fixpoint s = f(s ), s s. Note: least implies s is unique. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 43 / 52
Fixpoint Theorem Theorem A continuous function f : (D ) n (D ) n has a least fixpoint s. Moreover, s = lim n f n (ε, ε,..., ε). Least fixpoint s means: s is a fixpoint: f(s) = s. s is a least fixpoint: for any other fixpoint s = f(s ), s s. Note: least implies s is unique. How is s related to the semantics of Kahn process networks? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 43 / 52
From Process Network to Fixpoint Equations s 1 f 1 f 2 P 1 P 2 process network = s 2 fixpoint equations s 1 = f 1 (s 2 ) s 2 = f 2 (s 1 ) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 44 / 52
From Process Network to Fixpoint Equations s 1 f 1 f 2 P 1 P 2 process network Can be rewritten as: = s 2 fixpoint equations s 1 = f 1 (s 2 ) s 2 = f 2 (s 1 ) (s 1, s 2 ) = f(s 1, s 2 ) where f : (D ) 2 (D ) 2 is defined as: f(s 1, s 2 ) = ( f 1 (s 2 ), f 2 (s 1 ) ) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 44 / 52
Putting it all together The denotational semantics of the Kahn process network P 1 P 2 = f 1 f 2 s 1 s 2 is the unique least fixpoint (s 1, s 2 ) of the set of equations: s 1 = f 1 (s 2 ) s 2 = f 2 (s 1 ) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 45 / 52
Example: denotational semantics of SDF graphs 1 1 A 1 1 B Viewing A and B as functions on streams of tokens: A(ε) = B(ε) = ε A( ) = B( ) = A( ) = B( ) = A( ) = B( ) = Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 46 / 52
Example: denotational semantics of SDF graphs 1 1 A 1 1 B Viewing A and B as functions on streams of tokens: A(ε) = B(ε) = ε A( ) = B( ) = A( ) = B( ) = A( ) = B( ) = Computing the fixpoint: f(ε, ε) = (A(ε), B(ε)) = (ε, ε) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 46 / 52
Example: denotational semantics of SDF graphs A 2 1 2 2 1 B Viewing A as a function on streams of tokens (B is as before): A(ε) = // this captures initial tokens A( ) = A( ) = A( ) = A( ) = Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 47 / 52
Example: denotational semantics of SDF graphs A 2 1 2 2 1 B Viewing A as a function on streams of tokens (B is as before): A(ε) = // this captures initial tokens A( ) = A( ) = A( ) = A( ) = Computing the fixpoint: f(ε, ε) = (A(ε), B(ε)) = (, ε) f(, ε) = (A(ε), B( )) = (, ) f(, ) = (A( ), B( )) = (, )... fixpoint is ( ω, ω ). Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 47 / 52
Assessment Why get excited about Kahn process networks? Elegant mathematics (to compare, try to define formal operational semantics, or see papers that do that, e.g., [Lynch and Stark, 1989, Jonsson, 1994]) Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 48 / 52
Assessment Why get excited about Kahn process networks? Elegant mathematics Caveats: (to compare, try to define formal operational semantics, or see papers that do that, e.g., [Lynch and Stark, 1989, Jonsson, 1994]) Still need to relate denotational to some operational semantics, to convince ourselves that they are equivalent [Lynch and Stark, 1989, Jonsson, 1994]. Framework difficult to extend to non-deterministic processes c.f. famous Brock-Ackerman anomaly and related literature [Brock and Ackerman, 1981, Jonsson, 1994] Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 48 / 52
Assessment Why get excited about Kahn process networks? Foundations of asynchronous message-passing paradigm. Deterministic concurrency. Writing/debugging concurrent programs made easier. Contrast this to threads [Lee, 2006]. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 49 / 52
Assessment Why get excited about Kahn process networks? Foundations of asynchronous message-passing paradigm. Deterministic concurrency. Writing/debugging concurrent programs made easier. Contrast this to threads [Lee, 2006]. How is determinism achieved in Kahn Process Networks? No shared memory! Channels have unique writer/reader processes. Blocking read. No peeking into input queues allowed, no removing data already written into output queues, etc. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 49 / 52
Assessment Why get excited about Kahn process networks? Foundations of asynchronous message-passing paradigm. Deterministic concurrency. Writing/debugging concurrent programs made easier. Contrast this to threads [Lee, 2006]. How is determinism achieved in Kahn Process Networks? No shared memory! Channels have unique writer/reader processes. Blocking read. No peeking into input queues allowed, no removing data already written into output queues, etc. Criticism: KPN use infinite queues but these do not exist in reality. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 49 / 52
Assessment Why get excited about Kahn process networks? Foundations of asynchronous message-passing paradigm. Deterministic concurrency. Writing/debugging concurrent programs made easier. Contrast this to threads [Lee, 2006]. How is determinism achieved in Kahn Process Networks? No shared memory! Channels have unique writer/reader processes. Blocking read. No peeking into input queues allowed, no removing data already written into output queues, etc. Criticism: KPN use infinite queues but these do not exist in reality. Answer: finite queues can easily be modeled in KPN (also in SDF). How? Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 49 / 52
Modeling Finite Queues with Backward Channels P 1 1 1 queue of size k P 2 1 1 = P 1 P 2 1 k 1 Each time P 1 needs to write, it must first remove a token from the backward channel. If there are no tokens left then it means that the (forward) queue is full. Each time P 2 reads, it puts a token into the backward channel. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 50 / 52
Kahn Process Networks vs. Petri Nets [Ignore if you don t know what Petri nets are] Petri nets: More abstract model: processes = transitions. Non-deterministic: Each place can have many incoming / outgoing transitions. Each place may be shared by multiple producers / consumers. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 51 / 52
Bibliography Brock, J. and Ackerman, W. (1981). Scenarios: A model of non-determinate computation. In Proc. Intl. Colloq. on Formalization of Programming Concepts, pages 252 259, London, UK. Springer-Verlag. Davey, B. A. and Priestley, H. A. (2002). Introduction to Lattices and Order. Cambridge University Press, 2nd edition. Jonsson, B. (1994). Compositional specification and verification of distributed systems. ACM Trans. Program. Lang. Syst., 16(2):259 303. Kahn, G. (1974). The semantics of a simple language for parallel programming. In Information Processing 74, Proceedings of IFIP Congress 74. North-Holland. Lee, E. (2006). The problem with threads. IEEE Computer, 39(5):33 42. Lee, E. and Messerschmitt, D. (1987). Synchronous data flow. Proceedings of the IEEE, 75(9):1235 1245. Lynch, N. and Stark, E. (1989). A Proof of the Kahn Principle for Input/Output Automata. Information and Computation, 82:81 92. Stavros Tripakis: EECS 144/244 Dataflow SDF, Kahn Process Networks 52 / 52