Welcome to our Accelerator working group

Nowadays, 90-99 % of the performance of large-scale machines come from accelerators. Because these are massively multi-threaded, they require generating specific computation binaries that expose massive parallelism (kernels), and managing the concurrent execution between generic-purpose CPUs and accelerators. Migrating existing applications to leverage accelerators is thus a both essential and ambitious challenge. The Accelerator working group of the NumPEx project thus aims at helping application developers toward productive programming and efficient exploitation of accelerators.

In the most favorable applicative cases, libraries already exist that provide computation capacities that applications require, for instance the usual BLAS operations are commonly supported by accelerator manufacturers themselves, and more involved linear algebra operations with multi-accelerator support can be supported by third-party libraries such as Chameleon. Complete frameworks may also exist that allow to express the desired computation, and let a compilation chain generate accelerator-ready binaries. In many cases however, application developers have to port their own source code to accelerators. This can be achieved by directly programming in the manufacturer-provided language (CUDA/HIP) at the expense of portability, or with more higher-level approaches such as Kokkos or OpenACC. In all cases, the execution of resulting computation kernels needs to be optimized according to the targeted system.

The NumPEx project work packages include contributing to several aspects:

    • Accelerator support in numerical Methods and Algorithms of the project
    • Composition-based programming models for accelerators
    • Kernel generation optimized by the compiler, generating different variants
    • Runtime management of task-based approaches to optimize execution
    • Energy profiling and scheduling
    • Deployment portability of the resulting binary

The NumPEx Accelerator working group plans for the following actions:

    • Feed a call for projects to complement the NumPEx contributions
    • Organize tutorials on the different approaches (In collaboration with the NumPEx training working group and CExA)
    • Organize workshops with manufacturers to check proposals, solutions, road-maps
    • Organize workshops on compilation-based optimization approaches
    • Organize workshops on the programming approaches
    • Provide application port examples, as mini-apps, to demonstrate effective methodologies
    • Publish analysis papers, to describe the current situation and provide rationales for application porting.

Our events

Journées programmation GPU - 12-13th, June 2024

On June 12-13th 2024, the group held a workshop to take a first review of the current situation:

    • We described the different available approaches
    • We collected feedback from programmers using the different approaches
    • We brainstormed on what contributions could complement the existing NumPEx plans, to nourish a “GPU” call for projects