30 research outputs found

    A System Environment for the Creation of Parallel C++ Programs and their Execution in Heterogeneous Distributed Systems

    No full text
    Diese Arbeit behandelt die Realisierung und die Anwendung der Systemumgebung DOTS (Distributed Object-Oriented Threads System) zur Erstellung paralleler C++ Programme. DOTS verwirklicht insbesondere spezielle Anforderungen zur Parallelisierung von Algorithmen aus dem Bereich des symbolischen Rechnens. Die effiziente Parallelisierung der sich typischerweise rasch fortentwickelnden sequentiellen Verfahren des symbolischen Rechnens wird durch das von DOTS realisierte parallele Programmiermodell des strikten Multithreading im besonderem Maße unterstützt. Die hohe Abstraktionsebene dieses Modells gewährleistet die weitgehende Übernahme der sequentiellen Entwicklungsmethodik und ermöglicht somit die schnelle und einfache Erstellung paralleler Programme ausgehend von einer sequentiellen Codebasis. Das Programmiermodell ist durch eine kompakte Programmierschnittstelle mit vollständig orthogonal verwendbaren Primitiven verwirklicht. Die Behandlung des oftmals anzutreffenden hohen Grads an Nichtdeterminismus der parallelisierten Programme wird durch die Integration spezieller Primitive in das Programmiermodell des strikten Multithreading von DOTS berücksichtigt. DOTS wurde zur Erstellung paralleler C++ Programme entwickelt, die in heterogenen verteilten Systemen ausgeführt werden können. Die Laufzeitumgebung von DOTS integriert ein breites Spektrum von Rechnerarchitekturen und Betriebssystemen (Microsoft Windows PCs, Unix Workstations, Realzeitsysteme und IBM Mainframe Cluster) in eine homogene Umgebung zur Ausführung verteilter paralleler C++ Programme. Als Anwendungsbeispiel aus dem Bereich des symbolischen Rechnens wird die Parallelisierung eines dynamisch lernenden Verfahrens zur booleschen Erfüllbarkeitsprüfung ausführlich vorgestellt. Außerdem werden parallele Verfahren zur Faktorisierung und zur Volumenvisualisierung behandelt.This thesis deals with the realization and the application of the system environment DOTS (Distributed Object-Oriented Threads System) which has been designed for the development of parallel C++ programs. DOTS particularly addresses the specific requirements for the parallelization of algorithms from the realm of symbolic computation. The efficient parallelization of the typically rapidly evolving sequential methods from symbolic computation is especially supported by the strict multithreading parallel programming model realized by DOTS. The high level of abstraction of this model ensures the adoption of sequential development methodology and thus permits the fast and easy creation of parallel programs starting from a sequential code base. The programming model is realized by a compact programming interface of completely orthogonal primitives. For treating the frequently occurring high degree of non-determinism of the resulting parallel programs special constructs are integrated in the strict multithreading model of DOTS. DOTS has been designed to create parallel C++ programs that can be executed in heterogeneous distributed systems. The run-time system of DOTS integrates a wide range of computer architectures and operating systems (Microsoft Windows PCs, Unix Workstations, real-time systems and IBM Mainframe Clusters) into a homogeneous environment for executing distributed parallel C++ programs. As example application from the realm of symbolic computation the parallelization of a dynamically learning boolean satisfiability checking algorithm is presented in detail. Additionally, parallel applications for integer factorization and volume rendering are discussed

    Elastic parallel systems for high performance cloud computing: state-of-the-art and future directions

    No full text
    With on-demand access to compute resources, pay-per-use, and elasticity, the cloud evolved into an attractive execution environment for High Performance Computing (HPC). Whereas elasticity, which is often referred to as the most beneficial cloud-specific property, has been heavily used in the context of interactive (multi-tier) applications, elasticity-related research in the HPC domain is still in its infancy. Existing parallel computing theory as well as traditional metrics to analytically evaluate parallel systems do not comprehensively consider elasticity, i.e., the ability to control the number of processing units at runtime. To address these issues, we introduce a conceptual framework to understand elasticity in the context of parallel systems, define the term elastic parallel system, and discuss novel metrics for both elasticity control at runtime as well as the ex post performance evaluation of elastic parallel systems. Based on the conceptual framework, we provide an in depth analysis of existing research in the field to describe the state-of-the art and compile our findings into a research agenda for future research on elastic parallel systems

    The Design of an API for Strict Multithreading in C++

    No full text
    Abstract. This paper deals with the design of an API for building distributed parallel applications in C++ which embody strict multithreaded computations. The API is enhanced with mechanisms to deal with highly irregular non-deterministic computations often occurring in the field of parallel symbolic computation. The API is part of the Distributed Object-Oriented Threads System DOTS. The DOTS environment provides support for strict multithreaded computations on highly heterogeneous networks of workstations.

    An elasticity description language for task-parallel cloud applications

    No full text
    In recent years, the cloud has become an attractive execution environment for parallel applications, which introduces novel opportunities for versatile optimizations. Particularly promising in this context is the elasticity characteristic of cloud environments. While elasticity is well established for client-server applications, it is a fundamentally new concept for parallel applications. However, existing elasticity mechanisms for client-server applications can be applied to parallel applications only to a limited extent. Efficient exploitation of elasticity for parallel applications requires novel mechanisms that take into account the particular runtime characteristics and resource requirements of this application type. To tackle this issue, we propose an elasticity description language. This language facilitates users to define elasticity policies, which specify the elasticity behavior at both cloud infrastructure level and application level. Elasticity at the application level is supported by an adequate programming and execution model, as well as abstractions that comply with the dynamic availability of resources. We present the underlying concepts and mechanisms, as well as the architecture and a prototypical implementation. Furthermore, we illustrate the capabilities of our approach through real-world scenarios

    Model-based generation of self-adaptive cloud services

    No full text
    An important shift in software delivery is the definition of a cloud service as an independently deployable unit by following the microservices architectural style. Container virtualization facilitates development and deployment by ensuring independence from the runtime environment. Thus, cloud services are built as container based systems - a set of containers that control the lifecycle of software and middleware components. However, using containers leads to a new paradigm for service development and operation: Self service environments enable software developers to deploy and operate container based systems on their own - you build it, you run it. Following this approach, more and more operational aspects are transferred towards the responsibility of software developers. In this work, we propose a concept for self-adaptive cloud services based on container virtualization in line with the microservices architectural style and present a model-based approach that assists software developers in building these services. Based on operational models specified by developers, the mechanisms required for self-adaptation are automatically generated. As a result, each container automatically adapts itself in a reactive, decentralized manner. We evaluate a prototype which leverages the emerging TOSCA standard to specify operational behavior in a portable manner

    Equilibrium : an elasticity controller for parallel tree search in the cloud

    No full text
    Elasticity is considered to be the most beneficial characteristic of cloud environments, which distinguishes the cloud from clusters and grids. Whereas elasticity has become mainstream for web-based, interactive applications, it is still a major research challenge how to leverage elasticity for applications from the high-performance computing (HPC) domain, which heavily rely on efficient parallel processing techniques. In this work, we specifically address the challenges of elasticity for parallel tree search applications. Well-known meta-algorithms based on this parallel processing technique include branch-and-bound and backtracking search. We show that their characteristics render static resource provisioning inappropriate and the capability of elastic scaling desirable. Moreover, we discuss how to construct an elasticity controller that reasons about the scaling behavior of a parallel system at runtime and dynamically adapts the number of processing units according to user-defined cost and efficiency thresholds. We evaluate a prototypical elasticity controller based on our findings by employing several benchmarks for parallel tree search and discuss the applicability of the proposed approach. Our experimental results show that, by means of elastic scaling, the performance can be controlled according to user-defined thresholds, which cannot be achieved with static resource provisioning

    A survey on cloud migration strategies for high performance computing

    No full text
    The cloud evolved into an attractive execution environment for parallel applications from the High Performance Computing (HPC) domain. Existing research recognized that parallel applications require architectural refactoring to benefit from cloud-specific properties (most importantly elasticity). However, architectural refactoring comes with many challenges and cannot be applied to all applications due to fundamental performance issues. Thus, during the last years, different cloud migration strategies have been considered for different classes of parallel applications. In this paper, we provide a survey on HPC cloud migration research. We investigate on the approaches applied and the parallel applications considered. Based on our findings, we identify and describe three cloud migration strategies

    AUTOGENIC: automated generation of self-configuring microservices

    No full text
    The state of the art proposes the microservices architectural style to build applications. Additionally, container virtualization and container management systems evolved into the perfect fit for developing, deploying, and operating microservices in line with the DevOps paradigm. Container virtualization facilitates deployment by ensuring independence from the runtime environment. However, microservices store their configuration in the environment. Therefore, software developers have to wire their microservice implementation with technologies provided by the target runtime environment such as configuration stores and service registries. These technological dependencies counteract the portability benefit of using container virtualization. In this paper, we present AUTOGENIC - a model-based approach to assist software developers in building microservices as self configuring containers without being bound to operational technologies. We provide developers with a simple configuration model to specify configuration operations of containers and automatically generate a self-configuring microservice tailored for the targeted runtime environment. Our approach is supported by a method, which describes the steps to automate the generation of self-configuring microservices. Additionally, we present and evaluate a prototype, which leverages the emerging TOSCA standard

    TASKWORK: a cloud-aware runtime system for elastic task-parallel HPC applications

    No full text
    With the capability of employing virtually unlimited compute resources, the cloud evolved into an attractive execution environment for applications from the High Performance Computing (HPC) domain. By means of elastic scaling, compute resources can be provisioned and decommissioned at runtime. This gives rise to a new concept in HPC: Elasticity of parallel computations. However, it is still an open research question to which extent HPC applications can benefit from elastic scaling and how to leverage elasticity of parallel computations. In this paper, we discuss how to address these challenges for HPC applications with dynamic task parallelism and present TASKWORK, a cloud-aware runtime system based on our findings. TASKWORK enables the implementation of elastic HPC applications by means of higher level development frameworks and solves corresponding coordination problems based on Apache ZooKeeper. For evaluation purposes, we discuss a development framework for parallel branch-and-bound based on TASKWORK, show how to implement an elastic HPC application, and report on measurements with respect to parallel efficiency and elastic scaling
    corecore