La norme de programmation parallèle OpenMP 6.0 a été publiée

Après trois ans de développement, un ensemble de spécifications OpenMP 6.0 (Open Multi-Processing) a été publié, définissant l'API et les méthodes d'application des techniques de programmation parallèle pour les langages C, C++ et Fortran sur des systèmes multicœurs et hybrides (CPU+GPU/DSP) avec mémoire partagée et blocs de vectorisation (SIMD). Il est prévu que le support initial de certaines fonctionnalités d'OpenMP 6.0 soit inclus dans les versions LLVM/Clang 20 et GCC 15.

Principales modifications dans OpenMP 6.0 :

  • Le processus de programmation des tâches (task), définissant des parties indépendantes du programme pouvant être exécutées en parallèle avec d'autres, a été simplifié.
    • Ajout de la possibilité d'exécuter des tâches sur des threads free-agent, non associés à des groupes de threads (teams) exécutant des régions parallèles (parallel region, un bloc de code exécuté sur plusieurs threads).
    • Support assuré pour la sauvegarde du graphe de tâches (taskgraph), définissant les dépendances entre les tâches et l'ordre d'exécution pour améliorer l'efficacité des reproductions ultérieures.
    • Mise en œuvre d'un mécanisme de tâches transparentes (« transparent tasks ») pour simplifier la gestion des dépendances et la gestion automatique de l'exécution des tâches enfants.
  • Extension du support pour les dispositifs de calcul pouvant être utilisés pour exécuter des tâches parallèles (CPU, GPU, DSP, etc.).
    • Ajout d'une nouvelle syntaxe de tableaux, permettant d'utiliser la directive « workdistribute » pour répartir le traitement des tableaux entre différentes unités de travail.
    • Amélioration des fonctionnalités de gestion de l'allocation de mémoire, simplifiant la gestion des variables pour lesquelles la mémoire est allouée dynamiquement.
    • Extension du support pour les attributs définissant la distribution des données entre les dispositifs par défaut.
    • Simplification de l'écriture de code pour les transmissions de données asynchrones vers des dispositifs de calcul supplémentaires (GPU).
    • Amélioration de la gestion de la mémoire et de son association avec les dispositifs de calcul.
    • Ajout de la directive « groupprivate » pour l'attribution de mémoire à un groupe de threads exécutés sur un dispositif de calcul particulier.
  • Simplification de la programmation de certains types de transformations de boucles, telles que la fusion de plusieurs boucles, le changement de l'ordre des boucles imbriquées et l'inversion des boucles.
  • Une nouvelle opération d'induction a été ajoutée pour organiser le parallélisme dans les boucles de calculs arithmétiques simples et d'opérations utilisateur, dépendant des valeurs précédentes.
  • Un support complet pour le parallélisme des programmes écrits selon les normes C23 (y compris la syntaxe des attributs), Fortran 2023 et C++23 a été ajouté. De nouveaux attributs pour C/C++ ont été également ajoutés.
  • Les fonctionnalités de gestion du stockage et de la mémoire ont été étendues. De nouveaux attributs ont été ajoutés pour contrôler la manière dont la mémoire doit être allouée et utilisée. Une API pour définir et demander des espaces de mémoire a été ajoutée.
  • Les fonctionnalités déclarées obsolètes dans les spécifications OpenMP 5.0, 5.1 et 5.2 ont été supprimées.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster