Images par seconde : pourquoi les mesures étaient-elles faussées ?
« Choisis la pilule rouge, tu restes au pays des merveilles et je t’emmène au tréfonds du terrier ».
Au fil des ans, nous avons accumulé des tonnes de données pour évaluer les performances graphiques à l’aide d’utilitaires comme Fraps, ou bien des benchmarks intégrés au sein des rares jeux qui les proposent. Ces informations nous donnaient donc l’impression que telle carte graphique était plus performante qu’une autre, de même qu’elles permettaient de prévoir le gain de performance avec une deuxième carte en SLI/CrossFire.
D’une manière générale, personne ne réagit très bien lorsque ses croyances sont mises à rude épreuve, or le fait est que la méthode qui consiste à évaluer les performances à l’aide du nombre d’images par seconde est fondamentalement biaisée. Elle permet de déterminer sans ambiguïté qu’une carte ne tient pas la route, par exemple si la dite carte plafonne à moins de 15 ips en moyenne par exemple. Malheureusement, cette même moyenne ne permet pas de rendre compte de la régularité des images rendues, ce qui est particulièrement important lorsque deux cartes affichent de bonnes performances et semblent se comporter de la même manière.
À vrai dire, nous n’étions pas franchement enthousiastes lorsque nous avons appris que Scott Wasson de The Tech Report enquêtait sur la variance interimages à l’aide de Fraps. Néanmoins, sa première tentative ainsi que sa persistance ont très largement contribué à attirer notre attention sur les performances « durant une seconde », lesquelles sont souvent abordées en termes de débit d’images irrégulier/micro-saccades quand bien même le nombre d’ips moyen est élevé.
Ce sujet a commencé à faire surface il y a environ deux ans et malgré cela, nous avons encore plus de questions que de réponses. Le fait qu’il ait fallu autant de temps pour qu’il soit abordé sur la place publique a plusieurs explications.
Comme nous l’avons déjà évoqué, il a fallu que les mentalités changent. Quand bien même on a l’esprit ouvert, il y a de quoi être gêné lorsque des changements radicaux viennent complètement remettre en question ce qui semblait acquis. Personne n’a envie de croire que les informations récoltées jusqu’ici n’étaient pas nécessairement précises.
La deuxième raison a des fondements bien plus techniques : à l’heure actuelle, il n’y a pas d’outils alternatifs pour mesurer la moyenne d’ips. La variance interimages n’est pas une solution miracle vu que d’autres variables sont en jeu, comme par exemple le fait que Fraps tire ses informations à partir du circuit de rendu. Nous n’avons donc aucun utilitaire pour comparer les performances vidéo de façon sûre en s’appuyant exclusivement sur une observation objective.
Le Graal nous permettrait de remplacer les mesures en ips, mais encore faut-il que l’on puisse le trouver.
Vu le nombre de personnes et la somme de compétences mobilisées sur le sujet, il ne fait aucun doute que le problème sera résolu. Pour notre part, nous avons travaillé sur la notion de fluidité, ce qui s’est traduit par l’apparition dans nos tests de graphiques traitant de la variance interimages ainsi que des performances dans le temps, en plus des seuils minimum/maximum et de la moyenne. Aucun de ces benchmarks ne permet de faire individuellement un tour complet de la question, mais ils aident à se faire un avis aussi averti que possible lorsqu’il s’agit d’acheter la carte graphique la plus adaptée pour les titres auxquels on joue.
Aujourd’hui, nous découvrons un nouvel utilitaire pour analyser les performances des cartes graphiques (tout particulièrement les solutions multi GPU) : le Frame Capture Analysis Tool de NVIDIA, alias FCAT.
Les problèmes inhérents au multi GPU et la solution : FCAT
À l’heure où nous écrivons ces lignes, la mesure du nombre d’images rendues par seconde se fait avec des utilitaires comme Fraps ou bien les benchmarks intégrés pour les jeux qui les proposent, l’un comme l’autre capturant les images depuis la mémoire de la carte graphique. De prime abord, on pourrait penser qu’il s’agit d’une très bonne approche pour générer des données fiables.
Le problème tient au fait qu’il peut y avoir une divergence considérable entre ce que débite le moteur d’un jeu et ce que l’on voit sur un moniteur. Au-delà des problèmes susceptibles d’affecter une carte mono GPU, un CrossFire/SLI génère deux variables supplémentaires risquant de perturber l’expérience de jeu : les images perdues et ce que NVIDIA nous présente comme étant des images partiellement affichées.
Pour résumer, le rendu graphique ne prend pas fin lorsqu’une image est chargée en mémoire : il reste encore un travail considérable qui n’est pas instantané, ce qui explique le fait que certaines images soient perdues avant même de s’afficher à l’écran. D’autres images s’affichent partiellement, sur une portion d’écran très réduite. D’après NVIDIA, une image est partiellement affichée (“runt”) lorsqu’elle s’étend sur moins de 21 lignes de l’écran.
Naturellement, les images perdues ou partiellement affichées n’améliorent pas l’expérience de jeu. Cependant, les utilitaires de benchmark tels que Fraps les comptent comme des images « normales ». La situation est donc problématique, a fortiori avec une configuration qui sacrifie complètement la régularité pour rendre les images aussi vite que possible.
Comment donc capturer la performance de configurations SLI/CrossFire sans que les images perdues ou partiellement affichées ne faussent le résultat ?
Il faut enregistrer la séquence de benchmark avant de l’analyser, image par image : l’exercice est particulièrement prenant et semble suffisamment interminable pour motiver NVIDIA à développer sa propre suite logicielle.
Notre plateforme de test
Une partie des composants et logiciels que nous utilisons sont soit disponibles dans le commerce, soit des solutions libres. La configuration de test est par exemple reliée à un répartiteur–amplificateur DVI dual-link Gefen, lequel alimente un moniteur ainsi qu’une carte d’acquisition vidéo Datapath Limited Vision DVI-DL branchée sur une autre machine. Notons que pour analyser les données de manière fiable, la vidéo enregistrée doit être parfaite, c’est-à-dire sans images perdues. Nous avons donc monté un RAID à trois SSD afin de pouvoir gérer le flux vidéo brut (presque 650 Mo/s à la résolution maximale de la carte d’acquisition).
La configuration de test affiche une colonne en surimpression sur chaque image générée par la carte graphique suivant une séquence répétitive de 16 couleurs. Il s’agit d’un logiciel propriétaire NVIDIA, nécessaire pour automatiser le processus d’analyse. À en croire les représentants de la firme au caméléon, les équipes de Beepa pourraient tout à fait ajouter cette fonctionnalité de masque à Fraps et donc sortir NVIDIA de l’équation.
Les séquences de jeu avec masque sont capturées par VirtualDub sur le Raid de SSD. De là, un autre programme NVIDIA lit la vidéo, analyse la séquence des couleurs dans la colonne pour générer un document Excel. Le programme peut facilement détecter les images perdues (couleur manquante) comme les images partiellement affichées (occupant moins de 21 lignes à l’écran).
Le fichier Excel en sortie est extrêmement lourd, raison pour laquelle NVIDIA a développé une série de scripts Perl capables d’analyser les données, générer un rapport sur le débit d’images/variance interimages ainsi que des graphiques pour illustrer les données.
NVIDIA a baptisé la chaine complète FCAT, pour Frame Capture Analysis Tool. Du fait que les données sont expurgées des images perdues et partiellement affichées, les performances devraient donc être plus proches de celles que nous percevons tous.
Configuration du test
Nous utilisons FCAT pour comparer les performances d’un CrossFire de Radeon HD 7870 ainsi qu’un SLI de GTX 660 Ti au travers de neuf jeux (traités par ordre alphabétique): parce que ces cartes sont prisées tout en restant abordables, elles nous semblent idéales pour comparer les technologies de rendu propres à AMD et NVIDIA.
Composants | |||
---|---|---|---|
CPU | Intel Core i5-3550 (Ivy Bridge) 3,3 GHz (3,7 GHz en Turbo Boost) | ||
Carte mère | Gigabyte Z77X-UP7, LGA 1155, chipset Intel Z77 Express | ||
Réseau | Contrôleur LAN Gigabit intégré | ||
DRAM | Corsair Vengeance LP PC3-16000, 4 x 4 Go, 1600 MT/s, CAS 8-8-8-24-2T | ||
Cartes graphiques | 2 x GeForce GTX 660 Ti 2 Go GDDR5 en SLI 2 x Radeon HD 7870 2 Go GDDR5 en CrossFire | ||
Disque dur | Western Digital Caviar Black 1 To, 7200 tr/min, 32 Mo de cache, SATA 3Gb/s | ||
Alimentation | ePower EP-1200E10-T2 1200 Watts, ATX12V, EPS12V | ||
Logiciels et pilotes | |||
OS | Microsoft Windows 8 | ||
DirectX | DirectX 11.1 | ||
Graphiques | Catalyst 13.3 Beta 3 GeForce 314.22 Beta | ||
Benchmarks | |||
Borderlands 2 | v.1.0.28.697606, benchmark THW, 60 secondes sous FCAT/Fraps | ||
Crysis 3 | v.1.0.0.1, benchmark THW, 60 secondes sous FCAT/Fraps | ||
F1 2012 | v.1.3.3.0, benchmark intégré, 60 secondes sous FCAT/Fraps | ||
Far Cry 3 | v.1.0.0.1, benchmark THW, 60 secondes sous FCAT/Fraps | ||
Tomb Raider | v.1.0.722.3, benchmark THW, 60 secondes sous FCAT/Fraps |
Batman Arkham City
Avant d’attaquer les benchmarks, quelques précisions s’imposent au sujet des performances minimum et moyennes :
- « Hardware FPS » correspond au nombre d’ips rendues par les cartes graphiques
- « Practical FPS » est une représentation plus précise de ce que l’on voit à l’écran sachant que les images perdues ou partiellement affichées ne sont pas comptabilisées.
On tient donc deux séries de mesure par paire de cartes, auquel nous ajoutons les performances du CrossFire telles que rapportées par Fraps à titre de comparaison.
Dans le cas du SLI de GTX 660 Ti, il n’y a qu’une ips d’écart entre images rendues et images affichées. L’écart est de deux ou cinq ips dans le cas du CrossFire suivant que l’on observe respectivement les performances minimum ou moyennes.
Fraps tendrait à nous faire penser que les performances en ips rendues sont correctes, quand bien même les performances affichées sont un peu plus faibles.
En examinant les performances dans le temps, on constate que les performances du CrossFire en ips rendues (courbe rouge fine) comme celles mesurées sous Fraps (courbe rouge fine avec carrés) s’élèvent parfois au-delà des performances affichées (courbe rouge épaisse). Dans le cas du SLI en revanche, on ne distingue que très rarement les trois courbes.
Nous incluons également la variance interimages, calculée à partir des données générées par FCAT. GeForce et Radeon restent sous le seul de 7 ms au 95ème centile, ce qui est assez rassurant.
Borderlands 2
Borderlands 2 nous permet de constater un écart quasiment nul entre les ips rendues et ips affichées dans le cas des GeForce, tandis que l’on relève un maximum de 2,4 ips pour les Radeon (performances moyennes). Fraps se montre plus optimiste que les deux relevés effectués sous FCAT.
Les performances dans le temps mettent en évidence le comportement assez similaire des deux configurations. Cependant, on voit bien les quelques sauts de performances en ips rendues sur le CrossFire qui expliquent pourquoi performances moyennes affichées sont légèrement en retrait, vu que les images perdues ou partiellement affichées ne sont pas comptabilisées dans ce dernier cas.
Il n’y a pas grand-chose à dire sur la variance interimages ici, si ce n’est qu’elle est presque idéale.
Crysis 3
Une fois encore, les performances des GeForce ne varient pas entre ips rendues et ips affichées, tandis que l’écart grimpe à 2,8 ips (performances moyennes) du côté des Radeon. La mesure effectuée sous Fraps est donc ici plus proche des performances affichées que du nombre d’ips rendues par les cartes. Précisons que Fraps nécessite d’être exécuté à part, étant donné que son compteur d’ips ne semble pas faire bon ménage avec le masque propre à FCAT.
Bien que l’écart entre images rendues et images affichées soit assez faible sur les Radeon, on peut clairement identifier les images perdues/partiellement affichées en observant les performances dans le temps.
Qu’il s’agisse du SLI ou du CrossFire, la variance interimages est assez élevée. Les mesures confirment notre impression subjective, à savoir que le la fluidité semble un peu moins au rendez-vous sur les GeForce.
F1 2012
Voyons maintenant ce qu’il en est avec F1 2012, un titre que nous considérons comme étant souvent limité par le CPU.
Bien que F1 2012 soit donc dépendant des ressources processeur et mémoire, on constate ce qui est pour l’instant le plus grand écart entre ips rendues et ips affichées : 13,1 ips pour le CrossFire. Notons également que les performances sous Fraps sont les plus proches du résultat à l’écran alors que l’on pouvait intuitivement s’attendre à l’inverse.
En parallèle, les GeForce ne souffrent pas de cet écart. Pour la première fois, on constate donc l’effort de NVIDIA en faveur d’un débit d’images régulier au lieu d’un rendu aussi rapide que possible.
Les performances dans le temps donnent un exemple criant des images perdues/partiellement affichées qui provoquent ces pics chez AMD.
Quoi qu’il en soit, la variance interimages reste bien contenue y compris au 95ème centile.
FarCry 3
D’un point de vue performances, nos réglages réussissent particulièrement bien aux GeForce, lesquels affichent une constante parfaite entre images rendues et images affichées. Du côté des Radeon, on perd en moyenne 3,4 ips par rapport aux images rendues. Les résultats obtenus sous Fraps sont plus proches de cette dernière mesure comme on pouvait le prévoir.
Comme nous avons déjà pu l’observer, les Radeon connaissent des pics d’images rendues qui impliquent des images perdues ou partiellement affichées à l’écran.
La variance interimages prouve l’irrégularité des cartes d’AMD : au 95ème centile, on constate que les images ne sont plus affichées de façon régulière. Cette mesure confirme d’ailleurs notre impression subjective.
Hitman Absolution
Tout comme FarCry3, le dernier volet en date de Hitman fait partie du programme Never Settle d’AMD. On notera au passage qu’il nécessite la bagatelle de 25 Go d’espace disque.
Nous voici en face d’un cas particulièrement intéressant : le CrossFire affiche les meilleures performances en termes d’ips rendues, mais aussi les pires si l’on parle des ips affichées. L’écart est légèrement inférieur à 5 ips en moyenne mais on note qu’il est de 9 ips en termes de performances minimum.
Ce graphique, tout comme les pics d’ips rendues, nous est maintenant familier.
Voici donc un autre jeu sur lequel les Radeon souffrent d’une variance interimages assez élevée. L’expérience de jeu ne nous a pas semblé affectée dans le cas d’Hitman (nous avons répété plusieurs fois à AMD comme NVIDIA que certains titres souffrent plus que d’autres d’un débit d’images irrégulier). Cependant, on comprend mieux les mesures en ips à la lumière de ces résultats.
Metro 2033
Metro 2033 est un jeu aussi mature (le fps de 4A Games est sorti il y a 3 ans) qu’exigeant sur le plan graphique, ce qui semble contribuer à des résultats plus cohérents. Le fait est qu’en termes de performances moyennes, le nombre d’ips affichées reste assez stable par rapport au nombre d’ips rendues. En parallèle, les GeForce accusent une légère baisse des performances minimum à l’écran.
On identifie ici deux baisses d’ips rendues du côté des GeForce, ainsi que quelques pics sans grande influence sur les performances moyennes.
La faible variance interimages calculée à partir des données issues de FCAT laisse penser que l’expérience de jeu est assez fluide.
Elder Scrolls V: Skyrim
Aucune divergence n’est à signaler entre images rendues et images affichées du côté des GeForce, tandis que l’on relève une baisse de 3,1 ips pour les Radeon après avoir écarté les images perdues/partiellement affichées à l’écran.
Tomb Raider
Sur le neuvième et dernier titre de notre suite de tests, les Radeon souffrent puisque l’on constate une baisse en images affichées de 16,5 ips en ce qui concerne les performances moyennes.
En parallèle, les GTX 660 Ti affichent une constance entre images rendues et images affichées.
Les performances dans le temps sont particulièrement instructives : on visualise la quantité impressionnante d’images perdues/partiellement affichées qui doivent être écartées pour arriver aux performances à l’écran.
Minime sur les GeForce, la variance interimages prend une autre ampleur avec les Radeon. Une fois encore, ces résultats viennent confirmer notre impression subjective en conditions de jeu.
Le débit d’images peut être trompeur
Nous savions depuis plusieurs années que NVIDIA disposait de sa propre technologie pour mesurer le débit d’images, et depuis quelques mois que la firme au caméléon cherchait à quantifier les bénéfices d’une latence interimages régulière en minimisant images perdues/partiellement affichées. Cependant, NVIDIA n’a que très récemment souhaité partager les résultats de ses travaux et à l’heure actuelle, les outils sont encore un peu capricieux. Nous aurions souhaité avoir encore plus de contenu, mais notre configuration X79 Express nous renvoyait des données FCAT clairement aberrantes. Le passage à une configuration en Z77 Express à la dernière minute nous a permis d’avoir les résultats que nous attendions.
Comme on s’y attendait grâce aux travaux précurseurs de The Tech Report ainsi que les exemples propres à NVIDIA, nous avons constaté qu’un CrossFire de HD 7870 tend à générer un plus grand nombre d’images perdues/partiellement affichées qu’un SLI de GTX 660 Ti. Les pilotes NVIDIA semblent donc plus matures sur ce point, sachant qu’AMD admet être en train de rattraper son retard grâce à l’amélioration progressive des Catalyst.
Quoi qu’il en soit, NVIDIA a dirigé tout ce travail pour arriver à quantifier les performances graphiques de manière scientifique. Il faut donc saluer l’investissement qui a permis d’aboutir à quelque chose que nous n’aurions pas pu développer de notre côté même si nous ne sommes pas naïfs : les motivations de Nvidia n’étaient pas altruistes. Le fait est que FCAT nous donne les outils pour évaluer quelque chose avec une précision que nous n’avions pas auparavant. Ce sont maintenant deux de nos laboratoires qui bénéficient des ressources matérielles et logicielles pour effectuer des tests avec FCAT, et nous avons d’ores et déjà commencé à effectuer des mesures pour donner une suite plus détaillée à cet article.
Car les réponses que nous avons pu obtenir avec FCAT appellent de nouvelles questions. S’il semble évitent qu’une image affichée sur moins de 21 lignes de balayage ne contribue que très peu (voire pas du tout) à la fluidité d’un jeu, est-ce qu’un œil expert verrait une amélioration si l’on divisait l’écran de manière égale avec deux, trois ou même cinquante images composées de 22 lignes ou plus à l’écran ? FCAT ayant été conçu pour aider l’utilisateur à définir manuellement ce que peut être une image partiellement affichée, il va nous falloir passer un certain temps à jouer avec les scripts pour vraiment arriver à nos propres critères d’évaluation. En attendant, ce que l’on a vu aujourd’hui résulte de ce que l’on obtient lorsque FCAT est configuré par défaut.