Postée il y a 42 jours
Le CEA est un acteur majeur de la recherche, au service des citoyens, de l'économie et de l'Etat.
Il apporte des solutions concrètes à leurs besoins dans quatre domaines principaux : transition énergétique, transition numérique, technologies pour la médecine du futur, défense et sécurité sur un socle de recherche fondamentale. Le CEA s'engage depuis plus de 75 ans au service de la souveraineté scientifique, technologique et industrielle de la France et de l'Europe pour un présent et un avenir mieux maîtrisés et plus sûrs.
Implanté au coeur des territoires équipés de très grandes infrastructures de recherche, le CEA dispose d'un large éventail de partenaires académiques et industriels en France, en Europe et à l'international.
Les 20 000 collaboratrices et collaborateurs du CEA partagent trois valeurs fondamentales :
- La conscience des responsabilités
- La coopération
- La curiosité
Objectifs du Stage :
Étudier les algorithmes existants : Analyse des algorithmes de traitement des données de fusion actuellement implémentés dans un langage propriétaire (comme MATLAB ou IDL) et identifier les fonctionnalités clés à migrer.
Choisir le langage libre approprié : Évaluer et sélectionner un langage open-source (tel que Python, Julia ou R) en fonction de critères tels que la performance, la simplicité de portage, la compatibilité avec les bibliothèques nécessaires, et l'optimisation des performances.
Portage des algorithmes : Réaliser la migration des algorithmes du langage propriétaire vers le nouveau langage open-source. Il s'agit non seulement de traduire le code, mais aussi d'adapter les structures de données, les bibliothèques mathématiques et les paradigmes de programmation. L'objectif est ce conserver les différentes fonctionnalités données par les chercheurs diagnosticiens.
Optimisation des performances : Après le portage, procéder à une optimisation des algorithmes pour garantir une exécution rapide et efficace. Cela inclut l'utilisation de bibliothèques optimisées pour le calcul scientifique (comme NumPy, SciPy, Pandas pour Python) et la parallélisation des tâches si nécessaire.
Tests et validation : Mettre en place des tests comparatifs pour valider les résultats des nouveaux algorithmes en les confrontant aux solutions propriétaires. S'assurer que les performances et les résultats des nouveaux algorithmes sont équivalents ou supérieurs à ceux des versions propriétaires.
Tâches du Stagiaire :
Phase de découverte : Comprendre les algorithmes propriétaires actuels et leur environnement d'exécution.
Phase de conception : Participer à l'évaluation et à la sélection des langages et bibliothèques libres les plus adaptés.
Phase de développement : Porter les algorithmes du langage propriétaire vers un langage libre, en s'assurant de la compatibilité et de la robustesse des nouvelles implémentations.
Phase de validation : Effectuer des tests unitaires et fonctionnels pour comparer les résultats des algorithmes migrés avec ceux des solutions propriétaires.
Documentation : Rédiger une documentation claire sur le processus de migration, les outils utilisés et les méthodes d'optimisation.
Compétences Requises :
Langages de programmation : Bonne maîtrise d'au moins un langage propriétaire (MATLAB, IDL, etc.) et d'un langage libre (Python, Julia, R, etc.).
Traitement des données : Connaissances en algorithmes de traitement de données, particulièrement dans le contexte des données de fusion.
Optimisation d'algorithmes : Connaissance des techniques d'optimisation des algorithmes (profiling, parallélisation, réduction de complexité).
Outils scientifiques : Expérience avec les bibliothèques de calcul scientifique (NumPy, SciPy, Pandas) et les environnements de développement collaboratifs (Git, Jupyter).
Profil Recherché :
Étudiant(e) en dernière année d'école d'ingénieur ou en Master 2 avec une spécialisation en informatique, mathématiques appliquées, ou traitement de données.
Autonomie, rigueur et capacité à résoudre des problèmes complexes.
Intérêt pour le logiciel libre et l'open source.
Compétences Requises :
Langages de programmation : Bonne maîtrise d'au moins un langage propriétaire (MATLAB, IDL, etc.) et d'un langage libre (Python, Julia, R, etc.).
Traitement des données : Connaissances en algorithmes de traitement de données, particulièrement dans le contexte des données de fusion.
Optimisation d'algorithmes : Connaissance des techniques d'optimisation des algorithmes (profiling, parallélisation, réduction de complexité).
Outils scientifiques : Expérience avec les bibliothèques de calcul scientifique (NumPy, SciPy, Pandas) et les environnements de développement collaboratifs (Git, Jupyter).
Profil Recherché :
Étudiant(e) en dernière année d'école d'ingénieur ou en Master 2 avec une spécialisation en informatique, mathématiques appliquées, ou traitement de données.
Autonomie, rigueur et capacité à résoudre des problèmes complexes.
Intérêt pour le logiciel libre et l'open source.