228 research outputs found

    libcppa - Designing an Actor Semantic for C++11

    Full text link
    Parallel hardware makes concurrency mandatory for efficient program execution. However, writing concurrent software is both challenging and error-prone. C++11 provides standard facilities for multiprogramming, such as atomic operations with acquire/release semantics and RAII mutex locking, but these primitives remain too low-level. Using them both correctly and efficiently still requires expert knowledge and hand-crafting. The actor model replaces implicit communication by sharing with an explicit message passing mechanism. It applies to concurrency as well as distribution, and a lightweight actor model implementation that schedules all actors in a properly pre-dimensioned thread pool can outperform equivalent thread-based applications. However, the actor model did not enter the domain of native programming languages yet besides vendor-specific island solutions. With the open source library libcppa, we want to combine the ability to build reliable and distributed systems provided by the actor model with the performance and resource-efficiency of C++11.Comment: 10 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

    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

    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

    The short-term electricity production management problem at EDF

    Get PDF
    International audienceProduction management aims at meeting the demand of customers at minimum cost; an electricity producer mainly faces the permanent challenge of matching generation and demand to avoid physical failures of the production system. This article presents how EDF (French Electricity Board) solves this optimization problem: we sketch some issues and the resolution scheme, and we highlight parts of the numerical optimization process of the short term management

    A common nomenclature for assessing low-carbon transition pathways

    Get PDF
    We present ongoing work in the Horizon 2020 project openENTRANCE to develop a common nomenclature for integrated-assessment and energy system scenario results/data. This effort is based on the IAMC data template and the list of variables used in IAM comparison projects (CD-LINKS, ENGAGE, NAVIGATE) and scenario ensemble compilations (IAMC 1.5°C Scenario Data supporting the IPCC SR15). The nomenclature is developed in an interactive process on GitHub comprising technical-engineering, economic and social dimensions and seeks to bridge a user-focused, easy-to-read file format with a structure that can be used in scripted workflows. To facilitate an open discussion and for making it easy for non-experts to get an understanding of the code lists and related definitions, the nomenclature is implemented using the yaml-file format for listing variables and regions together with definitions and additional information. We also implemented an installable Python package providing several validation and utility functions of conforming to the nomenclature, so that definitions and mappings can be easily used in scripted scientific workflows for automated scenario processing. More information: https://github.com/openENTRANCE/nomenclatur

    Outcomes following arthroscopic transosseous equivalent suture bridge double row rotator cuff repair: a prospective study and short-term results

    Get PDF
    Background: The transosseous-equivalent cross bridge double row (TESBDR) rotator cuff (RC) repair technique has been developed to optimize healing biology at a repaired RC tendon insertion. It has been shown in the laboratory to improve pressurized contact area and mean foot print pressure when compared with a double row anchor technique. Pressure has been shown to influence healing between tendon and bone, and the tendon compression vector provided by the transosseous-equivalent suture bridges may enhance healing. The purpose was to prospectively evaluate the outcomes of arthroscopic TESBDR RC repair. Methods: Single center prospective case series study. Sixty-nine patients were selected to undergo arthroscopic TESBDR RC repair and were included in the current study. Primary outcome measures included the Oxford Shoulder Score (OSS), the University of California, Los Angeles (UCLA) score, the Constant-Murley (CM) Score and Range of motion (ROM). Secondary outcome measures included a Visual Analogue Scale (VAS) for pain, another VAS for patient satisfaction from the operative procedure, EuroQoL 5-Dimensions Questionnaire (EQ-5D) for quality of life assessment. Results: At 24 months post-operative, average OSS score was 44, average UCLA score was 31, average CM score was 88, average forward flexion was 145°, average internal rotation was 35°, average external rotation was 79°, average abduction was 150°, average EQ-5D score was 0.73, average VAS for pain was 2.3, and average VAS for patient satisfaction was 9.2. Conclusion: Arthroscopic TESBDR RC repair is a procedure with good post-operative functional outcome and low re-tear rate based on a short term follow-up
    corecore