Présentation
RÉSUMÉ
Cet article s'intéresse à la programmation des cartes graphiques dans le but de réaliser des calculs. D'abord, est décrite l'évolution des processeurs vers le parallélisme, et celle des cartes graphiques vers la programmation généraliste et le calcul massivement parallèle. Ces avancées poussent à s'intéresser aux cartes graphiques comme outils d'accélération des calculs, mais aussi comme objet d'entraînement pour la programmation des futures architectures des PC. Les principales architectures des cartes graphiques et les outils logiciels disponibles pour les programmer sont exposées. Une description plus détaillée des cartes NVIDIA et du langage de programmation CUDA est effectuée, suivie d'un exemple de programmation et d'optimisation. Pour finir, un aperçu des résultats obtenus et des évolutions techniques possibles est donné.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleAuteur(s)
-
Guillermo B. ANDRADE : Docteur en informatique - Ingénieur de recherche à l'Institut National de Recherche en Informatique et Automatique (INRIA) de Rennes Bretagne Atlantique
INTRODUCTION
L'évolution des cartes graphiques ces dernières années se caractérise par un parallélisme massif et par la généricité de programmation.
Augmenter le parallélisme a permis une augmentation du débit du rendu à la fois par la multiplication de la fréquence d'images générées et par accroissement en taille de ces dernières. La généricité a facilité l'émergence de nouveaux effets de rendu en temps réel grâce à l'apparition de composants programmables comme les unités de pixelisation programmables (programmable pixel shaders units).
Ces deux facteurs réunis ont rendu les cartes graphiques actuelles très attractives pour réaliser des calculs intensifs dépassant le cadre du rendu visuel. La puissance de crête d'une des nouvelles cartes dépasse celle de certains super-calculateurs pour un prix de quelques centaines d'euros ! C'est l'émergence d'une nouvelle technique appelée programmation généraliste de cartes graphiques (GPGPU, General-Purpose computation on Graphics Processing Units).
Le GPGPU est soutenu par les constructeurs des cartes graphiques comme NVIDIA et ATI/AMD qui y voient un nouveau marché pour leurs produits haut de gamme. Ils ont introduit des langages de haut niveau et des environnements de développement facilitant l'accès aux non spécialistes. Aujourd'hui, le calcul massivement parallèle se démocratise. L'évolution des processeurs des ordinateurs s'oriente aussi vers le parallélisme. Il est donc possible que les techniques du GPGPU d'aujourd'hui deviennent les bases de la programmation des PC de demain.
Cet article donne les clefs pour comprendre comment utiliser les cartes graphiques pour augmenter la puissance utile de calcul des ordinateurs. Une première partie est consacrée à l'évolution des cartes graphiques qui permettent de faire du GPGPU. Dans une deuxième partie, une description des architectures actuelles permet au lecteur de saisir les qualités et limitations des cartes graphiques pour le calcul. La troisième partie décrit les principaux langages de programmation orientés pour le calcul des cartes graphiques. Un exemple concret dans la quatrième partie permettra au lecteur d'apercevoir les enjeux de ces techniques et va l'aider à comprendre quel type de calcul est possible d'y être porté avec un bon retour d'investissement. La dernière partie décrit les évolutions à venir qui permettront une convergence plus forte entre CPU (Computer Processor Unit) et GPU (Graphic Processor Unit), ainsi que les évolutions de la couche logicielle en vue d'une standardisation de la programmation pour assurer la portabilité des développements.
Les références entre crochets sont développées dans la rubrique Pour en savoir plus.
VERSIONS
- Version courante de août 2016 par Dominique HOUZET
DOI (Digital Object Identifier)
CET ARTICLE SE TROUVE ÉGALEMENT DANS :
Accueil > Ressources documentaires > Archives > [Archives] Technologies logicielles et architecture des systèmes > Calcul généraliste sur carte graphique - Du rendu au calcul massivement parallèle > Architectures actuelles NVIDIA et ATI/AMD pour le calcul généraliste
Accueil > Ressources documentaires > Archives > [Archives] Electronique > Calcul généraliste sur carte graphique - Du rendu au calcul massivement parallèle > Architectures actuelles NVIDIA et ATI/AMD pour le calcul généraliste
Cet article fait partie de l’offre
Le traitement du signal et ses applications
(160 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
2. Architectures actuelles NVIDIA et ATI/AMD pour le calcul généraliste
Les cartes graphiques de NVIDIA à partir du GPU de la série G80 et d'ATI/AMD à partir du GPU de la série R600 disposent des capacités matérielles pour effectuer des calculs généralistes en virgule flottante ou en entier sur 32 bits avec des interfaces applicatives spécifiques au calcul généraliste (CUDA pour NVIDIA et Brook+/CAL pour ATI/AMD). Ceci rend facile l'adaptation du code à ces architectures. Nous trouverons ici un portrait des caractéristiques matérielles des dernières de ces cartes qui seront utiles pour maîtriser les performances de calcul. Nous ferons référence aux GPUs de la série G200 de NVIDIA et de la série RV770 de ATI/AMD qui sont les cartes disponibles (juillet 2009) sur le marché français. Les descriptions faites ici correspondent aux indications des constructeurs qui donnent un « modèle » d'architecture. La structure exacte des cartes n'est sans doute pas identique à ce modèle.
2.1 Multiprocesseurs
Les GPUs sont équipés de plusieurs unités de traitement qui sont groupées en blocs maintenant une cohérence d'exécution ou une localité pour accès à la mémoire.
HAUT DE PAGE
Les puces G200 sont équipées de 30 cœurs SIMD qui sont appelés SM (Streaming Multi-processor). Chacun de ces SM a 8 unités de traitement permettant d'effectuer des opérations arithmétiques sur des nombres en virgule flottante 32 bits et en entier 32 bits. Ces unités sont à la fois des ALU (Arithmetic and logical Unit) et des FPU (Floating Point Units). Elles sont appelées SP (Scalar Processor). Cela fait un total de 240 unités de traitement SP disponibles. Chaque SM dispose d'une unité de contrôle d'exécution, une pile d'instructions et un banc de registres à 16 canaux.
HAUT DE PAGE2.1.1.1 Unités de fonctions Spéciales (SFU)
Chaque SM dispose aussi de deux unités de traitement de calculs transcendantales (trigonométrie, racines carrées...) appelées SFU (Special Function Unit).
Les deux unités SFU peuvent...
Cet article fait partie de l’offre
Le traitement du signal et ses applications
(160 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Architectures actuelles NVIDIA et ATI/AMD pour le calcul généraliste
BIBLIOGRAPHIE
-
(1) - TUCKER (L.W.), ROBERTSON (G.G.) - Architecture and applications of the connection machine. - IEEE Comput., vol. 21, p. 26-38 (1988).
-
(2) - GUIDON (Y.) - Soufflerie numérique. Simulation de l'écoulement de gaz dans une soufflerie. - Pascalissime, no 64, p. 16-42 (1996).
-
(3) - NYLAND (L.), HARRIS (M.), PRINS (J.) - Fast N-body simulation with CUDA. - Addison-Wesley Educational Pub., ISBN 978-0321515261, Chapitre 31, GPU Gems 3 (2007).
-
(4) - GÖDDEKE (D.) et al - Co-processor acceleration of an unmodified parallel solid mechanics code with FEASTGPU. - Inter. Jour. of Computational Sci. and Engineering (2009).
-
(5) - BRANDVIK (T.), PULLAN (G.) - Acceleration of a 3D Euler Solver using commodity graphics hardware. - 46th AIAA Aerospace Sciences Meeting and Exhibit (2008).
-
(6) - PREIS (T.), VIRNAU (P.), WOLFGANG (P.), SCHNEIDER (J.J.) - GPU...
DANS NOS BASES DOCUMENTAIRES
ANNEXES
HARRIS Mark General-Purpose Computation on Graphics Hardware http://gpgpu.org/ (page consultée le 20 septembre 2009). Le plus important site sur le sujet avec des actualités, forums et tutoriels.
GAVRICHENKOV Ilya Intel Pentium Extreme Edition 965 CPU Review http://www.xbitlabs.com/articles/cpu/display/pentium-ee-965_8.html (page consultée le 20 septembre 2009). Revue du processeur avec la fréquence la plus élévée en 2006.
NVIDIA Corporation CUDA Zone – The resource for CUDA developers http://www.nvidia.com/object/cuda_home.html (page consultée le 20 septembre 2009). Le site met à disposition une excellente documentation et des outils logiciels pour le développement d'applications utilisant CUDA et les cartes graphiques NVIDIA, ce site maintient une importante liste de références de résultats d'utilisations de cartes graphiques pour le calcul.
Advanced Micro Devices, Inc. AMD Developer Central – ATI Stream Software Development Kit (SDK) http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx (page consultée le 20 septembre 2009). Le site contient les informations et les outils nécessaires pour le développement d'applications utilisant Brook+ et les cartes graphiques ATI/AMD.
Khronos Group http://www.khronos.org/opencl/ (page consultée...
Cet article fait partie de l’offre
Le traitement du signal et ses applications
(160 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive