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.
En cliquant sur "JE DÉPOSE MON CV", vous acceptez nos CGU et déclarez avoir pris connaissance de la politique de protection des données du site jobijoba.com.