Khronos publie la spécification d'OpenCL 2.2
Une sortie accompagnée de la spécification SPIR-V 1.2


OpenCL est une spécification réalisée par le consortium Khronos visant à offrir des outils pour créer des applications hautement parallèles capables de s'exécuter aussi bien sur des CPU multicœurs que des GPU. À l'instar d'OpenGL (et des autres interfaces de programmation décrites par Khronos), Khronos ne fournit pas d'implémentation, mais une spécification complète sur comment utiliser la bibliothèque et comment elle doit être implémentée.
Pour suivre la récente volonté d'ouverture de Khronos, le code source de la spécification, ainsi que des tests de conformité (pour les versions 1.2, 2.0, 2.1 et 2.2) sont en ligne.
Initialement, OpenCL propose un dérivé du langage C afin de réaliser des applications parallèles. Depuis OpenCL 2.2, un nouveau noyau C++ a été mis en place et permet donc d'utiliser des fonctionnalités de C++ pour réaliser vos programmes parallèles. Pour suivre ce changement, la spécification de SPIR-V passe à la version 1.2 et permet donc de transcrire le code C++ en une représentation intermédiaire définie par Khronos.
La version 2.2 d'OpenCL ajoute un nouveau type pour le périphérique « pipe storage » utile pour les FPGA. Celui-ci permet que le type et la taille de la connexion soient connus à la compilation et ainsi d'améliorer la communication entre les noyaux. Avec OpenCL 2.2, les applications peuvent fournir la valeur de spécialisation constante à la compilation en représentation intermédiaire. Aussi, une nouvelle requête peut détecter les constructeurs et destructeurs non triviaux d'objets globaux à la portée du programme et un callback peut être défini à la fin du programme.
Finalement, arrive SYCL 2.2, une interface permettant d'adopter l'approche « code source unique » (comparable à CUDA, OpenMP ou encore la bibliothèque de parallélisme du C++17).

Pour le futur, Khronos souhaite faire converger OpenCL vers Vulkan dans le but de ne faire plus qu'une bibliothèque capable de graphismes et de calculs. En effet, les GPU sont de plus en plus capables de calculs génériques et l'interface bas niveau Vulkan expose les fonctionnalités de la carte graphique.


Votre opinion

Utilisez-vous OpenCL ? Comment avez-vous fait votre choix parmi les solutions actuelles ?
Est-ce que le support du C++ est un bon point pour vous ? Aviez-vous été handicapé par le C ?


Source

Site officiel