Votre navigateur est obsolète !

Pour une expériencenet et une sécurité optimale, mettez à jour votre navigateur. Mettre à jour maintenant

×

Cyril Dieudonné

Développeur logiciel HPC

Cyril Dieudonné
39 ans
Permis de conduire
Situation professionnelle
En poste
Ouvert aux opportunités
Présentation
Diplômé en physique nucléaire, j’ai acquis dans ma carrière de solides compétences en développement et optimisation de codes scientifiques, autant qu’en architecture logicielle.

Après ma thèse, j'ai participé à la maintenance de codes de référence en radioprotection, physique des cœurs et criticité chez CS. Cette expérience m'a permis de découvrir l'ensemble des phases de l'édition logicielle et d'en mesurer toute leur importance.

Par la suite, j'ai intégré le CEA en tant qu'ingénieur-chercheur et RTE en tant que Concepteur développeur. J'ai pu y apporter mon expertise à l'ensemble des phases de production des codes, tout en continuant d'améliorer mon savoir-faire au travers de formations et séminaires. Mes missions portaient sur la conception et le développement d'applications, pour optimiser leurs performances et améliorer l'expérience utilisateur.

Enfin, au sein de Lumivero j'ai mis à profit toutes mes expériences dans le cadre du développement d'addin Excel sur Windows et MacOS. J'y partage mes connaissances au sein de différentes équipes dans le monde, tant pour l'amélioration des produits que pour soutenir l'évolution des équipes.

De nature très curieux, motivé et autodidacte, la transmission de connaissances tient une grande place dans mon ADN. J'ai toujours eu à cœur de travailler en équipe et de transmettre mon savoir-faire aux équipes avec lesquelles j'évolue.
CV réalisé sur DoYouBuzz
  • Développement de backends d'addins Excel en C++17 / C++20, sous Windows et MacOS, dans deux équipes internationales
  • Optimisation du processus de build (profiling MSVC, CMake, Conan)
  • Amélioration de la qualité, des performances et de la robustesse du code
  • Intégration de services IA (C#, Entity Framework)
  • Définition d'une API permettant de relier différents projets (Docker, Linux, gRPC)
  • Support aux migrations des outils DevOps (Git/GitHub, Jenkins, ...) et au développement (trainings, revue de code, ...)
  • Gestion des projets en Agile (SCRUM) avec Jira
Détails de l'expérience
  • Partie technique :
    • Optimisation du processus de build (profiling MSVC, CMake, Conan)
    • Analyse et amélioration des performances (Intel VTune)
    • Migration SVN vers Git
    • Création de tests unitaires C++
    • Migration du système de licence
    • Création d'un SDK C++
    • Mise en place d'une documentation technique (Doxygen)
  • Soutient aux équipes :
    • Revue de code
    • Trainings Git
    • Cours de C++ et de code design
    • Débogage et écriture de tests unitaires
    • Aide à l'amélioration de la CI (Jenkins)
  • Réécriture complète d'un logiciel scientifique (conception et implémentation) pour un super-calculateur
    • Référencement des algorithmes à intégrer (méthodes de calculs alliant mathématiques, physique et informatique)
    • Conception du produit (langages, design, IO, APIs, ...)
    • Définition du plan de développement
    • Recherche sur le portage d'algorithmes vers les GPU
    • Implémentation et tests en production
Détails de l'expérience
  • Architecte logiciel
    • Définition des besoins et du cahier des charges
    • Création de POC pour la structuration des projets
    • Mise en place de l'IC/DC
    • Partage des bonnes pratiques dans l'équipe de développement
  • Lead Dev de codes de neutronique Monte Carlo (Python, C/C++17, CMake)
    • Définition de l'API et de l'interface utilisateur
    • Optimisation de l'algorithmie
    • Amélioration de la lisibilité et de la maintenabilité du code source
  • Amélioration des performances et du parallélisme (MPI, OpenMP, SIMD) sur calculateur CPUs
    • Profilage des codes avec Intel VTune
    • Amélioration de l'équilibrage de charge en multi-threading (OpenMP) et multi-processing (MPI)
    • Optimisation de l'utilisation des caches, de la vectorisation et de l'empreinte mémoire des codes
  • Portage et intégration de codes (Scripting Shell, CMake)
  • Maintenance corrective et adaptative
  • Support aux utilisateurs
  • Développement d'applications Web et desktop (Python), de la conception (code design, algorithmie) au déploiement
  • Support à la création du département et au processus de recrutement
Détails de l'expérience
  • Création d'une application Web pour le pilotage des liaisons à courant continu entre la France et ses différents voisins (Python, Django)
  • Développement d'une application d'optimisation combinatoire et d'aide à la décision pour le développement d'un réseau télécom sur le réseau électrique (Python, Qt, SciPy)
    • résolution du problème de l'arbre de Steiner
  • Aide au processus de recrutement interne (partie technique, algorithmie, C/C++, Python)
  • Partage de connaissances au sein du département (C/C++, Python, architecture)
  • Aide à la définition et la qualification des outils DevOps pour l'intégration et le déploiement continue en C/C++ et Python
  • Création de serveurs Web (Python, Django) et clients lourds (Python, Qt)
  • L'application de pilotage des liaisons à courant continu réalise :
    • la récupération des contraintes physique des liaisons
    • la transformation des programmes issus du marché de l'électricité en programme de marche physiquement réalisable par les installations électriques
    • la modification de ces programmes par les opérateurs
    • la transmission des programmes de marches aux outils de contrôle commande et de facturation
  • Optimisation des calculs réseaux (NumPy, Scipy) selon différents critères utilisateur (technologie de pose, zone géographique, ...) pour minimiser les coût d'installation
  • Création de Tech'Lunch sur le développement en Python (séances d'1h durant la pause déjeuner)
  • Présentation en séminaire de département sur les bonnes pratiques de conception et d'architecture
  • Revue de code de développeurs junior (sur la qualité et l'optimisation du code en C/C++ et Python)
  • Aide à la création de starter-kit (Python/Django) sur GitHub
  • Définition des règles d'analyse des codes C/C++ et Python sur SonarQube
  • Définition des commandes de tests (Python, Django) pour Jenkins
  • Développement (Fortran, C/C++) d'un code de calcul scientifique (méthodes statistiques, Monte Carlo)
  • Optimisation de la mémoire et des performances séquentielles et parallèles (OpenMP, MPI)
  • Maintenance et support aux utilisateurs
Détails de l'expérience
  • Développement de codes de neutronique Monte Carlo (Fortran, C/C++) selon deux axes principaux :
    • Amélioration des performances
    • Maintenance et conception des codes
  • Les performances sont obtenues sur les milliers de CPUs Intel Haswell et KNL du calculateur Tera 1000 :
    • Profilage des codes avec Alinea MAP, Intel VTune et Intel Advisor
    • Amélioration de la scalabilité (faible et forte) en multi-threading (OpenMP) et multi-processing (MPI)
    • Optimisation de l'utilisation des caches, de la vectorisation et de l'empreinte mémoire des codes
  • Développement de nouvelles fonctionnalités et refactorisation du code source (Fortran, C/C++)
  • Profilage et optimisation des codes (Alinea MAP, Intel VTune, Intel Advisor)
  • Portage et intégration de codes sur le calculateur Tera1000 (Scripting Shell, CMake)
  • Maintenance corrective et adaptative, et aide aux utilisateurs (Alinea DDT, TotalView)
  • Amélioration de l'architecture des codes (CMake)
  • Mise à jour du site intranet du laboratoire (PHP, HTML, CSS)
  • Maintenance logicielle et aide aux utilisateurs
Détails de l'expérience
  • Responsable Maintenance Logiciel de plusieurs codes de neutronique du CEA Saclay :
    • APOLLO3 (C++, Fortran) - Calcul de cœurs
    • MENDEL (C++) - Calcul d'évolution
    • GALILEE1 (C++) - Traitement des données nucléaires
    • BDDR2 (HTML, PHP) - Base De Données de Réacteurs
  • Amélioration logicielle :
    • Amélioration du processus de construction logicielle (avec CMake)
    • Mise en place et développement de tests automatiques (tests de non-régressions et tests unitaires, avec CTest et CDash)
  • Aide aux utilisateurs :
    • Livraison et installation des logiciels
    • Présentation des différents modes d'exécutions
    • Débogage des jeux de données utilisateurs
  • Développement de fonctionnalités dans les codes sources (C++)
  • Accélération de la simulation Monte Carlo du transport des neutrons dans un milieu évoluant par la méthode des échantillons corrélés
  • Service d’Etude des Réacteurs et de Mathématiques Appliquées (CEA / DEN / DANS / DM2S / SERMA)
    ENCADRANT : Eric Dumonteil
  • Neutronique et physique des cœurs de réacteurs
  • Développement et utilisation du code Monte Carlo évoluant TRIPOLI-4 (C++, ROOT)
  • Implémentation de l’équation de la diffusion dans un modèle 1D à deux groupes d’énergie (Octave)
  • Service de SImulation NEutronique, Technologies de l’Information et Calcul Scientifique (SINETICS)
    ENCADRANT : T. Courau
  • Etudes et caractérisations de bruits de fond pour la détection de neutrinos de réacteur
  • Service de Physique Nucléaire (CEA / DMS / IRFU / SPhN)
    ENCADRANT: D. Lhuillier
  • Mesure et analyse de bruits de fond au sein du réacteur Osiris
  • Mise en place d’une base de données avec un serveur SQL
  • Simulation de la propagation de photons avec le logiciel SLitrani