Présentation
EnglishRÉSUMÉ
Cet article s'intéresse à l'architecture et à la programmation des cartes graphiques dans le but de réaliser des calculs. L'évolution des processeurs vers le parallélisme est décrite, puis celle des cartes graphiques vers la programmation généraliste et le calcul massivement parallèle. 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, du langage de programmation CUDA et des librairies associées 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)
-
Dominique HOUZET : Professeur des Universités - Grenoble-INP, Grenoble, France
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 l’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 pixellisation et de géométrie 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 supercalculateurs 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. 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 GPGPU se développe aussi bien dans les supercalculateurs, les ordinateurs de bureau que dans l’embarqué. L’évolution des processeurs des ordinateurs s’oriente aussi vers le parallélisme. Les techniques du GPGPU d’aujourd’hui deviennent progressivement les bases de la programmation des PC de demain. Cela est déjà possible avec le langage OpenCL (Open Computing Language) qui se veut portable entre CPU (Computer Processor Unit) et GPU (Graphic Processor Unit).
Cet article donne les clefs pour comprendre comment utiliser les processeurs graphiques pour augmenter la puissance utile de calcul des ordinateurs en abordant en particulier la problématique du parallélisme. Le parallélisme impose des contraintes fortes à la programmation et aux algorithmes pour pouvoir bénéficier pleinement des architectures matérielles des GPU. Une première partie est consacrée à l’évolution des processeurs 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 processeurs graphiques pour le calcul parallèle. La troisième partie décrit les principaux langages de programmation orientés pour le calcul des processeurs 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 sur investissement. La dernière partie décrit les évolutions à venir qui permettront une convergence plus forte entre CPU et GPU, ainsi que les évolutions de la couche logicielle en vue d’une standardisation de la programmation pour assurer la portabilité des développements.
MOTS-CLÉS
VERSIONS
- Version archivée 1 de févr. 2010 par Guillermo B. ANDRADE
DOI (Digital Object Identifier)
CET ARTICLE SE TROUVE ÉGALEMENT DANS :
Accueil > Ressources documentaires > Technologies de l'information > Technologies logicielles Architectures des systèmes > Architectures matérielles > Calcul généraliste sur carte graphique - Du rendu au calcul massivement parallèle > Conclusion
Accueil > Ressources documentaires > Électronique - Photonique > Électronique > Architecture et tests des circuits numériques > Calcul généraliste sur carte graphique - Du rendu au calcul massivement parallèle > Conclusion
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
6. Conclusion
L’usage des GPU va grandissant aussi bien au sein des supercalculateurs que des ordinateurs de bureau et de plus en plus dans les systèmes embarqués. Cela ne va pas sans un gros effort de programmation pour en tirer tout le bénéfice en particulier en termes de performances par watt. L’efficacité des GPU repose essentiellement sur la bande passante élevée de leur mémoire grâce à des bus mémoire de grande taille, permettant de traiter de grandes quantités de données en parallèle. Pour cela l’algorithme porté sur GPU doit permettre un traitement indépendant de données pour être exécutées en parallèle en grand nombre. Ce passage à l’échelle (scalabilité) est indispensable pour être portable d’une génération à l’autre. La bande passante mémoire va progresser de manière importante avec l’avènement de la technologie de puces silicium 3D de mémoires empilées permettant des connexions de manière matricielle avec des bus actuellement de 4096 bits appelés à croître fortement ce qui permettra un couplage beaucoup plus fort entre les cœurs et la mémoire. Cette ressource de calcul parallèle nécessitera de démocratiser encore plus sa programmation au travers d’outils/langages permettant d’abstraire les détails matériels tout en donnant un minimum de moyens d’optimisation. C’est déjà le cas avec des environnements spécialisés sur des domaines d’application comme OpenVX pour le traitement vidéo ou encore avec les évolutions du C++ 11/14/17 qui intègrent le parallélisme à haut niveau avec notamment la librairie parallèle STL. Du point de vue portabilité des codes, AMD propose maintenant un environnement traduisant automatiquement du code CUDA sur ses GPU. C’est un choix pragmatique du fait de la domination du marché des GPU externes à 80 % par NVIDIA avec CUDA comme environnement principalement utilisé C’est un élément important au niveau industriel pour diffuser ces technologies qui restent pointues. Assurer cette portabilité, abstraire la programmation avec des environnements, comme OpenMP 4.5 et OpenACC 2.5, sont des éléments importants mais il reste à faciliter notre capacité à explorer les codes sur ces différentes cibles pour rendre pérennes les investissements sur ces technologies.
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
Conclusion
BIBLIOGRAPHIE
-
(1) - TUCKER (L.W.), ROBERTSON (G.G.) - Architecture and applications of the connection machine. - IEEE Comput., vol. 21, p. 26-38 (1988).
-
(2) - TREW (A.), WILSON (G.) (eds.) (1991) - Past, Present, Parallel : A Survey of Available Parallel Computing Systems. - New York : Springer-Verlag (ISBN 0-387-19664-1)
-
(3) - GUIDON (Y.) - Soufflerie numérique. Simulation de l’écoulement de gaz dans une soufflerie. - Pascalissime, no 64, p. 16-42 (1996).
-
(4) - ALEXANDRESCU (A.) - Modern C++ design : generic programming and design patterns applied. - Addison-Wesley, (2001).
-
(5) - 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).
DANS NOS BASES DOCUMENTAIRES
ANNEXES
(portails, pages personnelles, forums, listes de discussion)
HARRIS Mark General-Purpose Computation on Graphics Hardware http://gpgpu.org/ (page consultée le 20 septembre 2015). Le plus important site sur le sujet avec des actualités, forums et tutoriels.
NVIDIA Corporation CUDA Zone – The resource for CUDA developers http://www.nvidia.com/object/cuda_home_new.html (page consultée le 20 septembre 2015). 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’utilisation de cartes graphiques pour le calcul.
Advanced Micro Devices, Inc. AMD Developer Central – ATI Stream Software Development Kit (SDK) https://developer.amd.com/ (page consultée le 20 septembre 2015). 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 https://www.khronos.org/opencl/ (page consultée le 20 septembre 2015). Site web de la spécification d’OpenCL.
ArrayFire http://arrayfire.com/ (page consultée le 20 septembre 2015). Site web de la librairie ArrayFire
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