18 research outputs found

    Revisiting Actor Programming in C++

    Full text link
    The actor model of computation has gained significant popularity over the last decade. Its high level of abstraction makes it appealing for concurrent applications in parallel and distributed systems. However, designing a real-world actor framework that subsumes full scalability, strong reliability, and high resource efficiency requires many conceptual and algorithmic additives to the original model. In this paper, we report on designing and building CAF, the "C++ Actor Framework". CAF targets at providing a concurrent and distributed native environment for scaling up to very large, high-performance applications, and equally well down to small constrained systems. We present the key specifications and design concepts---in particular a message-transparent architecture, type-safe message interfaces, and pattern matching facilities---that make native actors a viable approach for many robust, elastic, and highly distributed developments. We demonstrate the feasibility of CAF in three scenarios: first for elastic, upscaling environments, second for including heterogeneous hardware like GPGPUs, and third for distributed runtime systems. Extensive performance evaluations indicate ideal runtime behaviour for up to 64 cores at very low memory footprint, or in the presence of GPUs. In these tests, CAF continuously outperforms the competing actor environments Erlang, Charm++, SalsaLite, Scala, ActorFoundry, and even the OpenMPI.Comment: 33 page

    A Configurable Transport Layer for CAF

    Full text link
    The message-driven nature of actors lays a foundation for developing scalable and distributed software. While the actor itself has been thoroughly modeled, the message passing layer lacks a common definition. Properties and guarantees of message exchange often shift with implementations and contexts. This adds complexity to the development process, limits portability, and removes transparency from distributed actor systems. In this work, we examine actor communication, focusing on the implementation and runtime costs of reliable and ordered delivery. Both guarantees are often based on TCP for remote messaging, which mixes network transport with the semantics of messaging. However, the choice of transport may follow different constraints and is often governed by deployment. As a first step towards re-architecting actor-to-actor communication, we decouple the messaging guarantees from the transport protocol. We validate our approach by redesigning the network stack of the C++ Actor Framework (CAF) so that it allows to combine an arbitrary transport protocol with additional functions for remote messaging. An evaluation quantifies the cost of composability and the impact of individual layers on the entire stack

    Parallel Exploration of Directed Acyclic Graphs using the Actor Model

    Full text link
    In this paper we describe a generic scheme for the parallel exploration of directed acyclic graphs starting from one or more `roots' of the graph. Our scheme is designed for graphs with the following properties, (i) discovering neighbors at any node requires a non-trivial amount of computation, it is not a simple lookup; (ii) once a node is processed, all its neighbors are discovered; (iii) each node can be discovered through multiple paths, but should only be processed once. Several computational problems can be reduced to traversing such graphs, where the goal is to explore the graph and build a traversal roadmap. As a proof of concept for the effectiveness of our scheme at achieving speedup due to parallelism, we implement the scheme for the parallel exploration of assembly landscape using the EASAL methodology

    OpenCL Actors - Adding Data Parallelism to Actor-based Programming with CAF

    Full text link
    The actor model of computation has been designed for a seamless support of concurrency and distribution. However, it remains unspecific about data parallel program flows, while available processing power of modern many core hardware such as graphics processing units (GPUs) or coprocessors increases the relevance of data parallelism for general-purpose computation. In this work, we introduce OpenCL-enabled actors to the C++ Actor Framework (CAF). This offers a high level interface for accessing any OpenCL device without leaving the actor paradigm. The new type of actor is integrated into the runtime environment of CAF and gives rise to transparent message passing in distributed systems on heterogeneous hardware. Following the actor logic in CAF, OpenCL kernels can be composed while encapsulated in C++ actors, hence operate in a multi-stage fashion on data resident at the GPU. Developers are thus enabled to build complex data parallel programs from primitives without leaving the actor paradigm, nor sacrificing performance. Our evaluations on commodity GPUs, an Nvidia TESLA, and an Intel PHI reveal the expected linear scaling behavior when offloading larger workloads. For sub-second duties, the efficiency of offloading was found to largely differ between devices. Moreover, our findings indicate a negligible overhead over programming with the native OpenCL API.Comment: 28 page

    Анализ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ простой систСмы Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния для Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ программирования Π½Π° языкС Π‘++

    Get PDF
    Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ прСдставлСна систСма Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Templet для Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ программирования Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний Π½Π° языкС Π‘++. РассмотрСн ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ систСмы Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π‘++11, ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΅Π³ΠΎ отличия ΠΎΡ‚ классичСских Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ систСмы Templet доказываСтся Π½Π° основС ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ исслСдования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Ρ€Ρ‘Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: эталонного ΠΊΠΎΠ΄Π° Π½Π° языкС Π‘++, управляСмого OpenMP; Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° языкС Π‘++, управляСмого систСмой Templet; Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° языкС Java, управляСмого систСмой Akka. Π’ качСствС тСстовой Π·Π°Π΄Π°Ρ‡ΠΈ рассмотрСн числСнный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ уравнСния тСплопроводности.Авторы Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ РЀЀИ Π·Π° Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… исслСдований Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π³Ρ€Π°Π½Ρ‚Π° 15-0805934 А

    Exploiting the structure of communication in actor systems

    Get PDF
    We propose a novel algorithm for minimizing communication costs of multi-threaded and distributed actor systems, to gain performance advantage by dynamically adapting to the structure of actor communication. We provide an implementation in Circo, an open source actor system, and show promising experimental results

    A UPC++ Actor Library and Its Evaluation on a Shallow Water Proxy Application

    Get PDF
    Programmability is one of the key challenges of Exascale Computing. Using the actor model for distributed computations may be one solution. The actor model separates computation from communication while still enabling their over-lap. Each actor possesses specified communication endpoints to publish and receive information. Computations are undertaken based on the data available on these channels. We present a library that implements this programming model using UPC++, a PGAS library, and evaluate three different parallelization strategies, one based on rank-sequential execution, one based on multiple threads in a rank, and one based on OpenMP tasks. In an evaluation of our library using shallow water proxy applications, our solution compares favorably against an earlier implementation based on X10, and a BSP-based approach

    Exploiting the structure of communication in actor systems

    Get PDF
    We propose a novel algorithm for minimizing communication costs of multi-threaded and distributed actor systems, to gain performance advantage by dynamically adapting to the structure of actor communication. We provide an implementation in Circo, an open source actor system, and show promising experimental results
    corecore