IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ CUDA

FAQ CUDAConsultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 66, dernière mise à jour : 14 juin 2021 

 
OuvrirSommaireCUDACUDA Généralités

C'est une architecture de calcul parallèle, qui utilise la capacité de calcul parallèle des GPU NVIDIA.

CUDA permet le développement d'applications dans un langage de haut niveau, comme le C), et supportera bientôt les API standard comme DirectX et OpenCL.

C for CUDA est le nom du langage utilisé, dérivé du C, permettant d'employer toutes les spécificités de CUDA. En général, ce langage est abbrévié en CUDA. Il s'agit d'extensions propres à NVIDIA pour le C. Ce langage est compilé grâce à nvcc, un compilateur dérivant d'Open64.

CUDA a été introduit sur le marché le 15 février 2007, originellement pour les GPU de la famille GeForce 8800, disponible dès le 8 novembre 2006. Le support de toutes les cartes graphiques plus récentes est disponible.

CUDA est disponible dès l'origine sous Windows, le support de Mac OS X et de Linux a été ajouté plus tard.

Actuellement, plus de 100.000.000 de GPU compatibles CUDA ont été vendus.

Créé le 2 juillet 2009  par Thibaut Cuvelier

Lien : GPU compatibles
Lien : OS supportés

Toutes les NVIDIA GeForce des générations 8 et supérieures, le NVIDIA ION, les NVIDIA Tesla séries 8 et supérieures, et toutes les NVIDIA Quadro.

NVIDIA s'est d'ailleurs engagée à ce que les futures cartes restent compatibles avec CUDA.

Voici la liste des GPU compatibles à l'heure actuelle.

NVIDIA GeForce
  • GeForce GTX 295
  • GeForce GTX 285
  • GeForce GTX 285 pour Mac
  • GeForce GTX 280
  • GeForce GTX 275
  • GeForce GTX 260
  • GeForce GTS 250
  • GeForce GTS 240
  • GeForce GT 220
  • GeForce G 210
  • GeForce GTS 150
  • GeForce GT 130
  • GeForce GT 120
  • GeForce G 100
  • GeForce 9800 GX2
  • GeForce 9800 GTX+
  • GeForce 9800 GTX
  • GeForce 9800 GT
  • GeForce 9600 GSO
  • GeForce 9600 GT
  • GeForce 9500 GT
  • GeForce 9400 GT
  • GeForce 9400 mGPU
  • GeForce 9300 mGPU
  • GeForce 8800 Ultra
  • GeForce 8800 GTX
  • GeForce 8800 GTS
  • GeForce 8800 GT
  • GeForce 8800 GS
  • GeForce 8600 GTS
  • GeForce 8600 GT
  • GeForce 8600 mGT
  • GeForce 8500 GT
  • GeForce 8400 GS
  • GeForce 8300 mGPU
  • GeForce 8200 mGPU
  • GeForce 8100 mGPU

NVIDIA GeForce Mobile

  • GeForce GTX 280M
  • GeForce GTX 260M
  • GeForce GTS 260M
  • GeForce GTS 250M
  • GeForce GTS 160M
  • GeForce GTS 150M
  • GeForce GT 240M
  • GeForce GT 230M
  • GeForce GT 130M
  • GeForce G210M
  • GeForce G110M
  • GeForce G105M
  • GeForce G102M
  • GeForce 9800M GTX
  • GeForce 9800M GTS
  • GeForce 9800M GT
  • GeForce 9700M GTS
  • GeForce 9700M GT
  • GeForce 9650M GT
  • GeForce 9650M GS
  • GeForce 9600M GT
  • GeForce 9600M GS
  • GeForce 9500M GS
  • GeForce 9500M G
  • GeForce 9400M G
  • GeForce 9300M GS
  • GeForce 9300M G
  • GeForce 9200M GS
  • GeForce 9100M G
  • GeForce 8800M GTS
  • GeForce 8700M GT
  • GeForce 8600M GT
  • GeForce 8600M GS
  • GeForce 8400M GT
  • GeForce 8400M GS
NVIDIA Quadro
  • Quadro FX 5800
  • Quadro FX 5600
  • Quadro FX 4800
  • Quadro FX 4800 pour Mac
  • Quadro FX 4700 X2
  • Quadro FX 4600
  • Quadro FX 3800
  • Quadro FX 3700
  • Quadro FX 1800
  • Quadro FX 1700
  • Quadro FX 580
  • Quadro FX 570
  • Quadro FX 380
  • Quadro FX 370
  • Quadro FX 370 Low Profile
  • Quadro CX
  • Quadro NVS 450
  • Quadro NVS 420
  • Quadro NVS 295
  • Quadro NVS 290
  • Quadro Plex 2100 D4
  • Quadro Plex 2200 D2
  • Quadro Plex 2100 S4
  • Quadro Plex 1000 Model IV

NVIDIA Quadro Mobile

  • Quadro FX 3700M
  • Quadro FX 3600M
  • Quadro FX 2700M
  • Quadro FX 1700M
  • Quadro FX 1600M
  • Quadro FX 770M
  • Quadro FX 570M
  • Quadro FX 370M
  • Quadro FX 360M
  • Quadro NVS 320M
  • Quadro NVS 160M
  • Quadro NVS 150M
  • Quadro NVS 140M
  • Quadro NVS 135M
  • Quadro NVS 130M
NVIDIA Tesla
  • Tesla S1070
  • Tesla C1060
  • Tesla C870
  • Tesla D870
  • Tesla S870
NVIDIA ION
Mis à jour le 3 août 2009  par Thibaut Cuvelier

Officiellement, le C, le C++ et le Fortran sont supporté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 2 juillet 2009  par Thibaut Cuvelier

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

  • Windows XP (32 bits) dès CUDA 1.0
  • Windows XP (64 bits) dès CUDA 1.1
  • Windows Vista (32 bits) dès CUDA 2.0 (1.0 en beta, même version que pour XP 32 bits)
  • Windows Vista (64 bits) dès CUDA 2.0 (1.1 en beta, même version que pour XP 64 bits)
  • Windows 7 (32 bits) dès CUDA 2.2
  • Windows 7 (64 bits) dès CUDA 2.2
  • Linux (32 bits) dès CUDA 1.1
  • Linux (64 bits) dès CUDA 1.1
  • MacOS X 10.5.2 et supérieurs (64 bits) dès CUDA 2.0 (1.1 en beta)
  • MacOS X 10.5.6 et supérieurs (64 bits) dès CUDA 2.3 (1.1 en beta)

Actuellement, seules ces distributions Linux sont officiellement supportées.

  • Red Hat Enterprise Linux 3.x (uniquement CUDA 1.1)
  • Red Hat Enterprise Linux 4.x (dès CUDA 1.1)
  • Red Hat Enterprise Linux 5.x (dès CUDA 1.1)
  • SUSE Linux Enterprise Desktop 10.0 (dès CUDA 1.1)
  • SUSE Linux Enterprise Desktop 11.0 (dès CUDA 2.1)
  • OpenSUSE Linux 10.1 (seulement CUDA 1.1)
  • OpenSUSE Linux 10.2 (CUDA 1.1 et 2.0)
  • OpenSUSE Linux 10.3 (CUDA 2.0 et 2.1)
  • OpenSUSE Linux 11.0 (CUDA 2.1 et 2.2)
  • OpenSUSE Linux 11.1 (dès CUDA 2.2)
  • Fedora 7 (uniquement CUDA 1.1)
  • Fedora 8 (CUDA 2.0 et 2.1)
  • Fedora 9 (CUDA 2.1 et 2.2)
  • Fedora 10 (dès CUDA 2.2)
  • Ubuntu 7.04 (CUDA 1.1 et 2.0)
  • Ubuntu 7.10 (CUDA 2.0 et 2.1)
  • Ubuntu 8.04 (CUDA 2.1 et 2.2)
  • Ubuntu 8.10 (CUDA 2.2 et 2.3)
  • Ubuntu 9.04 (dès CUDA 2.3)

DOS n'est pas supporté en mode réel, vu que le pilote d'affichage, qui gère les accès à la carte graphique, et donc à CUDA, n'est pas chargé.

Sous Windows, seuls Visual Studio 2005 et 2008 sont supportés en tant que compilateur.

Créé le 2 juillet 2009  par Thibaut Cuvelier

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 leur 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ée à 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 2 juillet 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 2 juillet 2009  par Thibaut Cuvelier

Copyright © 2009 Thibaut Cuvelier. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.