Les spécifications finales d'OpenCL 3.0 ont déjà été publiées

Il y a quelques mois, nous avons partagé ici sur le blog l'actualité de la sortie du développement d'OpenCL 3.0 par Préoccupation de Khronos (Responsable du développement des spécifications pour la famille OpenGL, Vulkan et OpenCL).

Et c'était jusqu'à récemment que annonce la sortie des spécifications finales d'OpenCL 3.0, définissant des API et des extensions du langage C pour organiser le calcul parallèle multiplateforme à l'aide de processeurs multicœurs, GPU, FPGA, DSP et autres puces spécialisées, de celles utilisées dans les supercalculateurs et les serveurs cloud aux puces que l'on trouve dans les appareils mobiles et la technologie intégrée.

Dans le même temps, un SDK Open Source OpenCL a été publié avec des outils, des exemples, de la documentation, des fichiers d'en-tête, des liens vers des bibliothèques C ++ et C pour développer des applications compatibles OpenCL 3.0.

L'implémentation initiale d'OpenCL 3.0 basée sur le compilateur Clang est également présentée, qui est au stade de l'examen par les pairs pour inclusion dans le progiciel LLVM principal. Des sociétés telles qu'IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments et Toshiba ont contribué à la norme.

Aujourd'hui, le groupe de travail Khronos® OpenCL ™ est heureux d'annoncer la publication des spécifications finalisées d'OpenCL 3.0, y compris une nouvelle spécification de langage unifié OpenCL C 3.0, ainsi qu'une première version initiale d'un kit de développement logiciel Khronos OpenCL pour permettre aux développeurs de se lever rapidement accélérer avec OpenCL.

Principales fonctionnalités d'OpenCL 3.0

API OpenCL 3.0 maintenant couvre toutes les versions d'OpenCL (1.2, 2.x), sans fournir de spécifications distinctes pour chaque version.

OpenCL 3.0 offre la possibilité d'étendre les fonctionnalités de base en intégrant des spécifications supplémentaires qui se chevaucheront sous la forme d'options sans bloquer la nature monolithique d'OpenCL 1.2 / 2.X.

Seule fonctionnalité qui rencontre OpenCL 1.2 est déclaré obligatoire, et toutes les fonctionnalités proposées dans le Les spécifications OpenCL 2.x sont appelées facultatives.

Cette approche simplifiera la création d'implémentations spécialisées compatibles avec OpenCL 3.0 et élargira la gamme d'appareils sur lesquels OpenCL 3.0 peut être utilisé.

Par exemple, Les fabricants peuvent implémenter la prise en charge d'OpenCL 3.0 sans implémenter de fonctionnalités OpenCL 2.x spécifiques. Pour accéder aux fonctions de langage optionnelles, un système de demande de test a été ajouté à OpenCL 3.0 pour évaluer la prise en charge d'éléments API individuels, ainsi que des macros spéciales.

L'unification avec les spécifications publiées précédemment facilite la traduction des applications vers OpenCL 3.0. Les applications OpenCL 1.2 pourront fonctionner sur des appareils prenant en charge OpenCL 3.0 sans modification.

applications OpenCL 2.x ne nécessite pas non plus de changement de code, mais si l'environnement OpenCL 3.0 fournit les fonctionnalités nécessaires (pour la portabilité future, les applications OpenCL 2.x sont encouragées à ajouter des requêtes de test pour évaluer la compatibilité avec les fonctionnalités OpenCL 2.x utilisées).

Les développeurs de pilotes avec des implémentations OpenCL peuvent facilement mettre à niveau leurs produits vers OpenCL 3.0 en ajoutant uniquement le traitement des demandes pour certains appels d'API et en augmentant progressivement les fonctionnalités au fil du temps.

La spécification OpenCL 3.0 a été alignée sur l'environnement, les extensions et les spécifications de l'intermédiaire générique SPIR-V, qui est également utilisé dans l'API Vulkan. La prise en charge de la spécification SPIR-V 1.3 est incluse dans l'OpenCL 3.0 principal en tant que fonction facultative. La prise en charge des opérations avec des sous-groupes a été ajoutée à l'aide de la représentation intermédiaire SPIR-V pour les cœurs de calcul.

En plus que Ajout de la prise en charge d'une extension pour effectuer des opérations DMA Asynchrone pris en charge sur les puces DMA de type DSP.

Le DMA asynchrone permet d'utiliser des transactions DMA pour transférer des données entre la mémoire globale et locale de manière asynchrone, en parallèle avec des calculs en cours ou d'autres transferts de données.

La spécification des extensions de programmation parallèle pour la langue C a été mis à jour vers la version 3.0 et le développement des extensions de langage OpenCL pour C ++ est interrompu au profit du projet "C ++ for OpenCL".

Pour traduire OpenCL via l'API Vulkan, le compilateur clspv est proposé, qui convertit les noyaux OpenCL en représentation Vulkan SPIR-V, et la couche clvk pour garantir que l'API OpenCL fonctionne au-dessus de Vulkan.

source: https://www.khronos.org/


Le contenu de l'article adhère à nos principes de éthique éditoriale. Pour signaler une erreur, cliquez sur c'est par ici !.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.