Title: Design of a modern C++ library for performance-portable mesh handling on GPU
Date: 2021-11-23 17:02
Slug: job_7520c446318f4e57ae0e227ea7b2d795
Category: job
Authors: Julien Bigot
Email: julien.bigot@cea.fr
Job_Type: Stage
Tags: stage
Template: job_offer
Job_Location: Maison de la Simulation
Job_Duration: 4 à 6 mois
Job_Website:
Job_Employer: CEA
Expiration_Date: 2022-02-15
Attachment: job_7520c446318f4e57ae0e227ea7b2d795_attachment.pdf
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 [2] 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 [3] equivalents and iteration algorithms will have to be designed that work on both CPU and GPU.