OpenCL 2.0 est une spécification ouverte et multiplateforme conçue pour simplifier la programmation parallèle tout en permettant un ensemble d'algorithmes plus riches et d’accélérer facilement les modèle de programmation.
La version 2.0 de la spécification définit un modèle d'exécution amélioré et un sous-ensemble du modèle mémoire de C11/C++11 ainsi que des opérations atomiques et de synchronisation.
Actuellement, la spécification n'est pas finalisée à 100 % et une dernière étape durant six mois est mise en place afin de recevoir des retours de la part des développeurs.
Cette nouvelle version propose :
- Shared Virtual Memory, les kernels peuvent directement partager des structures complexes tels que les arbres ou les listes chainées apportant une flexibilité de programmation accrue tout en diminuant les coûts de transfert entre l'hôte et le périphérique ;
- Dynamic Parallelism, les kernels pour les périphériques peuvent maintenant mettre dans une queue les kernels d'un même périphérique sans passer par l'hôte ;
- Generic Adress Space, les fonctions peuvent êtes écrites sans spécifier un espace nommé pour les arguments, ce qui est particulièrement intéressant pour les arguments de type pointeur de fonction ;
- Images, support amélioré des images incluant sRGB et les images 3D, ainsi qu'une interopérabilité avec les textures OpenGL ;
- C11 Atomics, un sous-ensemble des opérations atomiques et de synchronisation du C11 pour la synchronisation entre l'hôte et le périphérique ;
- Pipes, les pipes sont des objets mémoires stockant des données en FIFO et OpenCL 2.0 propose des fonctions pour écrire et lire dans un pipe, ce qui pourra être accéléré par les constructeurs ;
- Android Installable Client Driver Extension, permettant aux implémentations OpenCL d'être reconnues et chargées par Android.
Intel et Vivante Corp travaillent déjà sur l'implémentation de cette nouvelle spécification.
Votre opinion
Quelles sont les fonctionnalités que vous attendiez ?
Quelle est votre utilisation d'OpenCL ?
Source
Khronos