Nvidia Fermi : la révolution du GPU Computing
Publié le 01/10/2009 par Damien Triolet
CUDA 3.0 et PTX 2.0Si Nvidia a voulu conserver le modèle de programmation de base de CUDA, pour des raisons de compatibilité avec le code actuel destiné à CUDA et pour ne pas imposer un modèle trop différent aux développeurs, de sérieuses améliorations ont été apportées à l’ISA. Si le PTX 1.x sera compatible avec Fermi, le PTX 2.0 spécifique à cette nouvelle architecture ne sera, lui, pas compatible avec les GPUs actuels.
Les améliorations concernent autant le hardware que le software compte tenu des interactions à ce niveau. Tout d’abord, Nvidia a voulu apporter un support de CUDA en C++, ce qui n’était pas trivial puisque plusieurs limitations des précédentes architectures l’empêchaient. Ainsi, Nvidia a unifié l’espace mémoire adressable par Fermi. S’il reste de 40 bits comme sur le GT200, il regroupe les espace mémoire locaux, partagés et globaux. Cet espace unifié permet de gérer les pointeurs et les références qui sont nécessaires au support d’un langage de haut niveau tel que C++.
Ce n’est pas tout puisque Nvidia a rendu sa gestion des branchements plus flexible pour supporter les fonctions virtuelles et les appels récursifs. La prédication est également au menu pour toutes les instructions pour éviter de devoir recourir aux branchements dynamiques dans un maximum de cas. L’ISA de Fermi supporte les appels systèmes ainsi que les exceptions avec des primitives telles que try et catch.
Alors que les GPUs actuels sont capables de traiter plusieurs types de kernels en mode graphique (pixel shaders, vertex shaders etc.), ce n’est pas le cas en mode computing. Dans celui-ci, ils ne peuvent envoyer qu’un seul kernel à la fois et le suivant ne peut pas l’être avant que le premier n’ait été entièrement traité. Le problème est que si le kernel est petit, c’est-à-dire qu’il ne rempli pas tout le GPU, de la puissance de calcul est perdue.
Avec Fermi, Nvidia propose d’exécuter jusqu’à 16 kernels (mais peut-être un petit peu moins en pratique) en concurrence, s’il n’y a pas de dépendance bien entendu. De quoi faire exploser le rendement de ce futur GPU et de rendre enfin viables certains algorithmes sur celui-ci.
Passer d’un contexte à l’autre sera également beaucoup plus rapide, Nvidia parle d’un gain de 10x par rapport au GT200, ce qui permettra des interactions plus efficaces entre un rendu 3D et le calcul de la physique par exemple.
Enfin, Nvidia va introduire Nexus, un environnement de développement qui s’intègre à Visual Studio de Microsoft et facilitera le développement et le débogage du code destiné au GPU en permettant de suivre le moindre thread à la trace.
Toutes ces nouveautés changent complètement la donne pour les développeurs qui vont gagner en liberté et pouvoir profiter du GPU plus simplement et dans plus de cas.
Du G80 à Fermi
3 milliards de transistors
Sommaire
Vos réactions
Contenus relatifs
- [+] 10/04: Nvidia : fin du support Fermi et 32...
- [+] 09/02: Nvidia lance les Quadro Pascal dont...
- [+] 05/04: GTC: Nvidia Tesla P100: 10 Tflops, ...
- [+] 15/12: GPUOpen, la réponse d'AMD à GameWor...
- [+] 16/11: AMD et HPC: nouveaux outils, suppor...
- [+] 09/07: AMD lance la FirePro S9170: Hawaii ...
- [+] 08/12: Nvidia lance la Tesla K80: double G...
- [+] 02/12: IBM Power9 et Nvidia Volta : 100+ p...
- [+] 12/03: Nvidia lance les GeForce 800M avec ...
- [+] 25/11: Nvidia annonce la Tesla K40 et CUDA...