30 votes

À quoi ressemble CUDA ? À quoi sert-il ? Quels sont les avantages ? Et comment commencer ?

Je suis intéressé par le développement d'une nouvelle technologie et je pensais essayer CUDA. Or, leur documentation est trop technique et ne fournit pas les réponses que je recherche. De plus, j'aimerais entendre ces réponses de la part de personnes qui ont déjà une certaine expérience avec CUDA.

Pour l'essentiel, mes questions sont celles qui figurent dans le titre :

Qu'est-ce que CUDA exactement ? (s'agit-il d'un framework ? d'une API ? de quoi ?)

À quoi cela sert-il ? (y a-t-il quelque chose de plus que la simple programmation vers le GPU ?)

À quoi cela ressemble-t-il ?

Quels sont les avantages de programmer avec CUDA plutôt qu'avec le CPU ?

Quel est le meilleur endroit pour commencer à programmer avec CUDA ?

42voto

Victor Nicollet Points 16924

CUDA réunit plusieurs éléments :

  • Matériel massivement parallèle conçu pour exécuter du code générique (non graphique), avec les pilotes appropriés.
  • Un langage de programmation basé sur le langage C pour programmer ce matériel, et un langage d'assemblage que d'autres langages de programmation peuvent utiliser comme cible.
  • Un kit de développement logiciel qui comprend des bibliothèques, divers outils de débogage, de profilage et de compilation, ainsi que des liaisons permettant aux langages de programmation côté CPU d'invoquer le code côté GPU.

L'intérêt de CUDA est d'écrire du code qui peut être exécuté sur des architectures SIMD massivement parallèles compatibles : cela inclut plusieurs types de GPU ainsi que du matériel non GPU tel que nVidia Tesla. Le matériel massivement parallèle peut exécuter un nombre d'opérations par seconde nettement plus élevé que le CPU, pour un coût financier relativement similaire, ce qui permet d'améliorer les performances de 50× ou plus dans les situations qui le permettent.

L'un des avantages de CUDA par rapport aux méthodes précédentes est qu'un langage universel est disponible, au lieu de devoir utiliser des nuanceurs de pixels et de sommets pour émuler des ordinateurs universels. Ce langage est basé sur le langage C avec quelques mots-clés et concepts supplémentaires, ce qui le rend relativement facile à assimiler pour les programmeurs ne disposant pas d'un GPU.

C'est également un signe que nVidia est prêt à prendre en charge la parallélisation à usage général sur son matériel : cela ressemble désormais moins à du "bidouillage avec le GPU" qu'à "l'utilisation d'une technologie prise en charge par un fournisseur", ce qui facilite son adoption en présence de parties prenantes non techniques.

Pour commencer à utiliser CUDA, téléchargez le SDK, lisez le manuel (sérieusement, il n'est pas que compliqué si vous connaissez déjà le C) et d'acheter du matériel compatible avec CUDA (vous peut utiliser l'émulateur au début, mais la performance étant le but ultime, il vaut mieux que vous puissiez réellement essayer votre code)

3voto

Aasmund Eldhuset Points 17036

(Avertissement : je n'ai utilisé CUDA que dans le cadre d'un projet semestriel en 2008, il se peut donc que les choses aient changé depuis). CUDA est une chaîne d'outils de développement permettant de créer des programmes pouvant être exécutés sur des GPU nVidia, ainsi qu'une API permettant de contrôler ces programmes à partir du CPU.

Les avantages de la programmation GPU par rapport à la programmation CPU sont les suivants : pour certains problèmes hautement parallélisables, vous pouvez obtenir massif (environ deux ordres de grandeur plus rapides). Cependant, de nombreux problèmes sont difficiles ou impossibles à formuler d'une manière qui les rende adaptés à la parallélisation.

D'une certaine manière, CUDA est assez simple, car vous pouvez utiliser le langage C normal pour créer les programmes. Cependant, pour obtenir de bonnes performances, de nombreux éléments doivent être pris en compte, notamment de nombreux détails de bas niveau de l'architecture du GPU Tesla.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X