FAQ CUDAConsultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 43, dernière mise à jour : 6 juillet 2017 

 
OuvrirSommaireCUDACUDA Généralités

CUDA est une architecture de calcul parallèle qui utilise la capacité de calcul parallèle des GPU NVIDIA. En tant que tel, il permet le développement d'applications dans un langage de relativement haut niveau, comme le C ou le C++, et est compatible avec les API standard comme DirectX et OpenCL.

Il s'agit d'extensions propres à NVIDIA pour le C. Ce langage est compilé grâce à nvcc.

CUDA est disponible dès l'origine sous Windows, la gestion de macOS et de Linux a été ajoutée plus tard.

Mis à jour le 3 juillet 2017  par Thibaut Cuvelier

Lien : GPU compatibles

De manière générale, toutes les cartes graphiques NVIDIA produites dès 2008 sont compatibles avec CUDA : tant les GeForce que les Quadro, qu'elles soient de bureau ou mobile. En particulier, les cartes de la gamme Tesla sont prévues exclusivement pour être utilisées avec CUDA et ne disposent pas des mécaniques nécessaires pour afficher des images sur un écran.

Mis à jour le 3 juillet 2017  par Thibaut Cuvelier

Officiellement, le C, le C++ et le Fortran sont gérés.

La communauté fournit déjà des bindings pour d'autres langages :

  • Python : PyCUDA
  • Java : jCUDA, JCublas, JCufft, JCudpp
  • .NET : CUDA.NET

Cependant, le support du C++ est limité aux fonctions qui s'exécutent sur l'hôte. Les fonctions pour les périphériques doivent se limiter au C. Néanmoins, quelques fonctionnalités du C++ fonctionnent sur le périphérique (templates, surcharge d'opérateurs), mais ne sont pas du tout supportées.

Créé le 29 juin 2009  par Thibaut Cuvelier

Lien : PyCuda
Lien : jCuda, JCublas, JCufft, JCudpp
Lien : CUDA.NET

CUDA est prévu pour des calculs efficaces de tout type sur GPU. Les développeurs peuvent compiler du C pour CUDA pour éviter de réécrire leurs algorithmes pour se plier aux concepts des API graphiques.

CUDA expose quelques fonctionnalités du matériel qui ne sont pas disponibles par ces API. La plus importante est la mémoire partagée. Ceci permet de mettre en caches les données souvent utilisées, ce qui peut accélérer l'accès à la mémoire. Combiné à une synchronisation des threads, ceci permet le calcul parallèle coopératif de données présentes sur le processeur, ce qui réduit fortement le coût du transfert des données de nombreux algorithmes parallèles.

Ces API forcent les développeurs à stocker leurs données dans des textures, ce qui requiert de les stocker dans des tableaux à deux dimensions, en complexifiant la situation, déjà non triviale.

CUDA offre aussi des transferts de données optimisés depuis et vers le GPU.

Créé le 29 juin 2009  par Thibaut Cuvelier

Parallel Thread eXecution.

Il s'agit de l'assembleur, généré par nvcc, exécuté sur le GPU compatible avec CUDA. Avant CUDA 2.2, il était aussi possible de compiler cet assembleur pour pouvoir l'utiliser sur CPU, ou sur toute autre plateforme.

Ce langage est parfaitement défini : sa documentation est fournie avec CUDA.

Les fichiers PTX sont compilés à l'aide de ptxas, utilitaire fourni avec CUDA.

Avec ce langage, il est possible d'utiliser certains caches qui ne sont pas disponibles à travers le runtime ou le pilote.

Créé le 29 juin 2009  par Thibaut Cuvelier
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009-2017 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.