CUDA et Programmation Générale sur GPU

Le Futur : OpenCL

CUDA, un framework propriétaire

La nature propriétaire de CUDA est un frein à son développement, car les développeurs qui peuvent être intéressés par la solution peuvent avoir peur de développer du code qui ne sera pas réutilisable, et à la merci du futur que reserve nVIDIA à la norme.

C'est pour cela (et pour unifier le marché avec ATI et Intel), qu'est née la norme OpenCL. Soutenue par le Khronos Group, cette norme a pour but de proposer des extension pour le C permettant d'exécuter du code indépendament sur le CPU ou sur un GPU supportant cette norme.

Les spécifications viennent d'être publiées (novembre 2008), et son support est notamment prévu pour le prochain OS d'Apple, Mac OS X 10.6 Snow Leopard.

... et alors ?

Les similitudes avec CUDA sont omniprésentes :

Système OpenCL Le Compute Device correspond à une carte graphique, le Compute Unit à un multiprocesseur, et un Processing Element à un processeur.
Les blocs, threads et grilles en OpenCL Les kernels sont exécutés sous forme de work-items (threads) regroupés en work-groups (blocs). Tous les work-groups d'un kernel sont regroupés en NDRange (grille).