L'une des revendications de NVIDIA concernant leur RTX 3000 c'est qu'ils ont doublé la virgule flottante power de leurs GPU, ce qui ne veut pas dire que la puissance et donc les performances de l'ensemble GPU a augmenté par rapport au RTX 2000 toutes choses étant égales par ailleurs mais seulement une partie du GPU, mais il est préférable de vous expliquer pourquoi sans entrer dans des détails trop techniques et de telle manière que même l'utilisateur le plus novice puisse le comprendre .
Selon NVIDIA, sa nouvelle série RTX 3000 est deux fois plus puissante (en termes de performances en virgule flottante) par rapport au RTX 3000, mais la réalité est que dans les jeux, cela ne signifie pas que les performances ont été doublées, et pour comprendre le raison pour laquelle cela se produit, nous devons comprendre une série de prémisses pour arriver à la conclusion qui en explique la raison.
Que signifie NVIDIA par performances en virgule flottante? C'est un type de données numériques, dont la vitesse de calcul est mesurée par une grandeur appelée FLOPS, opérations en virgule flottante par seconde, mais qui est au moins trompeuse lors de la comparaison d'appareils pour les raisons suivantes:
- Toutes les instructions ne se résolvent pas dans le même nombre de cycles d'horloge.
- Chaque processeur, quelle que soit sa nature, effectue une ou plusieurs opérations dans tous les cycles.
- Chaque instruction, équivalente ou équivalente n'est pas résolue dans toutes les architectures dans le même nombre de cycles.
Autrement dit, nous pouvons avoir deux systèmes avec 10 TFLOPS de puissance et l'un d'eux être plus rapide que l'autre, car dans celui qui est le plus puissant, des changements ont été incorporés dans l'architecture qui font que ce modèle fonctionne beaucoup mieux que l'autre, même s'ils ont le même taux en virgule flottante et même plus bas.
Le RTX 3000 comme évolution du RTX 2000
Pour arriver au point qui nous intéresse, il faut faire un double zoom sur l'architecture, en commençant par les unités SM de chacune des deux architectures:
La partie qui nous intéresse au sein du SM est le «sous-score» de chaque architecture, car il nous permettra de bien mieux comprendre les changements en termes de performances en virgule flottante survenus dans le RTX 2000 par rapport au RTX 3000.
Ingénieurs NVIDIA, lors de la conception de l'architecture Ampère du RTX 3000, l'ampoule était allumée et ils ont décidé de faire un changement moins intéressant dans les «sous-scores» pour augmenter les performances en virgule flottante par rapport à son prédécesseur en modifiant le moins d'éléments possible .
Étant donné que les sous-scores de Turing et d'Ampère utilisent le même ordonnanceur de chaîne et ont le même nombre de registres, ce qu'ils ont fait a été de profiter d'un petit piège pour pouvoir doubler la puissance en virgule flottante de chacun des «sous-scores». Quel est ce piège? Eh bien, ce que NVIDIA a fait est d'ajouter 16 autres ALU en virgule flottante 32 bits.
Dans Turing et Ampere, nous pouvons avoir 16 ALU Int32 et 16 ALU FP32 actives puisque le programmateur envoie 32 threads aux registres que les ALU correspondantes exécuteront par la suite.
NVIDIA appelle cette exécution simultanée et repose sur le fait que les ALU entiers et à virgule flottante fonctionnent ensemble.
Le problème dans le RTX 2000 survient lorsque nous avons une vague de 32 threads en virgule flottante: les ALU entiers ne peuvent pas exécuter ce code donc si nous avons une vague de ce type, elle devra être résolue en deux étapes au lieu d'une seule.
Ce que NVIDIA a fait dans l'architecture Ampère en doublant les ALU dans FP32, c'est qu'une vague de 32 threads en virgule flottante peut être résolue en deux fois moins de temps que Turing, doublant ainsi la vitesse (dans le sens où il ne faut qu'un cycle pour résoudre au lieu de deux).
Ainsi, entre le mode concurrent entier et virgule flottante, il n'y a aucune différence entre le RTX 3000 et le RTX 2000, et l'avantage de la virgule flottante sur les cartes graphiques à architecture Ampère ne se produira que lorsqu'elles exécutent une vague de jusqu'à 32 threads en virgule flottante.
Les spécifications techniques proviennent d'un contexte qui ne correspond pas à la réalité
Une fois que nous avons vu dans quelles situations le RTX 3000 est deux fois plus rapide que le RTX 2000 nous devons ajouter un autre élément à l'équation et c'est que lorsque nous parlons du taux FLOPS, nous parlons d'un taux théorique qui ne se produit pas en les vrais scénarios, et le problème avec TFLOPS dans les GPU est que les chiffres que les fabricants donnent sont des tarifs basés sur:
- Le GPU exécutant le type d'instruction le plus rapide, c'est-à-dire celui qui prend le moins de cycles. L'habitude est d'utiliser le FMADD / FMA car il s'agit d'une instruction arithmétique composée d'une addition et d'une multiplication qui est résolue dans le même cycle.
- La même instruction est toujours exécutée de manière répétitive, il n'y a pas de saut de ligne dans le code ou dans tout autre type d'instruction.
- Les données sont dans les registres, il n'y a pas de recherche de données dans les caches ou la mémoire VRAM, donc cette instruction est exécutée avec la latence la plus faible possible.
C'est comme si nous achetions une voiture de sport pour ses performances sur une ligne droite où elle pouvait accélérer sans encombre jusqu'à la limite. La réalité est que les routes sont beaucoup plus complexes que de simples lignes droites et il en va de même avec le code graphique des jeux; Cela signifie que ces taux impressionnants que tous les fabricants donnent ne sont jamais donnés et ne sont pas corrélés avec des scénarios réels.
Le NVIDIA RTX 3000 n'est donc pas deux fois plus puissant que le RTX 2000?
Non, ils ne le sont pas et c'est quelque chose qui, à ce stade de l'article, aurait dû être clair pour vous. Il faut comprendre que les graphismes 3D temps réel suivent un pipeline divisé en plusieurs étapes, dans une bonne partie d'entre elles le RTX 3000 ne sera pas plus rapide qu'un RTX 2000 équivalent, mais dans d'autres où la puissance en virgule flottante est importante elle le sera lorsque les graphiques Ampère prendront la tête et accéléreront l'exécution dans cette partie du pipeline graphique, bien que l'augmentation des performances ne soit jamais doublée.
Le pipeline est divisé en parties exécutées par les SM (unités de calcul en AMD's jargon), les étapes de shader et sont en vert dans le diagramme, tandis que les parties en bleu sont à fonction fixe. Celles-ci sont exécutées par des unités câblées et non programmées et dans ce cas, il n'y a pas eu d'améliorations du RTX 2000 au RTX 3000 (sauf sur le RT Core, mais il ne fait pas partie du pipeline de rastérisation).
Pour mieux comprendre la situation, il est préférable d'utiliser une comparaison: imaginez que nous avons deux voitures différentes, la voiture A et la voiture B qui peuvent avancer tout droit à la même vitesse, mais la voiture B a la particularité de prendre les virages deux fois plus vite que voiture A. Supposons que nous les ayons testés sur un circuit divisé en 7 segments: 4 lignes droites et 3 virages.
Comme vous pouvez le constater, la voiture B mettra moins de temps à parcourir chaque tour du circuit que sa rivale, et sans être deux fois plus rapide, elle profite d'un avantage considérable en étant plus rapide dans les virages. Il en va de même entre le RTX 3000 et le RTX 2000, leurs performances ne doubleront pas toujours, mais elles seront doublées dans certaines situations.
Quels sont les avantages du RTX 3000 par rapport au RTX 2000?
Surtout dans tout ce qui ne dépend pas d'unités de fonction fixes, comme le pipeline de calcul utilisé aujourd'hui dans les effets de post-traitement et dans la phase de Ray Tracing du rendu hybride. C'est la raison pour laquelle dans des applications comme Quake 2 RTX, les performances du RTX 3000 sont le double de celles du RTX 2000, du fait que c'est un jeu qui exploite grandement l'exécution en virgule flottante et n'utilise pas les unités de fonction du tout. pixellisation fixe.
Avec tout cela, vous pouvez comprendre les raisons pour lesquelles le RTX 3000, malgré le doublement du FLOPS, ne double pas les performances par rapport à son prédécesseur.