Concurrent Computational Systems Edward A. Lee Professor, UC Berkeley Ptolemy Project CHESS: Center for Hybrid and Embedded Software Systems University of Arizona Distinguished Lecture Series January 13, 2005 Tuscon, Arizona Abstract Prevailing software abstractions are deeply rooted in the sequential imperative model, which at its root, is poorly matched to concurrent systems. Threads are a widely used natural extension of these abstractions to concurrent problems. Semaphores and mutual exclusion locks provide synchronization primitives offering some control over the relative timing of actions in threads. In this talk, I will argue that nontrivial concurrent programs based on threads, semaphores, and mutual exclusion locks are incomprehensible. I will outline a family of alternative concurrent models of computation, such as discrete events, process networks, synchronous languages, and dataflow, that promise more comprehensible programs. Most of these have been around for some time, and some of them have achieved widespread usage, but generally not in mainstream software. Indeed, several of them offer promising views of "computation" in a broader sense than the Turing-Church sense. They promise a view of computation that embraces mixed hardware-software systems and embedded systems that engage the physical world. Lee, Berkeley 2 Standard Software Abstraction (20-th Century Computation) initial state sequence f : State State Alan Turing final state • Time is irrelevant • All actions are ordered Lee, Berkeley 3 Standard Software Abstraction: Processes or Threads Infinite sequences of state transformations are called “processes” or “threads” The operating system (typically) provides: • suspend/resume • mutual exclusion • semaphores suspend resume Lee, Berkeley 4 Standard Software Abstraction: Concurrency via Interacting Threads Potential for race conditions, deadlock, and livelock severely compromises software reliability. These methods date back to the 1960’s (Dijkstra). stalled by precedence race condition stalled for rendezvous Lee, Berkeley 5 A Stake in the Ground Nontrivial concurrent programs based on threads, semaphores, and mutexes are incomprehensible to humans. No amount of process improvement is going to change this. • the human brain doesn’t work this way. Formal methods may help • scalability? • understandability? Better concurrency abstractions will help more Lee, Berkeley 6 A Story: Ptolemy Project Code Review Lee, Berkeley 7 Ptolemy Project Code Review A Typical Story Code review discovers that a method needs to be synchronized to ensure that multiple threads do not reverse each other’s actions. No problems had been detected in 4 years of using the code. Three days after making the change, users started reporting deadlocks caused by the new mutex. Analysis and correction of the deadlock is hard. But code review successfully identified the flaw. Lee, Berkeley 8 Code Review Doesn’t Always Work Another Typical Story /** CrossRefList is a list that maintains pointers to other CrossRefLists. … @author Geroncio Galicia, Contributor: Edward A. Lee @version $Id: CrossRefList.java,v 1.78 2004/04/29 14:50:00 eal Exp $ @since Ptolemy II 0.2 @Pt.ProposedRating Green (eal) @Pt.AcceptedRating Green (bart) Code that had been in */ public final class CrossRefList implements Serializable { use for four years, … central to Ptolemy II, protected class CrossRef implements Serializable{ with an extensive test … // NOTE: It is essential that this method not be suite, design reviewed to // synchronized, since it is called by _farContainer(), yellow, then code // which is. Having it synchronized can lead to reviewed to green in // deadlock. Fortunately, it is an atomic action, // so it need not be synchronized. 2000, causes a deadlock private Object _nearContainer() { during a demo on April return _container; 26, 2004. } private synchronized Object _farContainer() { if (_far != null) return _far._nearContainer(); else return null; } … } } Lee, Berkeley 9 And Doubts Remain /** CrossRefList is a list that maintains pointers to other CrossRefLists. … @author Geroncio Galicia, Contributor: Edward A. Lee @version $Id: CrossRefList.java,v 1.78 2004/04/29 14:50:00 eal Exp $ @since Ptolemy II 0.2 @Pt.ProposedRating Green (eal) @Pt.AcceptedRating Green (bart) Safety of this code */ depends on policies public final class CrossRefList implements Serializable { … maintained by entirely protected class CrossRef implements Serializable{ unconnected classes. … The language and private synchronized void _dissociate() { _unlink(); // Remove this. synchronization // NOTE: Deadlock risk here! If _far is waiting mechanisms provide no // on a lock to this CrossRef, then we will get way to talk about these // deadlock. However, this will only happen if // we have two threads simultaneously modifying a systemwide properties. // model. At the moment (4/29/04), we have no // mechanism for doing that without first // acquiring write permission the workspace(). // Two threads cannot simultaneously hold that // write access. if (_far != null) _far._unlink(); // Remove far } } Lee, Berkeley 10 Image “borrowed” from an Iomega advertisement for Y2K software and disk drives, Scientific American, September 1999. What it Feels Like to Use the synchronized Keyword in Java Lee, Berkeley 11 Diagnosis: Interacting Processes are Not Compositional An aggregation of processes is not a process (a total order of external interactions). What is it? Many software failures are due to this illdefined composition. Lee, Berkeley 12 Distributed Version of 20-th Century Computation Force-fitting the sequential abstraction onto parallel hardware. remote procedure call Lee, Berkeley 13 Combining Processes and RPC – Split-Phase Execution, Futures, Asynchronous Method Calls, Callbacks, … These methods are at least as incomprehensible as concurrent threads or processes. “asynchronous” procedure call Lee, Berkeley 14 Better Concurrency Models Better concurrency models exist. We examine a family of such models that we call actor-oriented models. Lee, Berkeley 15 What is an Actor-Oriented MoC? Traditional component interactions: class name What flows through an object is sequential control data methods call return Actor oriented: actor name data (state) parameters ports Input data Output data What flows through an object is streams of data Lee, Berkeley 16 Ptolemy II: Framework for Experimenting with Actor-Oriented Models of Computation Basic Ptolemy II infrastructure: Large, domain-polymorphic component library. Director from a library defines component interaction semantics Type system for transported data Visual editor supporting an abstract syntax Lee, Berkeley 17 The Basic Abstract Syntax connection Actor Actor Relation Link Port Link Port Attributes ec nn co n tio ec nn Link co tio n Attributes Port Actor Attributes • Actors • Attributes on actors (parameters) • Ports in actors • Links between ports • Width on links (channels) • Hierarchy Concrete syntaxes: • XML • Visual pictures • Actor languages (Cal, StreamIT, …) Lee, Berkeley 18 Hierarchy - Composite Components Relation dangling Port Actor opaque Port Port transparent or opaque CompositeActor toplevel CompositeActor Lee, Berkeley 19 Abstract Semantics of Actor-Oriented Models of Computation Actor-Oriented Models of Computation that we have implemented: execution control data transport Basic Transport: receiver.put(t) send(0,t) init() fire() get(0) P2 P1 E1 R1 token t IOPort IORelation Actor E2 Receiver (inside port) • dataflow (several variants) • process networks • distributed process networks • Click (push/pull) • continuous-time • CSP (rendezvous) • discrete events • distributed discrete events • synchronous/reactive • time-driven (several variants) •… Lee, Berkeley 20 Models of Computation Implemented in Ptolemy II CI – Push/pull component interaction Click – Push/pull with method invocation CSP – concurrent threads with rendezvous CT – continuous-time modeling DE – discrete-event systems DDE – distributed discrete events DDF – Dynamic dataflow DPN – distributed process networks DT – discrete time (cycle driven) FSM – finite state machines Giotto – synchronous periodic GR – 2-D and 3-D graphics PN – process networks SDF – synchronous dataflow SR – synchronous/reactive TM – timed multitasking Most of these are actor oriented. Lee, Berkeley 21 Models of Computation Implemented in Ptolemy II CI – Push/pull component interaction Click – Push/pull with method invocation CSP – concurrent threads with rendezvous CT – continuous-time modeling DE – discrete-event systems DDE – distributed discrete events DDF – Dynamic dataflow DPN – distributed process networks DT – discrete time (cycle driven) FSM – finite state machines Giotto – synchronous periodic GR – 2-D and 3-D graphics PN – process networks SDF – synchronous dataflow SR – synchronous/reactive TM – timed multitasking Lee, Berkeley 22 Example Model of Computation: Discrete Events (DE) DE Director implements timed semantics using an event queue Reactive actors Event source Signal Time line Lee, Berkeley 23 Semantics Clears Up Subtleties: E.g. Simultaneous Events By default, an actor produces events with the same time as the input event. But in this example, we expect (and need) for the BooleanSwitch to “see” the output of the Bernoulli in the same “firing” where it sees the event from the PoissonClock. Events with identical time stamps are also ordered, and reactions to such events follow data precedence order. Lee, Berkeley 24 Semantics Clears Up Subtleties: E.g. Feedback Data precedence analysis has to take into account the non-strictness of this actor (that an output can be produced despite the lack of an input). Lee, Berkeley 25 Semantics Clears Up Subtleties: E.g. Zeno Systems DE systems may have an infinite number of events in a finite amount of time. Carefully constructed semantics gives these systems meaning. Lee, Berkeley 26 A Rough Sense of Discrete-Event Semantics: Metric Space Formulation Cantor metric: d ( x, y) 1 / 2 where is the earliest time where x and y differ. The set of signals with this metric form a complete metric space. x y Generalizations of this metric handle multiple events at the same time. Lee, Berkeley 27 Causality in DE Causal: d ( y, y) d ( x, x) Strictly causal: x y x y d ( y, y) d ( x, x) Delta causal: 1, d ( y, y) d ( x, x) A delta-causal component is a “contraction map.” Lee, Berkeley 28 Fixed Point Theorem (Banach Fixed Point Theorem) Let (S n = [T V ]n, d ) be a complete metric space and f : S n S n be a delta causal function. Then f has a unique fixed point, and for any point s S n , the following sequence converges to that fixed point: s1 = s, s2 = f (s1), s3 = f (s2), … This means no Zeno! Current work: Other formulations (using generalized ultrametric spaces, ordinals, and posets) give meaning to a broader class of systems. Lee, Berkeley 29 Semantic Challenges Create distributed discrete-event systems. Three families of techniques are known: Conservative techniques (Chandy & Misra) Optimistic techniques (Time warp, Jefferson) Distributed consensus (Croquet, Reed) Lee, Berkeley 30 Application of DE Modeling Wireless Sensor Nets in VisualSense VisualSense extends the Ptolemy II discreteevent domain with communication between actors representing sensor nodes being mediated by a channel, which is another actor. The example at the left shows a grid of nodes that relay messages from an initiator (center) via a channel that models a low (but nonzero) probability of long range links being viable. Lee, Berkeley 31 Models of Computation Implemented in Ptolemy II CI – Push/pull component interaction Click – Push/pull with method invocation CSP – concurrent threads with rendezvous CT – continuous-time modeling DE – discrete-event systems DDE – distributed discrete events DDF – Dynamic dataflow DPN – distributed process networks DT – discrete time (cycle driven) FSM – finite state machines Giotto – synchronous periodic GR – 2-D and 3-D graphics PN – process networks SDF – synchronous dataflow SR – synchronous/reactive TM – timed multitasking Lee, Berkeley 32 Example Model of Computation Continuous Time (CT) Director implements a “solver” that constructs an approximation to the continuous-time behavior. A signal has a value at all real-valued times. Integrator used to define systems governed by ordinary differential equations. Lee, Berkeley 33 Models of Computation Implemented in Ptolemy II CI – Push/pull component interaction Click – Push/pull with method invocation CSP – concurrent threads with rendezvous CT – continuous-time modeling DE – discrete-event systems DDE – distributed discrete events DDF – Dynamic dataflow DPN – distributed process networks DT – discrete time (cycle driven) FSM – finite state machines Giotto – synchronous periodic GR – 2-D and 3-D graphics PN – process networks SDF – synchronous dataflow SR – synchronous/reactive TM – timed multitasking Lee, Berkeley 34 Heterogeneous Models Hybrid Systems: CT + FSM The FSM director can be combined with other directors to create modal models. Lee, Berkeley 35 Semantic Subtleties In hybrid systems, signals may have more than one value at a given time. Discontinuities Transient states Traditional mathematical formulation of a signal: x: Reals Realsn has to be modified: x: Reals Naturals Realsn with ensuing consequences for the theory. Lee, Berkeley 36 Models of Computation Implemented in Ptolemy II CI – Push/pull component interaction Click – Push/pull with method invocation CSP – concurrent threads with rendezvous CT – continuous-time modeling DE – discrete-event systems DDE – distributed discrete events DDF – Dynamic dataflow DPN – distributed process networks DT – discrete time (cycle driven) FSM – finite state machines Giotto – synchronous periodic GR – 2-D and 3-D graphics PN – process networks SDF – synchronous dataflow SR – synchronous/reactive TM – timed multitasking Lee, Berkeley 37 Heterogeneous Models Mixed Signals: DE + CT DE signal DE model of a digital controller CT signal CT model of mechanical system Lee, Berkeley 38 Models of Computation Implemented in Ptolemy II CI – Push/pull component interaction Click – Push/pull with method invocation CSP – concurrent threads with rendezvous CT – continuous-time modeling DE – discrete-event systems DDE – distributed discrete events DDF – Dynamic dataflow DPN – distributed process networks DT – discrete time (cycle driven) FSM – finite state machines Giotto – synchronous periodic GR – 2-D and 3-D graphics PN – process networks SDF – synchronous dataflow SR – synchronous/reactive TM – timed multitasking Lee, Berkeley 39 Example Untimed Model of Computation: Process Networks (PN) actor == thread signal == stream reads block Kahn, MacQueen, 1977 writes don’t Lee, Berkeley 40 PN Semantics x F (x ) y F ( y) A signal is a sequence of values Define a prefix order: x y means that x is a prefix of y. Actors are monotonic functions: x y F(x) F(y) Stronger condition: Actors are continuous functions (intuitively: they don’t wait forever to produce outputs). Lee, Berkeley 41 PN Semantics of Composition (Kahn, ’74) If the components are deterministic, the composition is deterministic. x y F ( x) x x F y Knaster-Tarski fixed point theorem: • Continuous function has a unique least fixed point • Execution procedure for finding that fixed point • Successive approximations to the fixed point Lee, Berkeley 42 Semantic Subtleties Giving semantics to finite sequences in combination with infinite sequences. Unifying fixed-point semantics with metricspace semantics (in order to give meaning to heterogeneous models that combine timed with untimed systems). Lee, Berkeley 43 Application of PN and Ptolemy II Kepler – Scientific Workflows Led by San Diego Supercomputer Center (SDSC), with participation from the SEEK ITR, DOE SciDAC SDM, and others, researchers are building on Ptolemy II a distributed workflow system called Kepler to “provide access to any resource, any data, any service, anytime, anywhere” via a distributed computing platform (aka the “Grid”) supporting “high performance computing, and federated, integrated, mediated databases within a userfriendly workbench / problem-solving environment.” This effort is compatible with the objectives of NSF Cyberinfrastructure, UK’s e-Science Programme, and DOE’s SciDAC (Scientific Discovery through Advanced Computing). Lee, Berkeley 44 Kepler Example: Harvesting Web Services Example showing a web service wrapper (Thanks to Bertram Ludaecher, San Diego Supercomputer Center) Lee, Berkeley 45 Kepler Example: Grid Computations Thanks to Bertram Ludäscher SDSC Lee, Berkeley 46 Kepler Example: Real-Time Data Feeds Thanks to Bertram Ludäscher, SDSC ORB This model integrates realtime data feeds from a ship (the Roger Revelle) Lee, Berkeley 47 KEPLER/CSP: Contributors, Sponsors, Projects (or loosely coupled Communicating Sequential Persons ;-) Ilkay Altintas SDM, Resurgence Kim Baldridge Resurgence, NMI Chad Berkley SEEK Shawn Bowers SEEK Terence Critchlow SDM Tobin Fricke ROADNet Jeffrey Grethe BIRN Christopher H. Brooks Ptolemy II Zhengang Cheng SDM Dan Higgins SEEK Efrat Jaeger GEON Matt Jones SEEK Werner Krebs, EOL Edward A. Lee Ptolemy II Kai Lin GEON Bertram Ludaescher SEEK, GEON, SDM, BIRN, ROADNet Mark Miller EOL Steve Mock NMI Steve Neuendorffer Ptolemy II Jing Tao SEEK Mladen Vouk SDM Xiaowen Xin SDM Yang Zhao Ptolemy II Bing Zhu SEEK ••• Thanks to Bertram Ludäscher, SDSC Ptolemy II Lee, Berkeley 48 Models of Computation Implemented in Ptolemy II CI – Push/pull component interaction Click – Push/pull with method invocation CSP – concurrent threads with rendezvous CT – continuous-time modeling DE – discrete-event systems DDE – distributed discrete events DDF – Dynamic dataflow DPN – distributed process networks DT – discrete time (cycle driven) FSM – finite state machines Giotto – synchronous periodic GR – 2-D and 3-D graphics PN – process networks SDF – synchronous dataflow SR – synchronous/reactive TM – timed multitasking Lee, Berkeley 49 Synchronous Models of Computation Director finds a value (or absent) at each “tick” of a global clock Feedback is resolved by finding a fixed point. Signal has a value or is absent at each tick of the “clock.” Semantic foundation based on Kanster-Tarski fixed point theorem on Scott topologies. Lee, Berkeley 50 Languages Based on the Synchronous Model of Computation Lustre (and SCADE) Esterel Signal Statecharts (and UML state machines) Argos … Lee, Berkeley 51 Models of Computation Implemented in Ptolemy II CI – Push/pull component interaction Click – Push/pull with method invocation CSP – concurrent threads with rendezvous CT – continuous-time modeling DE – discrete-event systems DDE – distributed discrete events DDF – Dynamic dataflow DPN – distributed process networks DT – discrete time (cycle driven) FSM – finite state machines Giotto – synchronous periodic GR – 2-D and 3-D graphics PN – process networks SDF – synchronous dataflow SR – synchronous/reactive TM – timed multitasking Lee, Berkeley 52 Dataflow Models of Computation Computation graphs [Karp & Miller - 1966] Process networks [Kahn - 1974] Static dataflow [Dennis - 1974] Dynamic dataflow [Arvind, 1981] K-bounded loops [Culler, 1986] Synchronous dataflow [Lee & Messerschmitt, 1986] Structured dataflow [Kodosky, 1986] PGM: Processing Graph Method [Kaplan, 1987] Synchronous languages [Lustre, Signal, 1980’s] Well-behaved dataflow [Gao, 1992] Boolean dataflow [Buck and Lee, 1993] Multidimensional SDF [Lee, 1993] Cyclo-static dataflow [Lauwereins, 1994] Integer dataflow [Buck, 1994] Bounded dynamic dataflow [Lee and Parks, 1995] Heterochronous dataflow [Girault, Lee, & Lee, 1997] … Many tools, software frameworks, and hardware architectures have been built to support one or more of these. Lee, Berkeley 53 Ptolemy II Software Architecture Built for Extensibility Ptolemy II packages have carefully constructed dependencies and interfaces Graph Data Kernel Actor Math Lee, Berkeley 54 Conclusion Threads are a poor concurrent MoC There are many better concurrent MoCs The ones we know are the tip of the iceberg Ptolemy II is a lab for experimenting with them Specializing MoCs can be useful Mixing specialized MoCs can be useful. This is a rich research area. Lee, Berkeley 55