28 research outputs found

    Reparallelization and Migration of OpenMP Programs

    Full text link
    Typical computational grid users target only a single cluster and have to estimate the runtime of their jobs. Job schedulers prefer short-running jobs to maintain a high system utilization. If the user underestimates the runtime, premature termination causes computation loss; overesti-mation is penalized by long queue times. As a solution, we present an automatic reparallelization and migration of OpenMP applications. A reparallelization is dynamically computed for an OpenMP work distribution when the num-ber of CPUs changes. The application can be migrated between clusters when an allocated time slice is exceeded. Migration is based on a coordinated, heterogeneous check-pointing algorithm. Both reparallelization and migration enable the user to freely use computing time at more than a single point of the grid. Our demo applications successfully adapt to the changed CPU setting and smoothly migrate between, for example, clusters in Erlangen, Germany, and Amsterdam, the Netherlands, that use different processors. Benchmarks show that reparallelization and migration im-pose average overheads of about 4 % and 2%. 1

    Verbesserte Effizienz, Flexibilität, und Korrektheit von DSM Systeme

    No full text
    A collection of research topics that together help improve distributed shared memory systems. Contents: Java/OpenMP as a language for cluster and grid computing. The Tapir language as a functional/parallel language to allow both model-checking and parallel-execution for DSM middlewares and general applications.Eine Sammlung von Forschungsberichte die zusammen die Effizienz und Nutzbarkeit von verteilte-gemeinsamen Speicher Systeme (DSM) verbessern. Inhalt: Java/OpenMP wird vorgeschlagen als eine Sprache fĂĽr Grid/Clustercomputing. Die Tapir Sprache wird daneben vorgestellt (eine Funktionale und Parallele Sprache) womit man Laufzeitsysteme und Anwendungen programmieren kann

    Overhead-Free Portable Thread-Stack Checkpoints

    No full text
    Abstract. Checkpointing is the process of taking a snapshot of a thread’s stack and possibly the objects that it uses such that a thread can be either restarted (for error recovery) or moved to another machine (to improve load balancing). Current approaches to thread stack checkpointing are either not heterogeneous as they do not allow a call stack created using architecture X to be restored on a machine with architecture Y or they introduce large runtime overhead. In general, previous approaches add overhead by instrumenting each function in a program to constantly test if the current method invocation is for thread restoration purposes or whether it is a normal invocation. The instrumentation costs are even incurred when no checkpointing is performed. Our implementation introduces no runtime overhead during regular execution. Furthermore our approach supports heterogeneity. We implement this by letting our compiler create extra functions to portably save and rebuild activation records to and from a machine-independent format. Each variable of an activation record is described in terms of its usages in a ’variable usage descriptor string’. As the computed variable usage descriptor strings for a given variable are the same on all architectures they are used to uniquely identify variables inside activation records across different architectures.

    Overhead-Free Heterogeneous Thread-StackCheckpointing

    No full text
    ABSTRACT Checkpointing is the process of taking a snapshot of a thread's stackand possibly the objects that it uses such that a thread can be either restarted (for error recovery) or moved to another machine (to im-prove load balancing)

    Power-Aware Computing A Kernel-Directed Compiler-Assisted Dynamic Voltage Scaling Algorithm

    No full text
    Ich bin damit einverstanden, dass die Arbeit ver"offentlicht und dass in wissenschaftlichenVer"offentlichungen auf sie Bezug genommen wird

    Model checking a cache coherence protocol for a Java DSM implementation

    No full text
    Jackal is a fine-grained distributed shared memory implementation of the Java programming language. It aims to implement Java’s memory model and allows multithreaded Java programs to run unmodified on a distributed memory system. It employs a multiple-writer cache coherence protocol. In this paper, we report on our analysis of this protocol. We present its formal specification in µCRL, and discuss the abstractions that were made to avoid state explosion. Requirements were formulated and model checked with respect to several configurations. Our analysis revealed two errors in the implementation. Key words: formal specification, model checking, cache coherence protocols, Java memory model, µCR
    corecore