Actors: A unifying model for parallel and distributed computing

https://doi.org/10.1016/S1383-7621(98)00067-8Get rights and content

Abstract

Parallel computing and distributed computing have traditionally evolved as two separate research disciplines. Parallel computing has addressed problems of communication-intensive computation on tightly-coupled processors while distributed computing has been concerned with coordination, availability, timeliness, etc., of more loosely coupled computations. Current trends, such as parallel computing on networks of conventional processors and Internet computing, suggest the advantages of unifying these two disciplines. Actors provide a flexible model of computation which supports both parallel and distributed computing. One may evaluate the utility of a programming paradigm in terms of four criteria: expressiveness, portability, efficiency, and performance predictability. We discuss how the Actor model and programming methods based on it support these goals. In particular, we provide an overview of the state of the art in Actor languages and their implementation. Finally, we place this work in the context of recent developments in middleware, the Java language, and agents.

Introduction

Parallel computing and distributed computing share the same basic computation model: physically distributed processes that operate concurrently and interact with each other in order to accomplish a task as a whole. However, parallel computing and distributed computing have evolved as separate research areas: the differences between the two areas are a consequence of assumptions that each makes about the execution environment of programs.

In parallel computing, processes are assumed to be placed “closer” to each other and to communicate frequently – hence the computation/communication ratio of parallel applications is usually much smaller than that in distributed applications. Moreover, models of parallel programming typically assume that the processors and communication links are reliable and trustworthy. On the other hand, distributed computing focuses on processes that are “dispersed” in a wide area – i.e., communication between processes is assumed to be more costly than in parallel computing. For example, client/server applications typically involve limited communication between a client which sends a request and a server which does much of the processing. Moreover, research in distributed computing addresses issues such as unreliable and faulty hardware, security, and timing constraints. For example, mission critical applications in distributed computing employ fault tolerance mechanisms and real-time scheduling.

A number of recent trends point to a convergence of research in parallel and distributed computing. Perhaps the most significant of these trends is architectural. Three architectural trends may be noted. First, increased communication bandwidth and reduced latency make geographical distribution of processing nodes less of a barrier to concurrent computing. Second, the development of architecture neutral programming languages, such as Java, provides a virtual computation environment in which nodes appear to be homogeneous. Finally, server machines in client/server computing are increasingly adopting multiprocessor architectures, often multiple processors with a shared memory in a single workstation and symmetric multiprocessors (SMP). While such architectures are less scalable than networks of computers, some concurrent programs with high communication traffic may execute on them more efficiently.

The second important trend which points to a convergence of parallel and distributed computing is the potential of Internet computing. With improvements in network technology and communication middleware, one can view the Internet as a huge parallel and distributed computer. Because connectivity on the Internet can be intermittent and the bandwidth variable, the ability of processes as well as data to migrate becomes critical. In turn, this requires a satisfactory treatment of mobility.

We believe that working with a programming model that addresses parallel, distributed and mobile computing uniformly is important to help address the challenge of developing software for real-world systems. Such a universal programming model must address at least four important concerns:

  • Expressiveness: not only development and reasoning about relatively complex programs need to be simplified, but also their modifiability.

  • Portability: architecture-dependent specifics, such as the number or kinds of processors, the network topology, latency, bandwidth, etc., should be abstracted away from the code.

  • Efficiency: expressing algorithms in the programming model should not result in an unduly large execution overhead.

  • Performance predictability: programmers should be able to predict the relative performance of algorithms using a suitable parallel complexity analysis model.

The Actor model addresses these important concerns. In the Actor model, we think of parallel and distributed systems as a composition of distributed, asynchronous components that are open to interaction with each other and their environment. A component may be software that is executing, or a physical device. We think of components as composed of a collection of autonomous entities called Actors. For example, the processing elements (PEs) of a parallel computer may be modeled as Actors.

The Actor model provides sufficient generality for representing a wide variety of computations. Specifically, Actors are a natural way to integrate concurrency with objects. Beyond data abstraction, the Actor model provides a small number of primitive, atomic operators which simplify synchronization, name space management, scheduling, and memory management. In this paper, we review recent developments in research based on the Actor model and explore how it is used as a unifying model for parallel, distributed, and mobile computing.

The outline of the rest of the sections is as follows. In Section 2, we define basic concepts of the Actor model and discuss typical language constructs for synchronization and communication that are used in high-level Actor languages. In Section 3, we briefly sketch a parallel complexity model for Actors. In Section 4, we describe some implementation techniques which allow high level Actor languages to be efficiently implemented. Section 4also briefly shows the results of experiments using the implementation techniques in a compiler and runtime system for an Actor language. In Section 5, we discuss the usefulness of the Actor model for distributed and mobile computing. In particular, Section 5discusses the use of meta-architectures for customizing applications to address requirements such as heterogeneity and portability. We conclude the paper with a summary and discussion of current research in Actors.

Section snippets

Actors as a unifying model

Actors are autonomous objects: they are objects in that they encapsulate data, methods, and an interface; and they are autonomous in that they encapsulate a thread of control (Fig. 1). Actors interact with their external environment (represented by other actors) by sending and receiving messages. Thus, program execution follows the dynamic data flow implied by the messages – without imposing unnecessary synchronization overhead. Message reception initiates execution of the specified method with

Analysis of parallel complexity for Actors

A programming model is defined not only by specifying the operations that may be performed and how they may be combined, but also by a complexity model which tells us something about the relative performance of a program. Because the performance of an algorithm is strongly dependent on the architecture on which it is implemented as well as the placement and scheduling strategies used, accurately analyzing the complexity of parallel algorithms requires fixing the architecture as well as the

Implementation issues

The main advantage of using Actor languages is that they help programmers build systems at a higher level of abstraction: programmers use an abstract view of parallel execution embodied in a virtual architecture which hides unnecessary architectural details. The disparities between the virtual architecture and an underlying concurrent computer are resolved by a machine-specific runtime kernel. In addition to implementing Actor primitives, the runtime kernel provides the services that are

Actors in distributed computing

The emergence of low-latency, high bandwidth communication networks has made LAN-based cluster computing attractive 6, 37, 27. The rapid growth in the World Wide Web and the availability of architecture-neutral languages supporting remote execution, in particular Java, have made WAN-based Internet computing feasible. Moreover, many corporations are deploying their own “Intranets” for internal client/server applications. In this section, we explore how the Actor model is relevant to traditional

Conclusion

The Actor model offers a number of advantages from a programming perspective. The object style encapsulation is useful for modeling real-world systems, while the autonomy of Actors frees a programmer from the burden of explicitly managing threads and synchronizing them. The Actor message-passing semantics ensures serializability of Actor invocations, eliminating the need to reimplement low-level synchronization primitives such as semaphores and monitors. Mobility is facilitated by the autonomy

Acknowledgements

This work was made possible in part by support from the National Science Foundation under contracts NSF CCR-9523253 and NSF CCR-9619522; by support from the Air Force Office of Science Research, under contract AF DC 5-36128. The authors would like to thank other members of the Open Systems Laboratory for their comments and critical insights into the work related in this paper. In particular, we would like to thank Mark Astley, Nadeem Jamali, Prasannaa Thati, and James Waldby for reading the

Wooyoung Kim is a research scholar at Hewlett Packard Laboratories, in Palo Alto, USA. His research interests include programming languages and runtime support for parallel, distributed, and real-time computing, and development of computing infrastructure on wide area networks. Dr. Kim previously held an appointment as Associate Specialist at Information and Computer Science at the University of California at Irvine, and an appointment as Postdoctoral Research Associate at the University of

References (40)

  • R Panwar et al.

    A methodology for programming scalable architectures

    Journal of Parallel and Distributed Computing

    (1994)
  • G. Agha, Actors: A Model of Concurrent Computation in Distributed Systems, MIT Press, Cambridge, MA,...
  • G Agha

    Concurrent object-oriented programming

    Communications of the ACM

    (1990)
  • G. Agha, N. Jamali, Concurrent Programming for Distributed Artificial Intelligence, in: Gerhard Weiss (Ed.), Multiagent...
  • G. Agha, W. Kim, Parallel programming and complexity analysis using actors, Proceedings of Third International Working...
  • G. Agha, I.A. Mason, S.F. Smith, C.L. Talcott, A foundation for actor computation, Journal of Functional Programming...
  • T.E. Anderson, D.E. Culler, D.A. Patterson, The NOW Team. A case for NOW (Networks of Workstations), IEEE Micro. 15 (1)...
  • M. Astley, G. Agha, Customization and composition of distributed objects: middleware abstractions for policy...
  • R.D. Blumofe, C.F. Joerg, B.C. Kuszmaul, C.E. Leiserson, K.H. Randall, A. Shaw, Y. Zhou, Cilk: an efficient...
  • J.-P. Briot, Modèlisation et Classification de Langages de Programmation Concurrente á objets: l'Expèrience Actalk,...
  • C.J. Callsen, G.A. Agha, Open heterogeneous computing in actorspace, Journal of Parallel and Distributed Computing...
  • A.A. Chien, Concurrent Aggregates: Supporting Modularity in Massively Parallel Programs, MIT Press, Cambridge, MA,...
  • D.E. Culler, A. Dusseau, S.C. Goldstein, A. Krishnamurthy, S. Lumetta, T. von Eicken, K. Yelick. Parallel programming...
  • S. Frølund, Inheritance of synchronization constraints in concurrent object-oriented programming languages, in: O....
  • S. Frølund, G. Agha, A language framework for multi-object coordination, Proceedings of ECOOP 1993, Springer, Berlin,...
  • Svend Frølund, Coordinating Distributed Objects: An Actor-Based Approach to Synchronization, MIT Press, Cambridge, MA,...
  • G. Golub, C. Van Loan, Matrix Computations, The Johns Hopkins University Press, Baltimore, MD,...
  • D Kafura et al.

    ACT++2.0: a class library for concurrent programming in C++ using actors

    Journal of Object-Oriented Programming

    (1993)
  • L.V. Kale, S. Krishnan, CHARM++: a portable concurrent object oriented system based on C++, in: Andreas Paepcke (Ed.),...
  • V. Karamcheti, A.A. Chien, Concert – efficient runtime support for concurrent object-oriented programming languages on...
  • Cited by (23)

    • From global choreographies to verifiable efficient distributed implementations

      2020, Journal of Logical and Algebraic Methods in Programming
      Citation Excerpt :

      The result of this computation would then be stored in the variable value. Many coordination models exist to simplify the modeling of interactions in concurrent and distributed systems, such as in [1,5]. Using these models requires the definition of the local behaviors of the processes and use of the communication model to implement the interactions between them.

    • Protocol Programming: A Layered Programming Paradigm

      2018, Proceedings - 2018 IEEE 15th International Conference on e-Business Engineering, ICEBE 2018
    • From Global Choreography to Efficient Distributed Implementation

      2018, Proceedings - 2018 International Conference on High Performance Computing and Simulation, HPCS 2018
    View all citing articles on Scopus

    1. Download : Download full-size image

    Wooyoung Kim is a research scholar at Hewlett Packard Laboratories, in Palo Alto, USA. His research interests include programming languages and runtime support for parallel, distributed, and real-time computing, and development of computing infrastructure on wide area networks. Dr. Kim previously held an appointment as Associate Specialist at Information and Computer Science at the University of California at Irvine, and an appointment as Postdoctoral Research Associate at the University of Illionis at Urbana-Champaign. Dr. Kim received a PhD in Computer Science at the University of Illinois at Urbana-Champaign and a BS and an MS in Computer Engineering at the Seoul National University.

    1. Download : Download full-size image

    Gul A. Agha Professor Gul Agha is director of the Open Systems Laboratory at the University of Illionis at Urban-Champign. His research interests include models, languages, and tools for parallel, distributed and mobile computing. Dr. Agha is a receipt of the Incentives for Excellence Award from Digital Equipment Corporation, the Naval Young Investigator Award from the US Office of Naval Research and appointment as a Fellow in the University of Illinous Center for Advanced Study. He previsouly held appoinments at MIT and at Yale University. Dr. Agha received an MS and PhD in Computer and Communication Science,and an MA in psychology, all from the University of Michigan, Ann Arbor, and his BS from the California Parallel, Distributed and Mobile Computing, and Associate Editor of ACM Computing Surveys and of Theory and Practice of Object Systems. Dr. Agha is an ACM International Lecturer. He has given invited lectures at over twenty international conferences and eighty universities and research laboratories.

    View full text