OpenCL et GPU Computing 

OpenCL et Programmation Générale sur GPU

Comment Programmer ?

Architecture de la solution

Le développement avec OpenCL se fait avec plusieurs outils :

Architecture d'OpenCL
Au sommet application, le code source du programme appelant (C, Java, Python, etc.) executé par le CPU

En dessous, le framework comprenant l'API (fonctions utilisables par le code source appelant) et le langage OpenCL permettant de développer des programmes executables par le GPU.

Après ce trouve le runtime, c'est-à-dire l'implémentation permettant d'executer le code OpenCL.
Ensuite le driver, le pilote permettant de communiquer avec le GPU
En dernier se trouve le périphérique GPU (la carte graphique).

Comment Programmer sur GPU ?

Pour programmer l'exécution de code sur un GPU avec OpenCL, il faut d'abord paramètrer le GPU.

Ainsi, le code à exécuter sur le GPU est défini par le programmeur en une fonction en C respectant certaines contraintes, et est appelé "kernel" selon la terminologie OpenCL.

Exemple de code (calculer le carré d'un nombre)

Comme exemple, le calcul du carré de chaque nombre de chaque case d'un tableau.

La comparaison est faite entre du code Java et du code OpenCL pour obtenir le même résulat.

Code Java :

Example de code Java

Dans ce cas, le thread principal appelle la fonction qui, dans une boucle, calcule le carré de chaque case du tableau.

Code OpenCL :

Exemple de code OpenCL

Ici, on déclare un kernel qui, en premier lieu, récupère l'indice du tableau qui lui a été assigné.

Ensuite, il se sert de cet indice pour racupérer la valeur dans le tableau et la multiplie par elle-même pour avoir le carré.

Pour que le programme OpenCL se termine, on rajoute un condition si l'index est au-delà de la taille du tableau.