Persévère!
En effet si tu est possesseur d'une carte ATI, il te faudra utiliser OpenCL (et même en étant NVidia pour plus de simplicité)
Après pour faire des calculs sur un GPU il faut que la nature des calculs puisse exploiter le parallélisme. Pour cela il savoir si ton programme requiert beaucoup de dépendance (Si le calcul de B nécessite le résultat de A cela pose problème)
La seconde chose qui est difficile à comprendre, c'est de saisir l'architecture du GPU et notamment de sa mémoire. Car un GPU délivre sa puissance si tu comprend comment allouer la mémoire. Tu peut donc utiliser la mémoire local (qui est celle de la carte graphique), la mémoire globale (qui est la mémoire dont tu dispose en barrette de ram sur ta carte mère) En plus de cela tu as des unités de mémoire au sein même des unités de calcules (des registres faisant office de cache).
Commence donc par te procurer le vue de ton GPU sous forme de schéma afin de comprendre les interactions possibles entre les éléments.
Il te faut aussi comprendre la manière dont on définit les Work-Group, les Work-Units etc (en fait ce sont des matrices dont tu peut choisir la taille sous les dimensions XYZ selon le problème que tu aura à résoudre)
C'est très intéressant tu verra!
Tu peut trouver des exemples de code pour comprendre comment on implémente du code pour faire tourner le GPU (Comprend d'ailleurs qu'il te faut rédiger un programme HOST qui tourne sur le CPU et qui appellera un THREAD (un processus) qui lui sera sur le DEVICE (le GPU). C'est donc le CPU qui crée un appel afin de recourir au GPU. Le seul de récuperer le résultat est donc de vider la mémoire locale vers la mémoire globale (or tu sais bien que faire passer des infos par le biais du port PCI engendre des pertes de performance)
C'est la qu'il faut comprendre le fait qu'il faille minimiser les échanges entre GLOBAL et LOCAL. Si ton programme demande trop d'échange tu va faire mouliner les GPUs pour rien (perte de cycle). Il faut donc bien gérer les chaines de travail (la notion de "queue")
Il est vrai que Nvidia communique beacoup plus, en témoigne leurs outils de développement "Parrallel Nsight" http://developer.nvidia.com/object/nsight.html
Si la prog t'aime vraiment ca, télécharge ce qu'il faut sur le site du Khronos Group concernant les spécifications d'OpenCl.