Les cartes graphiques en se perfectionnant toujours plus sont devenus
quasiment des ordinateurs complets disposant de leur mémoire propre, d'un
processeur et de canaux d'entrées/sorties via le bus d'interface avec
l'ordinateur hôte. Pour prendre en charge une part de traitement graphique
toujours plus importante le processeur graphique n'est plus vraiment un
processeur spécialisé mais plutôt un processeur optimisé pour les calculs de
rendu graphique. Comme la génération d'images 3D est un travail complexe, les
processeurs capables de le prendre en charge sont par conséquent dotés d'une
capacité de calcul très important qui pourrait être utilisée à d'autre fin. Les
volumes de production des cartes graphiques permet d'atteindre un ratio
coût/capacité très intéressant. De plus le bus PCI Express qui est devenu la
norme peut recevoir plusieurs cartes graphiques ce qui permet d'accroitre
d'autant la puissance disponible. Les fabriquant de carte graphiques NVidia
en tête ont bien saisi l'intérêt de ce nouveau débouché pour leurs produits et
imagine déjà de commercialiser des outils de programmation pour utiliser à sa
convenance ces puces graphiques.
Néanmoins, l'approche totalement propriétaire d'un vendeur de matériel n'est
pas forcément une stratégie pérenne. Un regroupement d'industriel a donc décidé
de créer OpenCL dont une
première spécification
a déjà été publiée. L'idée est
de faire une sorte d'OpenGL généralisé à toute sorte de calcul et non plus
uniquement le rendu graphique. Mais l'ambition d'OpenCL est plus importante : il
s'agit de proposer un langage de programmation conçu pour exploiter toutes les
ressources de calcul (mixte/hybride) disponibles sur l'ordinateur, par exemple
la combinaison d'un processeur mufti cœur avec un processeur graphique, ou
bien, une architecture
Cell. Il reviendra à chaque fabriquant de proposer une
mise en œuvre (driver ou compilateur ?) d'OpenCL pour permettre l'utilisation
de leurs produits comme unité de calcul.