Faire passer les campagnes de simulation à l'échelle
Exécuter des modèles plus grands, des études paramétriques plus larges et des expériences numériques plus exigeantes avec une utilisation prévisible des ressources.
CALCUL HAUTE PERFORMANCE
Nous aidons les logiciels scientifiques et d'ingénierie à exploiter les clusters, le parallélisme et le matériel moderne sans compromettre la justesse des résultats ni la facilité de maintenance.
Le calcul haute performance vise à exécuter efficacement des calculs scientifiques et d'ingénierie exigeants sur du matériel réel. Cela couvre l'algorithme, l'organisation mémoire, les schémas de communication, les entrées-sorties, le modèle d'exécution et la façon dont les performances sont mesurées.
Ajouter du matériel ne suffit pas à obtenir des résultats plus rapides ou plus fiables. Un système HPC utile met en adéquation la charge numérique et la machine : CPU, GPU, hiérarchie mémoire, interconnexions, stockage, ordonnanceurs et contraintes de l'équipe qui devra l'exploiter.
Exécuter des modèles plus grands, des études paramétriques plus larges et des expériences numériques plus exigeantes avec une utilisation prévisible des ressources.
Identifier les vrais goulets d'étranglement en calcul, communication, accès mémoire ou I/O au lieu de deviner où le temps est passé.
Structurer compilation, lancement, ordonnancement et mouvements de données autour des systèmes sur lesquels le logiciel s'exécute réellement.
Évaluer si les GPU ou autres accélérateurs conviennent à la charge, puis restructurer le code lorsque l'accélération est justifiée.
Transformer benchmarks et tests de passage à l'échelle en contrôles répétables qui révèlent les régressions avant qu'elles n'affectent la production.
Améliorer le stockage, le checkpointing, le redémarrage, le post-traitement et les stratégies de sortie pour les grandes exécutions et les longues campagnes.
Nous intervenons lorsque la performance dépend à la fois du comportement numérique, de l'architecture du code et des contraintes matérielles. Nous pouvons travailler dans une base de code existante, concevoir une stratégie de passage à l'échelle ou développer l'environnement d'exécution qui rend le HPC utilisable par une équipe d'ingénierie.
Profiler les calculs, inspecter le comportement au passage à l'échelle et distinguer le coût algorithmique des goulets d'étranglement liés à la mise en œuvre ou au système.
Concevoir ou améliorer l'exécution parallèle avec MPI, mémoire partagée, décomposition de tâches ou modèles hybrides.
Restructurer les mouvements de données, les schémas de stockage et les accès mémoire lorsqu'ils limitent le débit ou le passage à l'échelle.
Développer scripts, modèles de jobs, orchestration d'exécutions et environnements reproductibles pour clusters et traitements batch.
Créer des tests de performance, exécutions de référence et contrôles CI qui suivent ensemble vitesse, passage à l'échelle et sortie numérique.
Améliorer checkpointing, redémarrage, exécution de campagnes, logs et post-traitement pour exploiter de grands calculs de manière fiable.
Ce travail est pertinent pour les équipes dont les simulations, solveurs ou chaînes numériques sont trop lents, trop fragiles ou trop difficiles à exécuter à l'échelle requise. Il l'est d'autant plus lorsque ces calculs ont déjà un rôle opérationnel.
Il l'est aussi pour les équipes qui passent du calcul sur poste aux clusters, ou de grandes exécutions ponctuelles à des campagnes de simulation répétables nécessitant performance, traçabilité et fiabilité.