CPEG 852 Advanced Topics in Computing Systems The Dataflow Model of Computation

Similar documents
CPEG 852 Advanced Topics in Computing Systems The Dataflow Model of Computation

Topic 4b Program Execution Models Dataflow Model of Computation: A Fine-Grain Kind of PXM. CPEG421/621: Compiler Design

Topic B (Cont d) Dataflow Model of Computation

Portland State University ECE 588/688. Dataflow Architectures

Dennis [1] developed the model of dataflowschemas, building on work by Karp and Miller [2]. These dataflow graphs, as they were later called, evolved

Topic C Memory Models

History Importance Comparison to Tomasulo Demo Dataflow Overview: Static Dynamic Hybrids Problems: CAM I-Structures Potential Applications Conclusion

Computer Architecture: Dataflow/Systolic Arrays

Architecture and Programming Model for High Performance Interactive Computation

Dataflow Architectures. Karin Strauss

Concurrent Models of Computation

Multi-Paradigm Approach for Teaching Programming

--(1977b), 'Finite State Machine Theory and Program Design: A Survey', Computer Studies Quarterly, 1, to be published.

Introduction to Asynchronous Circuits and Systems

On the correctness of template metaprograms

CPEG 421/621 - Spring 2008

Computer Architecture

Computer Architecture Lecture 15: Load/Store Handling and Data Flow. Prof. Onur Mutlu Carnegie Mellon University Spring 2014, 2/21/2014

Parallel Programming Concepts. Theory of Concurrency - Multicomputer. Peter Tröger

Leslie Lamport. April 20, Leslie Lamport. Jenny Tyrväinen. Introduction. Education and Career. Most important works.

Dataflow Processing. A.R. Hurson Computer Science Department Missouri Science & Technology

Interface Automata and Actif Actors

Interval Algorithms for Coin Flipping

Static Scheduling and Code Generation from Dynamic Dataflow Graphs With Integer- Valued Control Streams

Computer Architecture Today (I)

Dynamic Dataflow. Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology

Introduction to Electronic Design Automation. Model of Computation. Model of Computation. Model of Computation

Well-behaved Dataflow Graphs

Provably Efficient Non-Preemptive Task Scheduling with Cilk

A General Purpose Queue Architecture for an ATM Switch

EE/CSCI 451: Parallel and Distributed Computation

Coursework Master s Thesis Proposal

HPS, A NEW MICROARCHITECTURE: RATIONALE AND INTRODUCTION

Software Synthesis from Dataflow Models for G and LabVIEW

REAL-TIME OBJECT-ORIENTED DESIGN AND FORMAL METHODS

Memory optimisation in a first-order dataflow synchronous language

Data Flow Supercomputers

Fine-grained Software Version Control Based on a Program s Abstract Syntax Tree

Scenario-based Synthesis of Annotated Class Diagrams in UML

The Grid-Occam Project

Modeling Routing Constructs to Represent Distributed Workflow Processes Using Extended Petri Nets

Thesis Defense: Developing Real-Time Collaborative Editing Using Formal Methods

Nomair A. Naeem. Personal Data. Education. Teaching Experience. Course Instructor/Sessional

Functional Programming

Multicore DSP Software Synthesis using Partial Expansion of Dataflow Graphs

Comparisons of Efficient Implementations for DAWG

Computer Architecture Lecture 2: Fundamental Concepts and ISA. Prof. Onur Mutlu Carnegie Mellon University Spring 2014, 1/15/2014

Scannerless Boolean Parsing

Evaluation Scheme L T P Total Credit Theory Mid Sem Exam

AUTO GENERATION OF CODE AND TABLE TOOL

Identifying Parallelism in Construction Operations of Cyclic Pointer-Linked Data Structures 1

Formal Languages and Compilers Lecture I: Introduction to Compilers

Implementation of Process Networks in Java

USING TRANSFORMATIONS TO INTEGRATE TASK MODELS IN

Parallel Programming Concepts. Theory of Concurrency - Multicomputer. Peter Tröger

LLparse and LRparse: Visual and Interactive Tools for Parsing

Hierarchical FSMs with Multiple CMs

Functional Dependency: Design and Implementation of a Minimal Cover Algorithm

Typestate-Oriented Design

IR Lowering. Notation. Lowering Methodology. Nested Expressions. Nested Statements CS412/CS413. Introduction to Compilers Tim Teitelbaum

AN EFFICIENT IMPLEMENTATION OF NESTED LOOP CONTROL INSTRUCTIONS FOR FINE GRAIN PARALLELISM 1

Computer Architecture Lecture 14: Out-of-Order Execution. Prof. Onur Mutlu Carnegie Mellon University Spring 2013, 2/18/2013

Node Prefetch Prediction in Dataflow Graphs

The Imperative Paradigm

Why code complexity metrics fail on the C++ standard template library

THE COMPARISON OF PARALLEL SORTING ALGORITHMS IMPLEMENTED ON DIFFERENT HARDWARE PLATFORMS

ISSN: [Keswani* et al., 7(1): January, 2018] Impact Factor: 4.116

CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 19: Efficient IL Lowering 5 March 08

A Comparison of Relativistic and Reader-Writer Locking Approaches to Shared Data Access

Lecture 5. Data Flow Analysis

EECS 144/244: Fundamental Algorithms for System Modeling, Analysis, and Optimization

2 Approaches to worldwide web information retrieval

Fundamental Algorithms for System Modeling, Analysis, and Optimization

Advanced Slicing of Sequential and Concurrent Programs

CS 3304 Comparative Languages. Lecture 1: Introduction

Rate-Optimal Unfolding of Balanced Synchronous Data-Flow Graphs

John Clements Department of Computer Science Cal Poly State University 1 Grand Street San Luis Obispo, CA (805)

Flight Systems are Cyber-Physical Systems

An Object Oriented Runtime Complexity Metric based on Iterative Decision Points

Toward A Codelet Based Execution Model and Its Memory Semantics

Petri Nets ee249 Fall 2000

Imagine you ve written a piece of code but then accidentally deleted and lost it.

Role of Genetic Algorithm in Routing for Large Network

Post Graduate Diploma in Computer Applications I Semester INTERNAL ASSIGNMENT QUESTIONS (November, 2017)

Philadelphia University Faculty of Information Technology Department of Computer Science --- Semester, 2007/2008. Course Syllabus

Static Dataflow Graphs

EDUCATION RESEARCH EXPERIENCE

ALGORITHMIC DECIDABILITY OF COMPUTER PROGRAM-FUNCTIONS LANGUAGE PROPERTIES. Nikolay Kosovskiy

Ben Lee* and A. R. Hurson** *Oregon State University Department of Electrical and Computer Engineering Corvallis, Oregon

Dynamic Dataflow. Seminar on embedded systems

CONSTRUCTION AND EVALUATION OF MESHES BASED ON SHORTEST PATH TREE VS. STEINER TREE FOR MULTICAST ROUTING IN MOBILE AD HOC NETWORKS

PRO1-I2O23 - Programming I

Specifications Part 2

Computer Architecture: Out-of-Order Execution II. Prof. Onur Mutlu Carnegie Mellon University

Global Scheduler. Global Issue. Global Retire

Network Routing Protocol using Genetic Algorithms

Computer Architecture Lecture 12: Out-of-Order Execution (Dynamic Instruction Scheduling)

GRIP: A parallel graph reduction machine

Approaches of using UML for Embedded System Design

L9: Bridges and LAN Switches. Hui Chen, Ph.D. Dept. of Engineering & Computer Science Virginia State University Petersburg, VA 23806

Transcription:

CPEG 852 Advanced Topics in Computing Systems The Dataflow Model of Computation Stéphane Zuckerman Computer Architecture & Parallel Systems Laboratory Electrical & Computer Engineering Dept. University of Delaware 140 Evans Hall Newark,DE 19716, United States szuckerm@udel.edu September 8, 2015 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 1 / 46

Outline 1 A Quick Reminder on Execution Models 2 Dataflow Models of Computation 3 Dataflow Graphs and Properties 4 Static Dataflow Introduction Static Dataflow Examples Static Dataflow Features Static Dataflow Activity Templates 5 Recursive Program Graphs Introduction Ordinary and Tail Recursions Features of Recursive Program Graphs 6 Homework S.Zuckerman CPEG852 Fall 15 Dataflow MoC 2 / 46

Outline 1 A Quick Reminder on Execution Models 2 Dataflow Models of Computation 3 Dataflow Graphs and Properties 4 Static Dataflow Introduction Static Dataflow Examples Static Dataflow Features Static Dataflow Activity Templates 5 Recursive Program Graphs Introduction Ordinary and Tail Recursions Features of Recursive Program Graphs 6 Homework S.Zuckerman CPEG852 Fall 15 Dataflow MoC 3 / 46

High-Level View of a Computer System S.Zuckerman Figure: High-Level View CPEG852 of afall Computer 15 DataflowSystem MoC 4 / 46

A Representative View of Current Compute Nodes Hardware Figure: S.Zuckerman A Representative View CPEG852 of Current Fall 15 Compute Dataflow MoC Nodes Hardware 5 / 46

A Representative View of Current Compute Nodes Software Mess Figure: S.Zuckerman A Representative View of CPEG852 Current Fall Compute 15 Dataflow Nodes MoC Software Mess 6 / 46

Terminology Definition: Parallel Model of Computation Parallel models for algorithms designers Parallel models for system designers Parallel programming models Parallel execution models Parallel architecture models S.Zuckerman CPEG852 Fall 15 Dataflow MoC 7 / 46

An Alternate Program Execution Model Definition (Dr. Gao s) Definition: Program Execution Model The program execution model (PXM) is the basic low-level abstraction of the underlying system architecture upon which our programming model, compilation strategy, runtime system, and other software components are developed. The PXM (and its API) serves as an interface between the architecture and the software. Unlike an instruction set architecture (ISA) specification, which usually focuses on lower level details (such as instruction encoding and organization of registers for a specific processor), the PXM refers to machine organization at a higher level for a whole class of high-end machines as viewed by the users S.Zuckerman CPEG852 Fall 15 Dataflow MoC 8 / 46

Horizontal Conception of a PXM S.Zuckerman Figure: Horizontal CPEG852 Conception Fall 15 of Dataflow a PXM MoC 9 / 46

Vertical Conception of a PXM S.Zuckerman Figure: VerticalCPEG852 Conception Fall 15 of Dataflow a PXMMoC 10 / 46

Outline 1 A Quick Reminder on Execution Models 2 Dataflow Models of Computation 3 Dataflow Graphs and Properties 4 Static Dataflow Introduction Static Dataflow Examples Static Dataflow Features Static Dataflow Activity Templates 5 Recursive Program Graphs Introduction Ordinary and Tail Recursions Features of Recursive Program Graphs 6 Homework S.Zuckerman CPEG852 Fall 15 Dataflow MoC 11 / 46

The Dataflow Model of Computation A Pragmatic Approach S.Zuckerman CPEG852 Fall 15 Dataflow MoC 12 / 46

The Dataflow Model of Computation A Pragmatic Approach S.Zuckerman CPEG852 Fall 15 Dataflow MoC 12 / 46

The Dataflow Model of Computation A Pragmatic Approach S.Zuckerman CPEG852 Fall 15 Dataflow MoC 12 / 46

The Dataflow Model of Computation A Pragmatic Approach S.Zuckerman CPEG852 Fall 15 Dataflow MoC 12 / 46

The Dataflow Model of Computation A Pragmatic Approach S.Zuckerman CPEG852 Fall 15 Dataflow MoC 12 / 46

Dataflow Graphs For J.B. Dennis, the role of Dataflow Graphs (DFGs) is two-fold: Serve as an intermediate-level language for high-level languages Serve as a machine language for parallel machine S.Zuckerman CPEG852 Fall 15 Dataflow MoC 13 / 46

A Brief History of Dataflow MIT, 1974 1975 April 1974: Symposium on Programming, Paris. Dennis: First Version of a Data Flow Procedure Language. January 1975: Second Annual Symposium on Computer Architecture, Houston. Dennis and Misunas: A Preliminary Architecture for a Basic Data-Flow Processor. August 1975: Sagamore Computer Conference on Parallel Processing: Rumbaugh: Data Flow Languages Rumbaugh: A Data Flow Multiprocessor Bryant & Dennis: Packet Communication Architecture Misunas: Structure Processing in a Data-Flow Computer S.Zuckerman CPEG852 Fall 15 Dataflow MoC 14 / 46

Eearly Roots on Dataflow Work MIT in the 70 s Asynchronous Digital Logic (D. E. Muller and Bartky, 1957; David E Muller, 1963) Control Structures for Parallel Programming (Conway, 1963; McIlroy, 1969; Dijkstra, 1971) Abstract Models for Concurrent Systems (Petri, 1966; Holt, 1978) Theory of Program Schemes (Ianov, 1958; Paterson and Hewitt, 1970) Structured Programming (Dahl, Dijkstra, and Hoare, 1972) Functional Programming (McCarthy, 1960; Landin, 1964) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 15 / 46

Outline 1 A Quick Reminder on Execution Models 2 Dataflow Models of Computation 3 Dataflow Graphs and Properties 4 Static Dataflow Introduction Static Dataflow Examples Static Dataflow Features Static Dataflow Activity Templates 5 Recursive Program Graphs Introduction Ordinary and Tail Recursions Features of Recursive Program Graphs 6 Homework S.Zuckerman CPEG852 Fall 15 Dataflow MoC 16 / 46

Dataflow Graphs Dataflow tokens Values in dataflow graphs are represented as tokens. Tokens are tuples < s, d, v >, where s is the instruction pointer, d is the port, and v represents the actual value (data). Operator Execution An operator executes when all its input tokens are present; copies of the result token are distributed to the destination operators. S.Zuckerman CPEG852 Fall 15 Dataflow MoC 17 / 46

Dataflow Graphs Dataflow tokens Values in dataflow graphs are represented as tokens. Tokens are tuples < s, d, v >, where s is the instruction pointer, d is the port, and v represents the actual value (data). Operator Execution An operator executes when all its input tokens are present; copies of the result token are distributed to the destination operators. S.Zuckerman CPEG852 Fall 15 Dataflow MoC 17 / 46

Dataflow Graphs Dataflow tokens Values in dataflow graphs are represented as tokens. Tokens are tuples < s, d, v >, where s is the instruction pointer, d is the port, and v represents the actual value (data). Operator Execution An operator executes when all its input tokens are present; copies of the result token are distributed to the destination operators. S.Zuckerman CPEG852 Fall 15 Dataflow MoC 17 / 46

Operational Semantics I Firing Rules Overview of Operational Semantics Values are represented by tokens Tokens are placed (assigned) on the arcs Snapshot/configuration: state Computation: Configuration configuration S.Zuckerman CPEG852 Fall 15 Dataflow MoC 18 / 46

Operational Semantics II Firing Rules Details on Operational Semantics Tokens Data Assignment Placing a token on the output arc Snapshot/configuration: state Computation The intermediate step between snapshots / configurations S.Zuckerman CPEG852 Fall 15 Dataflow MoC 19 / 46

Operational Semantics III Firing Rules Actors States An actor in a DFG is enabled if there is a token on each of its input arcs Any enabled actor may be fired to define the next state of the computation When an actor is fired, then: All of its input tokens are removed from the input arcs A token is placed on each of the actor s output arcs Computation Sequence of snapshots Many possible sequences, as long as firing rules are obeyed This is called determinacy Provides locality of effect S.Zuckerman CPEG852 Fall 15 Dataflow MoC 20 / 46

General Firing Rules A switch actor is enabled if: A token is available on its control input arc A token is available on its data input arc(s) Firing a switch actor: Removes input tokens Delivers the input data value as an output token on the corresponding output arc A (possibly unconditional) merge actor is enabled if There is a token available on any of its input arcs A conditional merge need to have a control token placed on its input control arc An enabled (unconditional) merge actor may be fired It will put (possibly non-deterministically) one of the input tokens on the output arc. S.Zuckerman CPEG852 Fall 15 Dataflow MoC 21 / 46

Conditional Expressions Figure: if/else construct S.Zuckerman CPEG852 Fall 15 Dataflow MoC 22 / 46

Conditional Expressions Figure: if/else schema S.Zuckerman CPEG852 Fall 15 Dataflow MoC 22 / 46

Conditional Expressions Figure: loop schema S.Zuckerman CPEG852 Fall 15 Dataflow MoC 22 / 46

Remarks on Dataflow Models The dataflow model of computation is fundamentally sound and simple Very few other parallel MoCs can claim this Few dataflow architecture projects survived past the early 1990 s. However, dataflow principles were heavily reused in both software and hardware With the advent of the new multi and many core era, we have many (good!) reasons to re-examine and explore the original dataflow models It never hurts to learn from the past! As a side-note: Jack Dennis s dataflow model was finally recognized on a world-scale level: he was awarded the John Von Neumann Medal (the IEEE equivalent to the ACM Turing Award) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 23 / 46

Outline 1 A Quick Reminder on Execution Models 2 Dataflow Models of Computation 3 Dataflow Graphs and Properties 4 Static Dataflow Introduction Static Dataflow Examples Static Dataflow Features Static Dataflow Activity Templates 5 Recursive Program Graphs Introduction Ordinary and Tail Recursions Features of Recursive Program Graphs 6 Homework S.Zuckerman CPEG852 Fall 15 Dataflow MoC 24 / 46

Static Dataflow Static dataflow was the first dataflow model It was developed in Jack Dennis team S.Zuckerman CPEG852 Fall 15 Dataflow MoC 25 / 46

Static Dataflow The Golden Rule Static Dataflow s Golden Rule... for any actor to be enabled, there must be no tokens on any of its output arcs... S.Zuckerman CPEG852 Fall 15 Dataflow MoC 26 / 46

Example Power Function long power ( i n t x, i n t n) { i n t y = 1; f o r ( i n t i = n; i > 0; --i) y *= x; r e t u r n y; } Figure: Computation: y = x n S.Zuckerman CPEG852 Fall 15 Dataflow MoC 27 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Power Function Computing y = 2 3 S.Zuckerman CPEG852 Fall 15 Dataflow MoC 28 / 46

Example Vector Addition: CN = A N + B N S.Zuckerman CPEG852 Fall 15 Dataflow MoC 29 / 46

Static Dataflow Features One-token-per-arc Deterministic merge Conditional/iteration construction Consecutive iterations of a loop can only be pipelined A dataflow graph activity templates Opcode of the represented instruction Operand slots for holding operand values Destination address fields Token value + destination S.Zuckerman CPEG852 Fall 15 Dataflow MoC 30 / 46

Static Dataflow Activity Templates S.Zuckerman CPEG852 Fall 15 Dataflow MoC 31 / 46

Static Dataflow Activity Templates S.Zuckerman CPEG852 Fall 15 Dataflow MoC 32 / 46

Static Dataflow Limitations The static dataflow model has the advantage of being very simple. However, it is also fairly limited: Due to acknowledgment tokens, the token traffic is doubled Lack of support for programming constructs that are essential to modern programming languages No procedure calls No recursion S.Zuckerman CPEG852 Fall 15 Dataflow MoC 33 / 46

Outline 1 A Quick Reminder on Execution Models 2 Dataflow Models of Computation 3 Dataflow Graphs and Properties 4 Static Dataflow Introduction Static Dataflow Examples Static Dataflow Features Static Dataflow Activity Templates 5 Recursive Program Graphs Introduction Ordinary and Tail Recursions Features of Recursive Program Graphs 6 Homework S.Zuckerman CPEG852 Fall 15 Dataflow MoC 34 / 46

Recursive Program Graphs Extension over static dataflow concepts Graph must be acyclic (DAG, directed acyclic graph) One-token-per-arc-per-invocation Iteration is expressed in terms of tail recursion S.Zuckerman CPEG852 Fall 15 Dataflow MoC 35 / 46

Examples of Ordinary Recursion Factorial long factorial ( long n) { i f (n == 0) r e t u r n 1; e l s e r e t u r n n * fact (n -1); } S.Zuckerman CPEG852 Fall 15 Dataflow MoC 36 / 46

Examples of Tail Recursion Factorial long fact_tail_rec ( long n, long acc ) { i f (n == 0) r e t u r n acc ; e l s e r e t u r n fact (n -1, acc *n); } long factorial ( long n) { r e t u r n fact_tail_rec (n,1); } S.Zuckerman CPEG852 Fall 15 Dataflow MoC 37 / 46

Example Factorial Hand Simulation: fact(3) long f a c t o r i a l ( long n ) { return n == 0? 1 : n f a c t ( n 1); } S.Zuckerman CPEG852 Fall 15 Dataflow MoC 38 / 46

Example Factorial DFG for fact(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 39 / 46

Example Factorial DFG for fact(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 39 / 46

Example Factorial DFG for fact(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 39 / 46

Example Factorial DFG for fact(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 39 / 46

Example Factorial DFG for fact(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 39 / 46

Example Factorial DFG for fact(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 39 / 46

Example Factorial DFG for fact(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 39 / 46

Example Factorial DFG for fact(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 39 / 46

Example Factorial DFG for fact(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 39 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Factorial Tail Recursive version factorial(3) S.Zuckerman CPEG852 Fall 15 Dataflow MoC 40 / 46

Recursive Program Graph Features Acyclic One-token-per-link-in-lifetime Tags No deterministic merge needed Recursion is expressed by runtime copying S.Zuckerman CPEG852 Fall 15 Dataflow MoC 41 / 46

Outline 1 A Quick Reminder on Execution Models 2 Dataflow Models of Computation 3 Dataflow Graphs and Properties 4 Static Dataflow Introduction Static Dataflow Examples Static Dataflow Features Static Dataflow Activity Templates 5 Recursive Program Graphs Introduction Ordinary and Tail Recursions Features of Recursive Program Graphs 6 Homework S.Zuckerman CPEG852 Fall 15 Dataflow MoC 42 / 46

Homework factorial function: Convert the recursive form of factorial into an iterative form Create/draw the corresponding static dataflow graph power function: Convert the iterative form of the power function into its recursive form Create/draw its recursive program graph S.Zuckerman CPEG852 Fall 15 Dataflow MoC 43 / 46

References I Conway, Melvin E. (1963). A Multiprocessor System Design. In: Proceedings of the November 12-14, 1963, Fall Joint Computer Conference. AFIPS 63 (Fall). Las Vegas, Nevada: ACM, pp. 139 146. doi: 10.1145/1463822.1463838. url: http://doi.acm.org/10.1145/1463822.1463838. Dahl, O. J., E. W. Dijkstra, and C. A. R. Hoare, eds. (1972). Structured Programming. London, UK, UK: Academic Press Ltd. isbn: 0-12-200550-3. Dijkstra, E. W. (1971). Hierarchical Ordering of Sequential Processes. In: Acta Inf. 1.2, pp. 115 138. issn: 0001-5903. doi: 10.1007/BF00289519. url: http://dx.doi.org/10.1007/bf00289519. Holt, Richard C (1978). Structured concurrent programming with operating systems applications. Vol. 2937. Reading, Mass.; Don Mills, Ont.: Addison-Wesley Publishing Company. S.Zuckerman CPEG852 Fall 15 Dataflow MoC 44 / 46

References II Ianov, Iu I. (1958). On the Equivalence and Transformation of Program Schemes. In: Commun. ACM 1.10, pp. 8 12. issn: 0001-0782. doi: 10.1145/368924.368930. url: http://doi.acm.org/10.1145/368924.368930. Landin, Peter J (1964). The mechanical evaluation of expressions. In: The Computer Journal 6.4, pp. 308 320. McCarthy, John (1960). Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I. In: Commun. ACM 3.4, pp. 184 195. issn: 0001-0782. doi: 10.1145/367177.367199. url: http://doi.acm.org/10.1145/367177.367199. McIlroy, M. D. (1969). Alternatives to Extensible Languages. In: SIGPLAN Not. 4.8, pp. 50 52. issn: 0362-1340. doi: 10.1145/1115858.1115870. url: http://doi.acm.org/10.1145/1115858.1115870. S.Zuckerman CPEG852 Fall 15 Dataflow MoC 45 / 46

References III Muller, D. E. and W. Scott Bartky (1957). A Theory of Asynchronous Circuits. Report 78. University of Illinois, Graduate College, Digital Computer Laboratory. Muller, David E (1963). Asynchronous logics and application to information processing. In: Switching Theory in Space Technology, pp. 289 297. Paterson, Michael S. and Carl E. Hewitt (1970). Record of the Project MAC Conference on Concurrent Systems and Parallel Computation. In: ed. by Jack B. Dennis. New York, NY, USA: ACM. Chap. Comparative Schematology, pp. 119 127. doi: 10.1145/1344551.1344563. url: http://doi.acm.org/10.1145/1344551.1344563. Petri, Carl Adam (1966). Communication with automata. eng. PhD thesis. Universität Hamburg. S.Zuckerman CPEG852 Fall 15 Dataflow MoC 46 / 46