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

Le consortium Khronos, responsable du développement des spécifications des familles OpenGL, Vulkan et OpenCL, a annoncé Publication des spécifications finales OpenCL 3.0, définissant les API et les extensions du langage C pour l'organisation de calculs parallèles multiplateformes utilisant des CPU multicœurs, GPU, FPGA, DSP et d'autres puces spécialisées, allant de celles utilisées dans les superordinateurs et les serveurs cloud, aux puces que l'on trouve dans les appareils mobiles et l'électronique embarquée. La norme OpenCL est totalement ouverte et ne nécessite pas de redevances.

Simultanément publiée SDK OpenCL open source avec des outils, des exemples, de la documentation, des fichiers d'en-tête, des liaisons pour C++ et des bibliothèques C pour le développement d'applications compatibles avec OpenCL 3.0. De plus, introduit une implémentation initiale d'OpenCL 3.0 basée sur le compilateur Clang, qui est en cours de révision des patchs pour intégration dans la branche principale de LLVM. Le développement de la norme a impliqué des entreprises telles qu'IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments et Toshiba.

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

Les plus remarquables caractéristiques OpenCL 3.0:

  • L'API OpenCL 3.0 couvre désormais toutes les versions d'OpenCL (1.2, 2.x), sans fournir de spécifications distinctes pour chaque version. OpenCL 3.0 permet d'étendre la fonctionnalité de base par l'intégration de spécifications supplémentaires qui seront empilées sous forme d'options, sans bloquer la nature monolithique d'OpenCL 1.2/2.X.
  • Seule la fonctionnalité correspondant à OpenCL 1.2 est obligatoire, tandis que toutes les capacités proposées dans les spécifications OpenCL 2.x sont considérées comme optionnelles. 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 le support d'OpenCL 3.0 sans mettre en œuvre des fonctionnalités spécifiques d'OpenCL 2.x. Pour accéder aux fonctionnalités optionnelles du langage, OpenCL 3.0 ajoute un système de requêtes de vérification, permettant d'évaluer le support d'éléments particuliers de l'API, ainsi que des macros spéciales.
  • L'unification avec les spécifications publiées précédemment facilite la portabilité des applications vers OpenCL 3.0. Les applications OpenCL 1.2 pourront fonctionner sur des dispositifs supportant OpenCL 3.0 sans modifications. Les applications OpenCL 2.x ne nécessiteront également aucune modification de code, mais si l'environnement OpenCL 3.0 fournit les fonctionnalités nécessaires (pour assurer la portabilité des futures applications OpenCL 2.x, il est recommandé d'ajouter des requêtes de vérification pour évaluer le support des fonctionnalités OpenCL 2.x utilisées). Les développeurs de pilotes avec des implémentations OpenCL pourront facilement mettre à jour leurs produits vers OpenCL 3.0 en ajoutant simplement le traitement des requêtes pour certaines API, et progressivement élargir les fonctionnalités avec le temps.
  • La spécification OpenCL 3.0 a été alignée sur l'environnement, les extensions et les spécifications de la représentation intermédiaire universelle SPIR-V, qui est également utilisée dans l'API Vulkan. Le support de la spécification SPIR-V 1.3 a été intégré dans la version de base d'OpenCL 3.0 en tant que fonctionnalité optionnelle. À travers l'utilisation de la représentation intermédiaire SPIR-V pour les unités de calcul, le support des opérations de sous-groupes a été ajouté.
    Les spécifications finales d'OpenCL 3.0 ont été publiées
  • Le support d'une extension pour exécuter des opérations DMA asynchrones (Asynchronous DMA) a été ajouté, pris en charge dans les puces similaires à DSP avec accès direct à la mémoire. L'Asynchronous DMA permet d'utiliser des transactions DMA pour transférer des données entre la mémoire globale et la mémoire locale de manière asynchrone, parallèlement aux calculs ou à d'autres opérations de transfert de données.
  • La spécification des extensions de programmation parallèle pour le langage C a été mise à jour vers la version 3.0, et le développement des extensions linguistiques OpenCL pour C++ a été arrêté au profit du projet « C++ for OpenCL ». C++ for OpenCL est un compilateur basé sur Clang/LLVM et transpile les noyaux en C++ et OpenCL C en représentation intermédiaire SPIR-V ou en code machine de bas niveau. Grâce à la transpilation en SPIR-V, la construction d'applications C++ utilisant la bibliothèque de templates SYCL, qui simplifie la création d'applications parallèles, est également facilitée.

    Les spécifications finales d'OpenCL 3.0 ont été publiées
  • Pour la transpilation d'OpenCL via l'API Vulkan, un compilateur a été proposé clspv, transformant les noyaux OpenCL en représentation Vulkan SPIR-V, et une couche clvk pour assurer le fonctionnement de l'API OpenCL au-dessus de Vulkan.

    Les spécifications finales d'OpenCL 3.0 ont été publié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