Tesla
INFOS PRODUIT
INFOS SUPPLEMENTAIRES
  • Newsletter CUDA / Supercalcul TeslaNewsletter CUDA / Supercalcul Tesla
    Souscrivez à la Newsletter CUDA/Supercalcul Tesla pour recevoir des mises à jour régulières sur l’architecture de traitement parallèle de NVIDIA (permettant d'exploiter la puissance du GPU pour résoudre des problèmes informatiques complexes bien plus rapidement qu’avec le CPU) mais également pour obtenir des informations sur les solutions Tesla de NVIDIA (permettant de résoudre les défis de calcul les plus avancés de l’industrie).

  • Outils de développement de logiciels

    Outils de développement de logiciels

  • Fournisseurs de GPU Cloud Computing
  • NVIDIA CUDA
LIENS CORRESPONDANTS

Calcul par le GPU

 

Le calcul par le GPU (également appelé GPGPU) consiste à utiliser le processeur graphique (GPU) pour exécuter des tâches de calcul polyvalentes de science et d’ingénierie.

Le calcul par le GPU permet d’utiliser à la fois le CPU et le GPU dans un modèle de calcul hétérogène à co-traitement. Les parties séquentielles des applications sont traitées par le CPU, alors que le GPU gère et accélère les tâches de calcul les plus intensives. Pour les utilisateurs, les applications tournent ainsi plus vite car les capacités avancées du GPU permettent de booster les performances du système.

Heterogeneous Computing

Ces dernières années, les GPU ont grandement évolué et ils intègrent maintenant plusieurs téraflops de performances de calcul en virgule flottante. En 2006-2007, NVIDIA a révolutionné les procédures de GPGPU et de calcul accéléré grâce à CUDA, sa nouvelle architecture massivement parallèle. L’architecture CUDA est composée de plusieurs centaines de cœurs de traitement travaillant simultanément afin de traiter un grand nombre de données.

Le succès du GPGPU est en grande partie dû à la flexibilité du modèle de programmation parallèle CUDA. Avec ce modèle, les développeurs d’applications peuvent maintenant modifier leurs programmes afin d’affecter au GPU le traitement des kernels de calcul les plus lourds, le reste de l’application restant affecté au CPU. Le mappage d’une fonction vers le GPU implique la réécriture de son code dans le langage « C pour CUDA » afin d’exploiter son parallélisme et de pouvoir traiter les données échangées avec le GPU. Les développeurs peuvent ainsi lancer plusieurs milliers de threads simultanément. La configuration matérielle du GPU permet de gérer les threads et d’en assurer la programmation.

Les GPU Tesla série 20 sont basés sur la nouvelle architecture Fermi, qui représente la troisième génération d'architectures CUDA. Fermi intègre des fonctions optimisées pour les applications scientifiques, dont : le support matériel IEEE de double précision en virgule flottante (plus de 500 gigaflops de puissance de calcul), les caches L1 et L2, la protection d’erreur de mémoire ECC, la gestion personnalisée des caches de données locales avec la mémoire partagée du GPU, les accès mémoires « coalesced », et bien plus encore.

« Les GPU ont tellement évolué que de nombreuses applications professionnelles internationales utilisent aujourd’hui leur puissance de calcul pour s’exécuter bien plus vite qu’avec un système multi-cœurs standard. Les architectures de calcul du futur seront des systèmes hybrides exploitant à la fois les GPU parallèles et les CPU multi-cœurs. »

Prof. Jack Dongarra
Directeur de l’Innovative Computing Laboratory
Université du Tennessee

Histoire du calcul par le GPU

À l’origine, les puces graphiques étaient uniquement composées de pipelines graphiques à fonction fixe. Au fil des années, la programmation de ces puces graphiques a énormément évolué. NVIDIA a exploité cette évolution pour sortir le tout premier processeur graphique (GPU), équivalent graphique du traditionnel processeur central (CPU). Entre 1999 et 2000, les chercheurs informatiques et les spécialistes de l’imagerie médicale et de l’électromagnétique ont commencé à utiliser les GPU pour exécuter des opérations de calcul générales. Les excellentes performances de virgule flottante des GPU leur ont offert un incroyable boost de performances en matière de recherche scientifique. C’était l’avènement du mouvement appelé GPGPU (pour « General Purpose computing on GPUs », « calcul généraliste sur les GPU »).

Seul problème : le GPGPU exigeait d’utiliser des langages de programmation graphique comme OpenGL et Cg afin d’assurer la compatibilité avec le CPU. Par conséquent, les développeurs devaient programmer leurs applications scientifiques à la manière des applications graphiques, ce qui limitait l’accessibilité aux incroyables performances des GPU pour la science, car l’aspect graphique était privilégié sur les capacités de calcul.

NVIDIA a réalisé le potentiel des performances des GPU pour la communauté scientifique, et a décidé de modifier ses GPU afin de faciliter leur programmation pour les applications scientifiques et de les rendre compatibles avec des langages à hautes performances comme C, C++ et Fortran. C’est ainsi qu’est née l’architecture CUDA pour les GPU.

Architecture parallèle CUDA et modèle de programmation

CUDA, c’est l’alliage d’une architecture matérielle et d’un modèle de programmation parallèles fournissant une grande gamme de capacités permettant l’expression de données denses et complexes dans un contexte de parallélisme. Les programmeurs peuvent choisir d’exprimer le parallélisme avec des langages à hautes performances comme C, C++ et Fortran ou avec des API comme OpenCL™ et DirectX™ 11 Compute.

GPU-ComputingOvrw.png

Aujourd’hui, NVIDIA fournit aux développeurs un support intégral pour la programmation GPU avec C, C++, Fortran, OpenCL et DirectCompute. Une nouvelle gamme d’outils de développement logiciel de bibliothèques et de logiciels middleware est désormais accessible aux développeurs, comme présenté ci-dessus et accessible via le lien suivant . Les GPU peuvent être programmés avec le langage C en utilisant un ensemble efficace de mots-clés et d’extensions. Par ailleurs, le support des langages Fortran et OpenCL (entres autres) sera bientôt disponible.

Le modèle de programmation parallèle de CUDA permet de partitionner un problème en plusieurs sous-problèmes qui peuvent être résolus rapidement avec la puissance parallèle des GPU. La composition de chaque sous-problème est de telle nature qu’il peut être traité sur un plan parallèle avec tous les autres sous-problèmes.

L’architecture CUDA et le modèle de programmation parallèle correspondant sont aujourd’hui déployés dans des milliers d’applications et sont présentés dans plus de 1000 dossiers de recherche. Le site CUDA Zone recense l’ensemble de ces applications et dossiers.

OpenCL est une marque commerciale d’Apple Inc. utilisée sous licence par Khronos Group Inc.
DirectX est une marque déposée de Microsoft Corporation.