Project Background

The AllScale ToolChain is based on 2 technologies that complement each other, the Insieme Compiler and the HPX runtime system.

Insieme source-to-source C++ compiler

Insieme (http://www.insieme-compiler.org/) is being developed by the Distributed and Parallel Systems (DPS) group at the University of Innsbruck.  The main goal of the Insieme project is to research ways of automatically optimizing parallel programs for homogeneous and heterogeneous multi-core architectures and to provide a source-to-source compiler that offers such capabilities to the user. To that end, Insieme features the following:

  • Support for multiple programming languages and paradigms such as C, Cilk, OpenMP and OpenCL (C++ and MPI support is under development)

  • Multi-objective optimization techniques supporting objectives such as execution time, energy consumption, resource usage efficiency and computing costs

  • The Insieme Runtime System which provides an abstract interface to the hardware infrastructure, offering online code tuning and steering, dynamic reconfiguration of hardware resources and monitoring of the application's performance

  • An input code independent Intermediate Representation (INSPIRE) for developing new compiler techniques to optimize parallel programs

  • A rich analysis and transformation toolbox which operates on INSPIRE and aims to maximize developer productivity when researching new optimizations

  • Deep integration between the compiler and its associated runtime system, allowing the convenient exchange of arbitrary meta-information for novel combined optimization strategies

HPX runtime system

HPX (High Performance ParalleX - http://stellar-group.org/libraries/hpx/) is a general purpose C++ runtime system for parallel and distributed applications of any scale. It strives to provide a unified programming model which transparently utilizes the available resources to achieve unprecedented levels of scalability.  This library strictly adheres to the C++11 Standard and leverages the Boost C++ Libraries which makes HPX easy to use, highly optimized, and very portable.  HPX is developed for conventional architectures including Linux-based systems, Windows, Mac, and the BlueGene/Q, as well as accelerators such as the Xeon Phi.

High Performance ParalleX is the first open-source implementation of the ParalleX execution model.   This model focuses on overcoming the four main barriers to scalability:

  • Starvation- insufficient concurrent work available to maintain high utilization of all resources.

  • Latencies- the time-distance delay intrinsic to accessing remote resources and services.

  • Overhead- the work required for the management of parallel actions and resources on the critical execution path which is not necessary in a sequential variant.

  • Waiting for contention resolution- the delay due to the lack of availability of oversubscribed shared resources.

In order to overcome these challenges, HPX utilizes these governing principals: latency hiding vs latency avoidance, fine-grained parallelism vs heavyweight threads, constraint based synchronization vs global barriers, adaptive locality control vs static data distribution, work following data vs data following work, and message driven vs message passing.  These principals are not in themselves new; however, the novel combination of all of these concepts is what makes HPX revolutionary. The proper integration of these concepts have enabled HPX to take advantage of new features such as the migration and a policy based data distribution which allows HPX to be truly runtime adaptive.  We believe that by adhering to these guidelines, HPX will allow applications to efficiently utilize petascale machines and scale on future exascale architectures.

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 671603

Contact Details

General Coordinator

Thomas Fahringer

Scientific Coordinator

Herbert Jordan