Comment travaille OpenCL
Comme vous pouvez l’imaginer, les architectures matérielles des GPU peuvent être très différentes. Il y a différents fabricants, et même, pour le même fabricant, différentes générations de GPU peuvent être différentes. Dans le même temps, les fabricants de GPU ne rendent pas public tous les détails matériels de leurs produits. Une des conséquences connues est la nécessité d’utiliser sous Linux des pilotes propriétaires si vous désirez tirer le maximum de votre carte graphique.
Heureusement, un consortium industriel dirigé par The Khronos Group a développé une interface ouverte et standardisée appelée OpenCL. Elle permet d’utiliser votre GPU comme dispositif de traitement numérique. OpenCL propose un langage de programmation similaire à C99 qui se concentre fortement sur le calcul parallèle. Une application qui veut utiliser OpenCL aura besoin du code source d’OpenCL qui est transmis à un compilateur OpenCL spécifique au matériel lors de l’exécution. De cette manière, l’application peut utiliser OpenCL avec différentes architectures de GPU (y-compris simultanément). Tous les secrets matériels sont masqués dans ce compilateur et ne sont normalement pas visibles par l’utilisateur (ou par l’application). Le code OpenCL compilé est chargé dans votre GPU et – avec certains appels d’API – il est prêt à effectuer des calculs pour vous.