OpenCL et GPU Computing 

OpenCL et Programmation Générique sur GPU

Historique

Contexte

Avant que l'OpenCL soit créé, il existait déjà plusieurs langages de programmation sur GPU. Le plus connu et utilisé était CUDA, développé par Nvidia depuis 2007.

D'autres langages existaient aussi tels que Close To Metal (2006 – ATI) et Brook+ (2007 – AMD).

Création

OpenCL a été initialement conçu par Apple (qui en possède les droits d'auteur), et affiné dans le cadre d'une collaboration avec AMD, Intel et Nvidia. Apple soumet d'abord sa proposition initiale au Khronos Group. Le 16 juin 2008, le Khronos Compute Working Group est formé, comprenant des représentants des fabricants de matériel informatique et de logiciels. Celui-ci travaille durant cinq mois à boucler les détails techniques de la spécification OpenCL 1.0. La spécification est révisée par les membres de Khronos et approuvée pour une version d'essai le 8 décembre.

Le groupe Khronos est un consortium industriel fondé en 2000 et dont le but est de créer des API dont les spécifications sont rendues publiques et sont utilisables gratuitement, pour créer et exécuter des applications multimédia sur un grand nombre de plateformes et appareils.

Evolution

Une nouvelle version, OpenCL 1.1, est publiées en juin 2010 par le Khronos Group. OpenCL 1.1 clarifie certain aspects de la spécification précédente et apporte de nouvelles fonctionnalités tels que les sous-buffers, les vecteurs à 3 éléments, les événements utilisateur, de nouvelles fonctions builtin, le support en standard d'extensions optionnelle 1.0 (tel que les fonctions atomiques 32 bits).

OpenCL est intégré dans Mac OS X 10.63 (Snow Leopard). AMD décide de supporter OpenCL et DirectX 11 plutôt que Close to Metal dans son framework Stream SDK. RapidMind annonce l'adoption de OpenCL sous sa plate-forme de développement, afin de supporter les processeurs graphiques de plusieurs fabricants avec une interface unique. Nvidia confirme également le 9 décembre 2008 le support complet de la spécification 1.0 dans son GPU Computing Toolkit.

Le 15 Novembre 2011, Le Khronos Group a publié les spécifications d'OpenCL 1.2. On y trouve notamment des fonctionnalités liées à la mobilité et à la portabilité, avec par exemple la possibilité de dissocier compilation et édition de liens des noyaux.