EN FR
EN FR


Project Team Runtime


Scientific Foundations
Application Domains
Contracts and Grants with Industry
Bibliography


Project Team Runtime


Scientific Foundations
Application Domains
Contracts and Grants with Industry
Bibliography


Section: New Results

Programming models for heterogeneous platforms

Participants : Olivier Aumage, Cyril Roelandt, Samuel Thibault, Ludovic Courtès.

  • As part of Project FP3C with Japan, we started a study on to explore the use of StarPU as possible target runtime system for the XcalableMP language and compiler developed by Prof. Sato's team from University of Tsukuba. XcalableMP is a pragma-based language designed for parallelising application on clusters of multicore processors. The compiler is responsible to expand XcalableMP pragma into complex work mapping, communication and data redistribution commands.

  • The study of porting XcalableMP on top of StarPU was conducted by Cyril Roelandt during his Master Thesis [55] , starting from the idea that computing node with one or more attached accelerating expansion cards can be seen as a distributed platform. The results of the study showed that on the one side, the power of the XcalableMP language itself is very interesting for the goal of simplifying the port of applications on hetereogeneous platforms. However, a current assumption of the XcalableMP model is that the compiler does not insert implicit commands and behaviour except at the exact location of pragma annotations, which limit the range of optimizations available to the dynamic scheduler and memory manager of StarPU. We will thus continue to collaborate with Prof. Sato's team within the FP3C to see how these limitations could be reduced or lifted when using XcalableMP with StarPU.

  • In an effort to make it easier for C programmers to benefit from StarPU, the team-project has been working on extensions to the C language allowing important StarPU concepts to be expressed concisely. These C extensions are provided as a plug-in for the GNU Compiler Collection (GCC (See http://gcc.gnu.org/ , for more information on GCC.)), and is now distributed as part of StarPU.

    The GCC plug-in extends the syntax and semantics of C and related languages (C++, Objective-C) using attributes and pragmas. Attributes are used, for instance, to declare StarPU tasks and their implementations for the available targets (CPU, OpenCL, CUDA, etc.) Pragmas are used notably to provide programmers a way to describe data buffers that are passed to tasks, which in turn allows the StarPU run-time support to manage data transfers between main memory and GPUs as it sees fit. Finally, tasks are invoked like regular C functions.

    In addition to easing application development, the GCC plug-in, thanks to its higher-level view of the program structure, is able to report certain classes of errors at compile-time, which would otherwise lead to run-time errors.

    This project has been led by Ludovic Courtès of Inria's Development and Experimentation Department (SED) at Bordeaux, as part of a joint development action with the SED.