Ingénieur Informatique Système Migcheck H/F - Institut Polytechnique de Grenoble
- Saint-Martin-d'Hères - 38
- CDD
- Institut Polytechnique de Grenoble
Les missions du poste
Contexte:
Ce poste s'inscrit dans le projet ANR YUPIM, consacré à l'optimisation de l'utilisation des ressources des architectures Processing-in-Memory (PIM), en particulier UPMEM. L'équipe KrakOS a développé Faho, un prototype de système d'exploitation fondé sur une architecture de noyau hiérarchique, composé de Faho Host (CPU) et Faho DPU (DPUs).
Objectif de la mission:
Il s'agit de concevoir, mettre en oeuvre et évaluer des optimisations des mécanismes de communication entre les applications externes et Faho Host, ainsi qu'entre Faho Host et Faho DPU, afin de réduire les surcoûts et d'améliorer les performances globales de Faho.
Activités principales :
- Analyser et caractériser les chemins de communication existants et identifier les principaux goulots d'étranglement (latence, débit, copies mémoire, synchronisations, appels système).
- Concevoir des mécanismes de communication et d'échange de données plus efficaces entre le CPU hôte, Faho Host et les DPUs UPMEM.
- Développer et intégrer les optimisations au prototype Faho, en veillant à leur robustesse et à leur maintenabilité.
- Mettre en place des micro-benchmarks et des scénarios applicatifs pour mesurer les gains de performance et comparer les différentes solutions.
- Réaliser des campagnes d'expérimentation, analyser les résultats et documenter les choix d'architecture et d'implémentation.
- Participer aux réunions techniques du projet YUPIM, présenter l'avancement des travaux et contribuer aux livrables et rapports techniques.
Le profil recherché
Niveau minimum requis Bac +5 en informatique (école d'ingénieurs ou Master 2), avec une spécialisation ou une expérience significative en systèmes, réseaux et/ou architectures informatiques.
Compétences:
- Très bonne maîtrise de la programmation système en C/C++ et des environnements Linux
- Solides connaissances en systèmes d'exploitation : processus/threads, mémoire, synchronisation, appels système, entrées-sorties et mécanismes de communication
- Bonnes connaissances en réseaux et communications bas niveau, avec une capacité à raisonner sur la latence, le débit et les coûts de transfert de données
- Connaissances en architectures multicoeurs, accélérateurs et/ou Processing-in-Memory (une expérience de la plateforme UPMEM serait un avantage)
- Maîtrise des outils de développement et de débogage sous Linux (Git, GDB, Make/CMake ou équivalent) et capacité à utiliser des outils de profilage et d'analyse de performances
- Capacité à concevoir des benchmarks, conduire des expérimentations reproductibles et analyser quantitativement les performances
- Des connaissances en Cloud, virtualisation ou environnements distribués constituent un atout
- Autonomie, rigueur, capacité d'analyse et de résolution de problèmes
- Aptitude au travail en équipe
- Capacité à rédiger des rapports techniques et à conduire/présenter des réunions
- Excellente maîtrise de l'anglais aussi bien à l'oral qu'à l'écrit