Voici la seconde partie de mon article sur les GPU .
1      Présentation 
CUDA ou Computer Unified Device Architecture  est une librairie de développement créée par NVIDIA en 2007. Celle-ci associée à une carte graphique compatible, permet d’utiliser la puissance de calculs des GPU d’architectureG80 et plus de NVidia (à partir des GeForce 8800 et déclinaisons).
L’API CUDA supporte plusieurs langages tels que le C, le C++ et le Fortran.
Il existe cependant des « wrapper », des passerelles, servant de liaison entre ces langages bas-niveau et des langages de plus haut niveaux tels que Python, Java et .Net.
CUDA est constitué d’un pilote (driver), déjà intégré aux drivers les plus récents, d’un runtime, et de quelques librairies.
Les différents composants de CUDA Il existe 3 niveaux de programmation pour CUDA, chacune disposant de sa propre API :
–       Utilisation d’une librairie externe.
–       l’API de haut niveau : l’API CUDA Runtime ou appelĂ©e plus communĂ©ment C for CUDA.
–       l’API de bas niveau : l’API CUDA Driver.
Les API Runtime et Driver sont capables toutes les deux de communiquer avec des ressources OpenGL ou Direct3D. L’utilité est évidente : CUDA pourrait être utilisé pour générer des ressources (géométrie, textures procédurales, etc.) qui seraient ensuite passées à l’API graphique ou à l’inverse on pourrait imaginer que l’API 3D pourrait envoyer le résultat du rendu à CUDA qui serait dans ce cas utilisé pour effectuer un post traitement. Les exemples d’interactions sont nombreux et l’avantage est que les ressources restent stockées dans la mémoire RAM du GPU sans avoir à passer par le goulot d’étranglement du bus PCI-Express.
CUDA est fourni avec un « émulateur » : le code devant s’exécuter sur le GPU est en fait exécuté sur le GPU. Les performances sont alors bien moindres, mais permettent de débugger l’application et de tester celle-ci lorsqu’on ne dispose pas de GPU compatible.
J’aime ça : J’aime chargement…