GPUreport.cz
Webové stránky o grafických kartách

 
Skip Navigation Links
 

Měření výkonu gpu podle latencí

Při testování výkonu grafických karet za účelem jejich následného porovnávání se donedávna používala prakticky výhradně hodnota průměrné snímkové frekvence (average frame rate). Na to, že srovnávání grafických karet podle této průměrné (nebo minimální) snímkové frekvence není tím nejlepším a ani nejspravedlivějším řešením, poukázal ve svém článku Scott Wasson na www.techreport.com.

Systém (cpu+gpu) totiž renderuje snímky v rozdílných časových intervalech (latencích), jejichž variabilita může způsobovat nepříjemné poruchy při vnímání plynulosti pohybu ve hře (frame drop, stuttering, mikro stuttering atd.). Výsledkem pak je to, že ačkoliv gpu renderuje snímky ve vysokém průměrném frame rate, plynulost hry odpovídá snímkové frekvenci daleko nižší. Příkladem mohou být multi-gpu řešení, jejichž průměrná snímková frekvence je sice vysoká, ale díky mikro-stutteringu je vjem plynulosti pohybu v mnoha případech horší než u řešení s jedním gpu (které takové frame rate nedosahuje). Pokud bychom naměřené hodnoty latencí zanesly do grafu, průběhová křivka by vypadala nějak takto:


Obrázek 1.

Scott Wasson se na Techreportu pokusil zavést nové metody do měření výkonu gpu, ve kterých by vzal v úvahu také variabilitu latencí a stuttering. Jednalo se zejména o využití 99-té percentile a zkoumání času, který gpu při renderování snímku tráví nad určitou časovou hranicí (time spent). Ačkoliv se jednalo o poměrně revoluční skok při posuzování výkonu gpu a jeho měření, tyto přístupy a metody mají také své slabiny. Pro komparaci různých gpu je nutné použít pouze veličinu jedinou. Scott jako komparační hodnotu zvolil 99-tý percentile, který v sobě sice určitou míru variability latencí zahrnuje, nicméně je to do jisté míry hodnota náhodná a třeba pro určení mikro stutteringu naprosto imunní.

Ačkoliv tyto metody Scotta převzaly také další weby, které se testování gpu věnují, já osobně jsem k těmto metodám spíše skeptický. Proto jsem se pokusil vytvořit alternativu, jejímž výsledkem by byla jedna jediná hodnota, obsahující v sobě jak variabilitu latencí, tak také stuttering a mikro stuttering.


Analýza křivky průběhu latencí

Metoda spočívá v postupné analýze křivky, která nám vzniká ze souboru naměřených latencí (obr.1). Pokud by se nám povedlo vytvořit pomocnou spojitou křivku, která by procházela pomyslným středem vynesených hodnot latencí a byla dostatečně "hladká", mohli bychom si analýzu rozdělit do tří následujících skupin.


Obrázek 2.

  1. Hrubý výkon gpu - vzdálenost přímky průměrné latence od osy X (žlutá barva)
  2. Variabilita scény - odchylka "hladké" křivky latencí od přímky průměrné latence (červená barva)
  3. (Mikro)Stuttering - odchylky jednotlivých hodnot latencí od "hladké" křivky (modrá barva)

Primárním úkolem tedy je vytvořit onu pomocnou hladkou křivku (červená), která prochází středem vynesených latencí a od které se odvíjí následné analýzy. Pro naši potřebu je tato středová křivka vytvořena vyhlazením původní neuspořádané křivky naměřených hodnot latencí pomocí "klouzavého průměru". Technika klouzavého průměru funguje v podmínkách poměrně velkého počtu vstupních dat velmi spolehlivě a není náročná na výpočet. Při správném zvolení vstupních parametrů (šířka a hloubka) si klouzavý průměr poradí i s vyhlazením hodně "exotických" křivek.


Hrubý výkon

Přímka průměrné latence nám popisuje hrubou sílu gpu v měřeném úseku. Jedná se o totožnou veličinu, podle které porovnáváme výkon gpu dnes - průměrná latence (převrácením této hodnoty vznikne ještě běžnější výraz "průměrné fps").


Obrázek 3.

Čím blíže k ose X bude tato přímka umístěna, tím vyšším průměrným výkonem bude gpu disponovat a samozřejmě naopak. Pro naši celkovou analýzu bude tato hodnota použita jako základní složka ukazující hrubou sílu gpu. Samozřejmě, jak už bylo řečeno, hodnota průměrné latence neříká vůbec nic o variabilitě latencí nebo stutteringu.


Variabilita scény

Pokud testujeme gpu v nějakém úseku hry nebo benchmarku je jisté, že v tomto úseku není gpu vytěžováno rovnoměrně. V některé části měřeného úseku může být scéna více komplexní (efekty, hodně objektů a geometrie), kterou gpu musí renderovat s latencemi vyššími. V dalším úseku pak zase může být scéna naprosto triviální a gpu ji může renderovat s latencemi nízkými. Samozřejmě velmi záleží na tom, jak dobře si s těmito zvýšenými nároky scény (efekty) poradí mikroarchitektura konkrétní gpu. V praxi se pak tato variabilita komplexnosti scény projevuje nežádoucí variabilitou snímkové frekvence (frame drop/gain).


Obrázek 4.

V každém případě, tato variabilita latencí daná komplexností scény se nám v grafu projevuje tak, že se křivka latencí obtáčí v různých vzdálenostech kolem svého těžiště (přímky průměrné latence). V určitých úsecích se křivka dostane nad své těžiště (scéna je pro gpu komplexní) a v dalších úsecích zase pod své těžiště (scéna není pro gpu tak náročná). Rozhodujícím faktorem toho, jak dobře gpu zvládá celý měřený úsek je tedy dán velikostí odchylky křivky od svého těžiště. Čím víc se křivka vzdaluje svému těžišti, tím je variabilita snímkové frekvence vyšší a plynulost snímkové frekvence hry v měřeném úseku klesá.

Příklad: Máme dvě gpu, jejichž naměřené průměrné frame rate je stejné 60 fps (průměrná latence 16,7ms). První gpu má v měřeném úseku variabilitu od 30 do 90 fps a druhé gpu pak od 50 do 70 fps. Pokud bychom si mohli vybrat, favoritem pro nás by byl gpu č.2, protože renderuje snímky stabilněji a vyšší plynulost hraní je tak zaručena více, než u gpu č.1.

Pro naší analýzu bude tedy třeba matematicky vyjádřit, jak moc se nám křivka latencí odchyluje od svého těžiště (přímky průměrné latence). K tomuto účelu nám poslouží vzorec pro výpočet směrodatné odchylky.

Vypočtená směrodatná odchylka tedy udává průměrnou odchylku hodnot latencí od jejich aritmetického průměru (průměrné latence). Čím vyšších hodnot odchylka nabývá, tím větší je variabilita snímkové frekvence v celém úseku měření a naopak. Pokud by byla tato odchylka nulová, znamenalo by to, že gpu renderuje snímky s konstantní latencí (frame rate) v celém úseku měření (pro nás ideální stav).

Standardní odchylka jako veličina má ještě jednu poměrně významnou výhodu a tou je její jednotka. Jednotka je totiž totožná s jednotkou dat v souboru, ze kterých je odchylka počítána. V našem případě je tedy jednotkou standardní odchylky opět ms (milisekundy).


Stuttering

Na rozdíl od křivky variability komplexnosti scény, která vykazuje v čase poměrně pozvolnou změnu hodnot latencí, je stuttering charakteristický změnou náhlou a okamžitou. Tento jev způsobuje nepříjemné poruchy vjemu plynulého pohybu ve hře tím, že je pohyb nerovnoměrný a trhavý.


Obrázek 5.

V našem grafu je stuttering okem patrný (modrá). Jedná se odchylky jednotlivých naměřených hodnot latencí od námi vytvořené vyhlazené "středové" křivky pomocí klouzavého průměru (červená).

Výpočet bude opět realizován pomocí směrodatné odchylky. Na rozdíl od výpočtu odchylky u variability scény, kde byla tato odchylka odvozena od přímky průměrné latence, zde budeme odchylku odvozovat od vyhlazené křivky variability scény (červená). Opět zde platí, čím více jsou naměřené hodnoty latencí vzdáleny od vyhlazené křivky variability scény, tím je směrodatná odchylka vyšší a stuttering významnější. Samozřejmě také naopak, pokud by byla vypočtená odchylka nulová znamenalo by to, že gpu renderuje snímky bez jakéhokoliv stutteringu (ideální stav). Protože počítáme směrodatnou odchylku, její jednotkou jsou opět ms (milisekundy).


Výsledné skóre

Analýza křivky je prakticky hotova. Z naměřených hodnot jsme vypočítali průměrnou latenci, pomocí klouzavého průměru vytvořili hladkou křivku variability scény, vypočetli její směrodatnou odchylku a následně od ní odvodili odchylku stutteringu. Zbývá tedy jediné - zhodnotit tyto tři vypočtené hodnoty jako celek. Protože všechny tři vypočtené hodnoty mají totožnou jednotku v ms (milisekundy), výsledné skóre tedy může být prostým součtem těchto hodnot.


Výsledné skóre [ms] = hrubá síla [ms] + variabilita scény [ms] + stuttering [ms]


V praxi to znamená následující:

  • Výsledné skóre (v milisekundách) nemůže být nikdy nižší, než je hodnota průměrné latence!
  • Výsledné skóre může nabývat pouze stejné nebo vyšší hodnoty než průměrná latence (stejná hodnota značí ideální stav).
  • O kolik bude skóre vyšší než průměrná latence záleží na tom, jaká bude odchylka variability scény a odchylka stutteringu. Stručněji řečeno, jak kvalitně bude gpu snímky renderovat (bez propadů a stutteringu).

Protože jednotkou finálního skóre jsou také milisekundy, prostým převrácením této hodnoty dostaneme snímkovou frekvenci, která může být označena jako "porovnatelné fps" (což je pro většinu lidí lépe popisnější).


Porovnatelné frame rate [fps] = 1000 / Výsledné skóre [ms]


Porovnatelné fps je tedy definováno jako vypočtená hodnota snímkové frekvence při které, u daného gpu a v daném úseku měření, nedochází k žádné variabilitě fps ani stutteringu. Jedná se samozřejmě o teoretickou hodnotu, která slouží výhradně ke vzájemné komparaci gpu.

Pro lepší pochopení problému jsem vytvořil malou demonstrační aplikaci, ve které si můžete sami nastavovat vlastnosti křivky (funkce cosinu) a zjišťovat závislost jednotlivých odchylek na zvolených parametrech křivky.

Aplikaci FLAC Demo můžete stahovat zde


Pokud bych chtěl výsledek analýzy k něčemu přirovnat, tak vhodným kandidátem by bylo krasobruslení. Krasobruslař jede svou sestavu v určité obtížnosti (průměrná latence). Díky horšímu technickému provedení (variabilita scény) a chybám v sestavě (stuttering) mu jsou ze známky za obtížnost strženy "trestné" body. Na rozdíl od krasobruslení, kde je strhávání bodů vysoce subjektivní záležitostí, se ale zde jedná o matematiku.

Nezanedbatelnou výhodou vypočteného skóre (nebo porovnatelného fps) je také to, že může být jednoduše použito ke vzájemnému porovnávání gpu bez ohledu na jejich zařazení ve výkonnostních třídách (lowend, mainstream, highend).

Nevýhodou toho způsobu porovnávání výkonu gpu je pak jeho poměrně vysoká náročnost na výpočet. Provádění výpočtu odchylek a generování hladké křivky pomocí klouzavého průměru při velkém počtu dat je v Excelu docela náročným úkolem.



Z tohoto důvody jsem vytvořil poměrně jednoduchou aplikaci s názvem FLA Calculator (frame latency analyzer), která všechny tyto výpočty provede za vás, bez nutnosti tyto výsledky těžkopádně získávat pomocí Excelu.

Podrobné informace o FLA Calculator



Top Grafické karty



   HyperLink Copyright (c) 2016 InfoTrade
Powered by ASP.NET & MS SQL Server