Nvidia GeForce GTX 280 & 260

Publié le 16/06/2008 par
Imprimer
Performances Pixel Shader
Nous avons testé 2 shaders d’éclairage relativement simples qui représentent un bon compromis entre des débits théoriques et pratiques :


La GeForce GTX 280 est ici 40 à 50% plus véloce.

Nous avons bien entendu cherché à en savoir plus sur les performances dans des situations nettement plus complexes. Nos tests étaient principalement tournés autour de la dual issue. Nous avons ainsi pu constater que effectivement celle-ci était utilisable plus facilement et avons noté par exemple un débit de 1.5 FMUL par cycle, ce qui signifie que les unités FMADs et les unités FMULs fonctionnent bien en parallèle. Par contre ces dernières ne semblent être utilisées qu'un cycle sur 2, nous n'en connaissons pas la raison. Peut-être une limitation liée à l'accès aux registres. La puissance de calcul maximale que nous avons obtenue, avec un shader composé de 2000 FMADs et de 2000 FMULs, est de 664.4 Gflops, soit 70% de la puissance de calcul maximale annoncée de 933.12 Gflops.

Performances Vertex Shader
Nous avons testé les performances en T&L, VS 1.1, VS 2.0 et VS 3.0 dans RightMark :


L’architecture unifiée permet aux GPUs récents d’attribuer toutes les ressources au traitement des vertex shader, ce qui entraîne un gain qui peut être conséquent. Il pourrait d’ailleurs être plus important mais est limité par le débit en triangle des GPUs qui sur toutes les GeForce testées ici est de 1 triangle par cycle. Par contre il est de 0.5 par cycle pour la Radeon HD 3870, alors qu'il était de 1 par cycle sur la Radeon HD 2900 XT. La fréquence plus élevée de la GeForce 9800 GTX joue donc ici en son avantage et fait de ce GPU le plus puissant que nous ayons pu avoir entre nos mains en matière de traitement géométrique (simple).

Performances Geometry Shader
Contrairement à Nvidia, AMD a intégré un cache généralisé pour les lectures/écritures en mémoire à partir du shader core. Celui-ci peut être utilisé d'une manière classique pour le Stream Output qui consiste, comme le requiert DirectX 10 à pouvoir écrire les données qui sortent du shader core sans passer par les ROPs. Il permet également de virtualiser les registres généraux qui peuvent ainsi être illimités.

Une autre utilité est d'utiliser la mémoire vidéo à travers ce cache pour stocker temporairement la masse potentiellement énorme de données créées par les Geometry Shaders lors d'amplification de la géométrie sans quoi les unités de calcul pourraient être bloquées par impossibilité de placer le résultat dans les registres généraux ce qui poserait un problème et à priori un plantage puisque les données géométriques doivent pouvoir rester dans le bon ordre. Par exemple imaginez les triangles 1 et 2 en train d'être décomposés. Le triangle 1 doit être rendu avant le triangle 2. Un GPU étant parallèle, ces 2 triangles peuvent être traités en même temps par le geometry shader qui va les décomposer en une série de plus petits triangles. A la sortie, tous les pixels issus du triangle 1 devront être rendus avant les autres. C'est bien s'il y a assez de mémoire pour tout stocker, il suffit d'attendre que le tout soit terminé et de contrôler que le rendu se fasse dans le bon ordre. Mais si le GPU tombe à court de mémoire alors que les triangles 1 et 2 sont toujours en train d'être décomposés, il est calé.

AMD évite ainsi ce problème. Nvidia doit bien entendu l'éviter également, il n'y a pas d'autre solution. Par contre l'approche de Nvidia est très différente. Nvidia prendrait ainsi le problème dans l'autre sens et au lieu de proposer plus de mémoire pour rétablir l'ordre après, Nvidia réduirait le nombre d'éléments traités en parallèles à un nombre qui permette toujours d'avoir assez de mémoire dans le GPU. Autrement dit au lieu de pouvoir utiliser 128 ou 240 processeurs pour traiter un geometry shader, si Nvidia détecte qu'il peut y avoir un problème ce nombre doit être réduit. Nous ne savons pas exactement à quel point Nvidia doit réduire le traitement en parallèle, mais il est évident qu'il y a là une grosse différence entre Nvidia et AMD, à l'avantage de ce dernier, même si les développeurs font attention à ne pas utiliser de cas problématique.

Pour compenser cela, Nvidia a augmenté fortement la taille de son cache en sortie des geometry shaders : x6. Qu'est-ce que ça donne en pratique ? Nous avons observé les performances à travers une démo de tesselation à base de geometry shader fournie par AMD au lancement des Radeon HD 2900 XT :


Comme vous pouvez le constater, même si les Radeon HD conservent leur avantage, les GeForce GTX 200 améliorent grandement les performances par rapport aux GeForce 8 et 9. Nvidia indique avoir augmenté son cache en correspondance avec ce que les développeurs utilisent et vont utiliser à moyen terme.
Vos réactions

Top articles