La version 5.0 est annoncée pour la fin de l’année et un nouveau brouillon public est disponible (TR7). Elle apporte bon nombre de nouveautés, comme deux nouvelles interfaces pour la définition d’outils : OMPT pour ceux fournis par l’implémentation d’OpenMP, OMPD pour les outils tiers. Ces outils sont prévus pour inspecter l’état d’OpenMP pendant l’exécution : quand l’objectif d’OMPT est de faciliter l’analyse poussée de la performance du code OpenMP (pourquoi un cœur doit-il attendre ?), celui d’OMPD est plutôt orienté vers le débogage d’applications (pour afficher plus précisément la pile au niveau d’un point d’arrêt, par exemple).
OpenMP 5.0 se focalise aussi sur les accélérateurs. Notamment, la norme introduit des constructions pour gérer les systèmes qui disposent de plusieurs niveaux de mémoire, sous la forme d’espaces de mémoire différents. La clause map sert à transférer les données entre les banques de mémoire. Également, la synchronisation a été revue afin de gérer plus de mécanismes pour acquérir et libérer les droits d’écriture.
Toujours au niveau de la mémoire, la programmation orientée objet est mieux gérée, grâce à la directive declare mapper : elle sert à déclarer la manière de transférer les données d’une structure complexe, c’est-à-dire d’un objet, par exemple vers un accélérateur.
La clause depend gère des dépendances entre tâches plus précises : outre les types entrée-sortie, l’exclusion mutuelle et des dépendances dynamiques ont été ajoutées.
Sources : Technical Report 6 is a preview of OpenMP 5.0, expected in November 2018, OpenMP ARB Releases Technical Report with Support for a Tool Interface, OMPT and OMPD: Emerging Tool Interfaces for OpenMP.
Et vous ?
Qu'en pensez-vous ?
Quelles nouveautés souhaiteriez-vous avoir dans cette nouvelle version d'OpenMP ?
Voir aussi
La spécification complète.