PDF
Optimisation de performances de calcul scientifique en c++ pour la mission spatiale Euclid (6 mois)
Optimising scientific computing performance in C++ for the Euclid space mission (6 months)

Spécialité

Génie logiciel

Niveau d'étude

Bac+4/5

Formation

Ingenieur/Master

Unité d'accueil

Candidature avant le

31/08/2024

Durée

6 mois

Poursuite possible en thèse

non

Contact

Dagoneau Nicolas
+33 1 69 08 82 54

Résumé/Summary
Optimisation des performances de calcul scientifique pour améliorer la rapidité et l’efficacité d’un code en C++ utilisé pour le traitement au sol des données de la mission spatiale Euclid.
Optimising scientific computing performance to improve the speed and efficiency of a C++ code used for ground processing of data from the Euclid space mission.
Sujet détaillé/Full description
La mission spatiale Euclid, lancée le 1er juillet 2023, a pour objectif de faire des relevés de galaxies afin d’étudier la distribution de masse dans l’Univers. Pour cela, le Laboratoire d’ingénierie logicielle pour les applications scientifiques (LILAS) est en charge du développement d’une partie du code d’analyse (voir : https://www.aanda.org/articles/aa/full_html/2020/06/aa36865-19/aa36865-19.html). Ce code est développé en C++ (<= C++ 17), et fait largement appel aux principes de la programmation orientée objet et de la programmation générique (templates). Il est composé de librairies basées sur des classes et de programmes qui utilisent ces classes pour remplir les objectifs fixés par la mission Euclid. Ces programmes ont vocation à être exécutés par le pipeline de traitement de données au sol.
Le code d’analyse doit être en mesure de traiter un grand nombre de galaxies rassemblées dans des catalogues. Ces catalogues, qui regroupent des centaines de millions de galaxies, sont représentés par des fichiers pouvant atteindre plusieurs dizaines de gigaoctets. La lecture et l’analyse d’un tel fichier posent un défi. Actuellement, le code d’analyse doit lire le catalogue plusieurs fois au cours d’une même exécution, ce qui entraîne une augmentation du temps de traitement et de la quantité de mémoire consommée.
L’objectif de ce stage est d’optimiser la lecture des catalogues par le code d’analyse afin d’améliorer sa rapidité d’exécution. Il s’agira notamment d’implémenter en C++ une nouvelle méthode de traitement qui ne nécessite qu’une seule lecture du fichier pour chaque exécution. Les performances (rapidité et consommation de mémoire) de cette nouvelle implémentation devront être évaluées et comparées à celles de la méthode actuelle. Un objectif secondaire envisageable est l’optimisation des traitements ultérieurs en utilisant des méthodes de calcul parallèle.
Ce stage offrira au candidat ’l’opportunité d’accroître ses compétences en C++ moderne et son utilisation dans le cadre d’un grand projet scientifique, ainsi qu’en algorithmique.
Le candidat recherché doit pouvoir justifier d’un niveau de maîtrise du C++ suffisant ainsi que des principes de la programmation orientée objet. Il doit également maîtriser le développement avec un IDE de son choix (Eclipse, Visual Studio) ainsi que l’utilisation de Git.
The aim of the Euclid space mission, launched on 1 July 2023, is to survey galaxies in order to study mass distribution in the Universe. To achieve this, the Laboratoire d'ingénierie logicielle pour les applications scientifiques (LILAS) is in charge of developing part of the analysis code (see: https://www.aanda.org/articles/aa/full_html/2020/06/aa36865-19/aa36865-19.html). This code is developed in C++ (<= C++ 17), and makes extensive use of the principles of object-oriented programming and generic programming (templates). It is made up of class-based libraries and programs that use these classes to meet the objectives set by the Euclid mission. These programs are intended to be executed by the ground data processing pipeline.
The analysis code must be able to process a large number of galaxies collected in catalogues. These catalogues, which contain hundreds of millions of galaxies, are represented by files that can be several tens of gigabytes in size. Reading and analysing such a file poses a challenge. Currently, the analysis code has to read the catalogue several times during a single run, which increases processing time and the amount of memory consumed.
The aim of this internship is to optimise the reading of catalogues by the analysis code in order to improve its execution speed. In particular, it will involve implementing a new processing method in C++ that only requires a single reading of the file for each execution. The performance (speed and memory consumption) of this new implementation will have to be evaluated and compared with that of the current method. A possible secondary objective is to optimise subsequent processing using parallel computing methods.
This internship will give the candidate the opportunity to develop their skills in modern C++ and its use in a major scientific project, as well as in algorithms.
The successful candidate must have a sufficient level of proficiency in C++ and in the principles of object-oriented programming. They must also be proficient in development using an IDE of their choice (Eclipse, Visual Studio) and in the use of Git.
Mots clés/Keywords
C++, calcul parallèle
C++, parallel computing
Logiciels
C++, Git, Unix, eclipse, Visual Studio, docker, CMake

 

Retour en haut