Title: Design of a modern C++ library for performance-portable mesh handling on GPU
Date: 2021-11-23 17:02
Authors: Julien Bigot
Job_Location: Maison de la Simulation
Job_Duration: 4 à 6 mois
Maison de la Simulation offers a Master 2, or projet de fin d’études internship to design the GPU version of a library leveraging the latest features of C++ to handle high-dimensional meshes.
ddc is a C++ header-only domain decomposition library developed at Maison de la Simulation. ddc aims to support intensive computation over high-dimensional meshes. It provides multi-dimensional containers (based on std::mdspan  proposed for C++23), iterators over geometric elements and type-safe array indexing. By giving a mesh semantic to algorithms, ddc eases working on fields mapped on sub-meshes, and switching between meshes; it supports writing generic mesh-independant algorithms, or optimized mesh-specific algorithms.
ddc design is a work in progress whose first prototype targets CPU. The goal of the internship is
to evaluate the design changes required to support portability to GPU. The proposed design should support seamless feature and performance portability between CPU and GPU. To reach that goal, std::mdspan might be replaced by Kokkos  equivalents and iteration algorithms will have to be designed that work on both CPU and GPU.