CUDA est une architecture de calcul parallèle qui utilise la capacité de calcul parallèle des GPU de chez NVIDIA. Elle permet le développement d’applications en C /C++, et est compatible avec les API standard comme DirectX et OpenCL.
News:
- Mai 2017: Sortie de la version 9. Voici la liste des nouveautés, dont le support des coeurs tensoriels (archi volta), mais également un support dans Visual Studio 2017, Clang 3.9, PGI 17.1 et GCC 6.
- Décembre 2016: AMD dévoile HIP (Heterogeneous-compute Interface for Portability) pour convertir du code CUDA en C++. Ce code C++ résultant peut être compilé par les compilateurs NVCC (CUDA NVIDA) ou HCC (AMD) pour tourner sur la GPU du choix du développeur. De même, il sera possible de compiler CUDA pour les cartes AMD ! Voir GitHub.
- Mai 2016: Clang, compilateur C++, permet de compiler pour GPU compatible CUDA. Voir ici.
- Février 2007: Premier SDK CUDA pour les cartes graphiques GeForce 8 Series.
Caractéristiques:
- Permet de programmer des GPU de Nvidia en C/C++, Fortran, Python (pyCUDA), Java (jCUDA, JCublas, JCufft, JCudpp), .NET (Cuda.NET).
- Dispo sous Windows, MacOS, Linux
- Un programme CUDA est constitué d’une partie qui s’exécute sur l’hôte (host) et d’une partie qui s’exécute sur le périphérique (device). Les deux peuvent être dans un même fichier.
- On l’oppose souvent à Open CL, technologie d’AMD, qui elle fonctionne aussi bien sur Nvidia que sur AMD (anciennement ATI). Notons qu’on peut travailler en émulation CUDA (sans gain, mais pour les tests).
- 3 fonctions à connaitre: cudaMalloc (Allocation mémoire), cudaFree (libération), et cudaMemcpy (copie de la mémoire de l’host vers le device).
- PTX (Parallel Thread eXecution) est l’assembleur, généré par nvcc, exécuté sur le GPU compatible avec CUDA. Les fichiers PTX sont compilés à l’aide de ptxas, utilitaire fourni avec CUDA.
Sites et ressources:
- Page Wikipédia
- Très bonne introduction sur le site developpez
- Autre cours intéressant par Jean-Michel Richer avec la programmation de fractales, etc.
- Autre cours par François Cuvelier, plus magistral (50 diapos PDF), et celui de l’école centrale de Paris. Ou encore celui de Gael Guennebaud de l’INRIA.
- Cuda avec Python par Denis Robilliard
- Un livre en français, même si un peu vieux (2011): “CUDA par l’exemple. Une introduction à la programmation parallèle de GPU” de SANDERS Jason.
- Un benchmark à tester avec Blender — pas compris pour OpenCL et CUDA…