Publication des spécifications finales d'OpenCL 3.0

Le groupe Khronos, chargé de développer les spécifications des familles OpenGL, Vulkan et OpenCL, объявил lors de la publication des spécifications définitives 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, de GPU, de FPGA, de DSP et d'autres puces spécialisées, depuis celles utilisées dans les superordinateurs et les serveurs cloud jusqu'aux puces que l'on peut trouver dans les appareils mobiles et technologie intégrée. Le standard OpenCL est totalement ouvert et ne nécessite pas de frais de licence.

En même temps publié ouvrez le SDK OpenCL avec des outils, des exemples, de la documentation, des fichiers d'en-tête, des liaisons C++ et des bibliothèques C pour développer des applications compatibles avec OpenCL 3.0. Aussi est présenté implémentation initiale d'OpenCL 3.0 basée sur le compilateur Clang, qui est au stade de la révision des correctifs à inclure dans la structure principale de LLVM. Des entreprises telles qu'IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments et Toshiba ont participé aux travaux sur la norme.

Publication des spécifications finales d'OpenCL 3.0

Le plus remarquable 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 offre la possibilité d'étendre les fonctionnalités de base grâce à l'intégration de spécifications supplémentaires qui seront superposées sous forme d'options sans bloquer la nature monolithique d'OpenCL 1.2/2.X.
  • Seules les fonctionnalités conformes à OpenCL 1.2 sont déclarées obligatoires, et toutes les fonctionnalités proposées dans les spécifications OpenCL 2.x sont classées comme facultatives. Cette approche facilitera la création d'implémentations personnalisé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 spécifiques à OpenCL 2.x. Pour accéder aux fonctionnalités facultatives du langage, OpenCL 3.0 a ajouté un système de requêtes de test qui vous permet d'évaluer la prise en charge d'éléments API individuels, ainsi que de macros spéciales.
  • L'unification avec les spécifications publiées précédemment facilite la migration des applications vers OpenCL 3.0. Les applications OpenCL 1.2 pourront s'exécuter sur des appareils prenant en charge OpenCL 3.0 sans modification. Les applications OpenCL 2.x ne nécessiteront pas non plus de modifications de code, tant que l'environnement OpenCL 3.0 fournit les fonctionnalités requises (pour garantir la portabilité future, il est recommandé aux applications OpenCL 2.x d'ajouter des requêtes de test pour évaluer la prise en charge des fonctionnalités OpenCL 2.x. utilisé). Les développeurs de pilotes dotés d'implémentations OpenCL peuvent facilement mettre à niveau leurs produits vers OpenCL 3.0, en ajoutant uniquement le traitement des requêtes pour certains appels d'API et en augmentant progressivement les fonctionnalités au fil du temps.
  • La spécification OpenCL 3.0 est alignée sur l'environnement, les extensions et les spécifications de la représentation intermédiaire générique SPIR-V, qui est également utilisée par l'API Vulkan. La prise en charge de la spécification SPIR-V 1.3 est incluse dans le noyau OpenCL 3.0 en tant que fonctionnalité facultative. Grâce à l'utilisation d'une représentation intermédiaire SPIR-V la prise en charge des opérations avec des sous-groupes a été ajoutée pour les cœurs de calcul.
    Publication des spécifications finales d'OpenCL 3.0

  • Ajout de la prise en charge d'une extension permettant d'effectuer des opérations DMA asynchrones (Asynchronous DMA), prise en charge dans les puces de type DSP avec accès direct à la mémoire. 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 ou d'autres opérations de transfert de données.
  • La spécification C Parallel Programming Extensions a été mise à jour pour version 3.0, et le développement d'extensions du langage OpenCL pour C++ a été interrompu au profit du projet « C++ for OpenCL ». C++ pour OpenCL est un compilateur basé sur Clang/LLVM et diffusion Noyaux C++ et OpenCL C dans une représentation intermédiaire SPIR-V ou un code machine de bas niveau. Grâce à la diffusion, SPIR-V organise également l'assemblage d'applications C++ à l'aide de la bibliothèque de modèles SYCL, ce qui simplifie la création d'applications parallèles.

    Publication des spécifications finales d'OpenCL 3.0

  • Un compilateur a été proposé pour diffuser OpenCL via l'API Vulkan clspv, qui convertit les noyaux OpenCL en une représentation Vulkan SPIR-V, et une couche clvk pour permettre à l'API OpenCL de fonctionner sur Vulkan.

    Publication des spécifications finales d'OpenCL 3.0

Source: opennet.ru

Ajouter un commentaire