OpenCL 1.0 : le GPGPU enfin standardisé !

L’OpenCL est une plate-forme de programmation massivement parallèle adaptée aussi bien aux GPU, qu’aux processeurs multicœurs ou encore au Cell

Le Khronos Group, responsable du développement de la norme OpenGL, vient de dévoiler les spécifications d’OpenCL 1.0. L’Open Computing Language permettra d’exploiter la puissance des unités de traitement multiples pour des calculs traditionnels : CPU multicœurs, GPU intégrés dans les cartes graphiques, etc. Il interagit avec l’OpenGL ou l’OpenGL ES.

C’est une excellente nouvelle pour le monde des cartes graphiques : jusqu’alors, la programmation GPGPU (General-Purpose computing on Graphics Processing Units) en OpenGL nécessitait d’utiliser des routines graphiques, subtilement adaptées à du traitement sur des nombres, ce qui se révélait très peu efficace (et assez complexe). Avec l’OpenCL, un nouveau sous-ensemble du C99 adapté au calcul parallèle est rendu disponible.

« La possibilité d’accéder de manière efficace aux capacités des cartes graphiques et ordinateurs de nouvelle génération a été le moteur qui a permis cette coopération sans précédent, destinée à affiner la spécification OpenCL, initialement proposée par Apple », a déclaré Neil Trevett, président du groupe de travail OpenCL et président du Khronos Group mais aussi vice-président chez Nvidia.

Presque tous les acteurs produisant des composants graphiques ont participé à la création de l’OpenCL : AMD, Intel, Nvidia, mais aussi des sociétés travaillant dans le monde de l’électronique embarquée comme 3DLabs, ARM et Imagination Technologies.

AMD prévoit de faire évoluer son ATI Stream vers l’OpenCL 1.0. Pour Nvidia, l’OpenCL 1.0 sera une alternative à Cuda. Brook (AMD) et Cuda (Nvidia) vont-ils faire les frais de l’arrivée de l’OpenCL ? Ce n’est pas évident : ces deux offres sont, elles aussi, très proches du C, mais elles évoluent plus rapidement et sont pleinement optimisées pour les cartes graphiques des deux constructeurs. D’un autre côté, OpenCL se veut plus universel, mais probablement un peu moins performant. Il peut donc être vu comme la ‘pierre de rosette’ du GPGPU.