Moins de code, plus de science : simplifier la modélisation océanique sur GPU avec OpenACC et mémoire unifiée
TL;DR
- NVIDIA HPC SDK v25.7 fait progresser la programmation en mémoire unifiée pour le HPC avec GPU, automatisant les transferts entre CPU et GPU.
- La release réduit la gestion manuelle des données, raccourcit les cycles de portage sur GPU et diminue les bugs grâce à un espace d’adressage unique.
- Des plateformes cohérentes NVIDIA avec une interconnexion à haut débit (Grace Hopper, GB200 NVL72) permettent la migration automatique des données et une mémoire partagée entre CPU et GPU.
- Le port réel de NEMO (modèle océanique) sur GPU montre des gains autour de 2x à 5x; OpenACC 3.4 introduit le modificateur de capture pour prévenir les conditions de course.
- La mise à jour s’inscrit dans la stratégie de NVIDIA consistant à simplifier le développement sur GPU et à accélérer les charges scientifiques en océanographie et climatologie.
Contexte et antécédents
La programmation en mémoire unifiée est présentée comme une fonction clé pour le HPC sur les systèmes accélérés par GPU. Des plateformes cohérentes comme Grace Hopper et GB200 NVL72 offrent un espace d’adresses partagé entre CPU et GPU, permettant au driver CUDA de gérer automatiquement les transferts de données. Ces capacités reposent sur des interconnexions haut débit (NVLink-C2C) et sur un modèle de mémoire unifiée qui réduit le besoin de transferts explicites. Depuis fin 2023, NVIDIA intègre progressivement la mémoire unifiée dans l’écosystème HPC, avec des systèmes basés sur Grace Hopper déployés dans des centres majeurs comme CSCS en Suisse et JSC en Allemagne. L’objectif est d’augmenter la productivité des développeurs en les libérant des détails logistiques de mouvement de données. NVIDIA HPC SDK v25.7 release. Dans ce contexte, le portage réel de NEMO, cadre de modélisation océanique, sert d’étude de cas concret. Le code NEMO comporte des structures de données complexes (types dérivés, tableaux alloués) qui nécessitaient historiquement une gestion manuelle des transferts lors du portage vers les GPUs. Le blog explique comment la mémoire unifiée peut réduire ou supprimer ce boilerplate, permettant aux développeurs de se concentrer davantage sur le parallélisme. Le texte souligne aussi que les architectures Grace Hopper offrent une cohérence mémoire CPU-GPU grâce à des interconnexions haut débit, améliorant la locality lors des offloads GPU. NVIDIA HPC SDK v25.7 release.
Quoi de neuf
- Ensemble d’outils complet pour la programmation en mémoire unifiée : le HPC SDK 25.7 offre un kit complet qui automatise les transferts de données entre CPU et GPU, réduisant la gestion manuelle et facilitant la parallélisation.
- Moins de gestion des données et portage plus rapide : avec un espace d’adresses partagé, les transferts de données sont gérés par le driver CUDA, réduisant le boilerplate et les bugs.
- Améliorations OpenACC et gestion des conditions de course : le blog explique que l’exécution asynchrone dans OpenACC peut introduire des conditions de course lorsque le GPU accède à des données partagées pendant que le CPU quitte des fonctions. OpenACC 3.4 introduit le modificateur de capture dans les clauses de données pour résoudre ces conditions, permettant un usage asynchrone plus sûr sans refonte lourde. NVIDIA HPC SDK v25.7 release.
- Exécution asynchrone et meilleure concurrence : les développeurs peuvent utiliser des directives asynchrones et une gestion de synchronisation (par exemple, !$acc wait) pour superposer calcul et communication, tout en garantissant la visibilité des données pour MPI ou d’autres routines côté CPU.
- Migration automatique de mémoire et gains de locality : CUDA 12.4 introduit des heuristiques d’accès qui migrent les pages mémoire de la CPU vers la GPU selon le schéma d’utilisation, améliorant la locality sur Grace Hopper. Des mécanismes similaires existent sur des systèmes compatibles Linux avec des noyaux récents.
- Port NEMO (benchmark GYRE_PISCES) : l’exemple de port NEMO sur GPU illustre le flux de travail et les gains de productivité, avec des gains de performance dans la plage ~2x à ~5x lorsque des portions du code sont déplacées vers Hopper. Ce cas démontre l’équilibre entre productivité et performance lors de l’adoption de mémoire unifiée.
Pourquoi cela compte pour les développeurs et les entreprises
La mémoire unifiée résout un des plus grands défis du développement GPU en HPC : la gestion des données. En offrant un espace d’adresses commun, les équipes peuvent réduire le code boilerplate, accélérer les cycles de portage et tester plus rapidement différentes configurations GPU. L’ajout du modificateur de capture OpenACC 3.4 augmente la fiabilité des exécutions asynchrones, ce qui est crucial pour les simulations à grande échelle. Grâce à la migration automatique des pages mémoire et à la cohérence CPU-GPU, Grace Hopper peut proposer des gains de locality et des performances accrues sans réécrire de grandes portions de code. Ces éléments favorisent une adoption plus large du GPU pour les modèles océaniques et les sciences climatiques, avec des bénéfices mesurables en termes de productivité et de résultats scientifiques.
Détails techniques ou Mise en œuvre
Le billet décrit une trajectoire de portage pratique, illustrant comment une base de code NEMO peut passer d’un exécution CPU à des kernels OpenACC sur GPU, en s’appuyant sur la mémoire unifiée et le driver CUDA pour la gestion des données. Le paragraphe met en évidence le risque de conditions de course lors d’exécutions asynchrones et comment le modificateur de capture du OpenACC 3.4 aide à résoudre ces problèmes sans refactoring massif. Grace Hopper, avec son interconnexion NVLink-C2C, offre une cohérence mémoire entre CPU et GPU, renforçant l’efficacité des portages. CUDA 12.4 complète ce cadre en proposant une migration de mémoire basée sur l’accès fréquent, améliorant ainsi la locality sur les plates-formes Grace Hopper et systèmes compatibles. Le port NEMO est décrit comme un processus graduel : commencer par la diffusion horizontale des traçeurs actifs et passifs, passer à l’advection des traçeurs, puis à la diffusion verticale et au filtrage temporel. À chaque étape, des gains de performance ont été observés lorsque davantage de calculs sont déplacés vers le GPU Hopper, avec des gains allant jusqu’à environ 5x dans certaines portions du pipeline. Cela illustre non seulement les avantages en termes de performance, mais aussi la rapidité avec laquelle les équipes peuvent tester et ajuster des configurations avec un minimum de code supplémentaire. NVIDIA HPC SDK v25.7 release.
Conclusions clés
- La mémoire unifiée réduit les efforts de gestion des données dans les codes HPC destinés aux GPU.
- OpenACC bénéficie du support 3.4, atténuant les conditions de course dans les exécutions asynchrones.
- La migration mémoire automatique et la cohérence Grace Hopper améliorent la locality et les performances sans réécriture majeure du code.
- Les portages réels, comme NEMO, montrent des gains de productivité et des améliorations de performance.
- Le HPC SDK 25.7 consolide la transition vers des plateformes CPU-GPU cohérentes pour les sciences computationnelles.
FAQ
-
- **Q : Qu’est-ce que la mémoire unifiée dans cette version ?**
Cette version offre un ensemble complet d’outils qui automatisent les transferts de données et créent un espace d’adresses unique entre CPU et GPU, réduisant la gestion manuelle. - **Q : Comment cela impacte-t-il le OpenACC sur Grace Hopper ?** **A :** Cela permet un portage plus sûr et productif, réduit le boilerplate de gestion des données et prend en charge le modificateur de capture du OpenACC 3.4 pour éviter les conditions de course. - **Q : Quels gains de performance attendre pour des workloads comme NEMO ?** **A :** Dans l’exemple du port NEMO, les gains observés variaient de ~2x à ~5x, selon les étapes et jusqu’à ce que davantage de code soit déplacé vers le GPU Hopper. - **Q : Et au sujet des conditions de course et de la synchronisation ?** **A :** Le modificateur de capture du OpenACC 3.4 aborde ces conditions dans les scénarios asynchrones, augmentant la fiabilité sans refactorisation majeure. - **Q : Que doivent privilégier les développeurs lors du portage vers mémoire unifiée ?** **A :** Commencer par la parallélisation de boucles critiques avec OpenACC, s’appuyer sur le driver CUDA pour la gestion des données, envisager l’exécution asynchrone avec une synchronisation soignée et utiliser le modificateur de capture au besoin.
References
- NVIDIA Dev Blog: Less Coding, More Science: Simplify Ocean Modeling on GPUs With OpenACC and Unified Memory — https://developer.nvidia.com/blog/less-coding-more-science-simplify-ocean-modeling-on-gpus-with-openacc-and-unified-memory/
More news
NVIDIA HGX B200 réduit l’intensité des émissions de carbone incorporé
Le HGX B200 de NVIDIA abaisse l’intensité des émissions de carbone incorporé de 24% par rapport au HGX H100, tout en offrant de meilleures performances IA et une efficacité énergétique accrue. Cet article résume les données PCF et les nouveautés matérielles.
Prévoir les phénomènes météorologiques extrêmes en quelques minutes sans superordinateur : Huge Ensembles (HENS)
NVIDIA et le Lawrence Berkeley National Laboratory présentent Huge Ensembles (HENS), un outil IA open source qui prévoit des événements météorologiques rares et à fort impact sur 27 000 années de données, avec des options open source ou prêtes à l’emploi.
Comment réduire les goulots d’étranglement KV Cache avec NVIDIA Dynamo
NVIDIA Dynamo déporte le KV Cache depuis la mémoire GPU vers un stockage économique, permettant des contextes plus longs, une meilleure concurrence et des coûts d’inférence réduits pour les grands modèles et les charges AI génératives.
Le Playbook des Grands Maîtres Kaggle: 7 Techniques de Modélisation pour Données Tabulaires
Analyse approfondie de sept techniques éprouvées par les Grands Maîtres Kaggle pour résoudre rapidement des ensembles de données tabulaires à l’aide d’une accélération GPU, des baselines divers à l’assemblage et à la pseudo-étiquetage.
Microsoft transforme le site Foxconn en data center Fairwater AI, présenté comme le plus puissant au monde
Microsoft dévoile des plans pour un data center Fairwater AI de 1,2 million de mètres carrés au Wisconsin, abritant des centaines de milliers de GPU Nvidia GB200. Le projet de 3,3 milliards de dollars promet un entraînement IA sans précédent.
Reddit pousse pour un accord IA plus grand avec Google : des utilisateurs et du contenu en échange
Reddit vise des conditions de licence IA plus avantageuses avec Google, cherchant plus d’utilisateurs et l’accès aux données de Reddit pour l’entraînement des IA, potentiellement via un prix dynamique et des incitations de trafic.