CF hatásfok és Catalyst AI 4870x2-vel

A hagyományos többkártyás rendszerek érzékenyek az alaplapi chipsetre. Mit tud a beépített PCI-E swith? – írta: janos666, 15 éve

Az eredmények feldolgozása


Néhány gondolat az eredmények kiértékeléséről,

és magáról az FPS értékek természetéről.

>>> Aki fél a matematika szótól is, az lapozzon, de meg ne lássam többet Ph-n se. <<<

Volt tehát 2x3=6 lehetséges kombináció, amiből egy irreleváns (CF enabled és AI disabled, itt viszont gyakorlatilag nincs CF, hacsak kézileg be nem állítanám a CF profilt a játékhoz a registry-ben, vagy AFR-t erőltetnék mindenre, de annak semmi értelme, még érdekesség kedvéért sem próbáltam ki, mert ez igen biztos út a vibráló monitorhoz, míg a kékhalál meg nem kegyelmez). Ez az 5 kombináció benchmarktól függően 5 vagy 15 mintát eredményezett. (Volt ahol eleve csak átlagot dobott, volt, ahol minimum, maximum és átlagértéket).

A benchmarkok futtatásával kapunk tehát egy szép kis táblázatot, tele mérési eredményekkel (melyek jellemzően számszerűsített értékek).

Nyilván valamilyen grafikus megjelenítéssel tesszük majd őket szemléletessé, mint például a sávos-, vagy oszlopdiagram. Emellett pedig megállapítunk majd %-os értékeket is az eltérések mértékének pontosabb, és emberek által is könnyebben emészthető bemutatására.

Emellett most megengednék magamnak egy kis szösszenetet arról, mit is csinálunk valójában, mivel a legtöbb hivatalos tesztoldal nem is engedheti meg azt magának, hogy kettőt, hármat is lapozni kelljen az olvasónak, mielőtt grafikonokat lát.

Az átlagérték meghatározása

A benchmarkok vagy tetszőleges sűrűséggel mintavételeznek a teszt során, ezzel kellően magas számú mintát generálva, melyek átlagát véve kaphatunk egy konkrét számértéket, ami egész jól jellemzi a játék futásának átlagos sebességét, vagy egyszerűen megszámolják, hogy a futási idő alatt pontosan hány darab képkockát sikerült renderelni, majd ezt az összeget leosztják az ez alatt eltelt idővel, így képkocka/másodperc (Frame per Secund) értéket szolgáltatnak.
Nyilvánvalóan a második módszer pontosabb teljesítménymérésre, de esetenként a szubjektív játékélmény behatárolására mégis szívesebben használnám a pontszerű minták átlagát. Többször megismételt mérés során a diszkrét módszer jobb eséllyel hagyja figyelmen kívül a hibákat, és nagyobb ráhatással örökíti meg az ember által is észrevehető kilengéseket, mint a folytonos eloszlásúnak tekinthető minta. (Vegyük példának, hogy pár tized másodpercre megakad a kép, ezt mi észrevesszük, és ha elég sűrű a mintavétel, de nem túl sűrű, akkor az átlagértékben is visszaköszön, ha viszont gyakorlatilag már a végtelenhez közelít a minták száma, akkor egy apró csúcsérték már kevésbé köszön vissza a számtani átlagértékben.)

Őszintén szólva, jelen esetben fogalmam sincs, hogy mi mit mért.
A Far Cry 2 rajzolt szép FPS-idő grafikont, tehát biztos, hogy mért pontszerűen is. A Crysis, Warhead és UT3 mérésére külső programot használtam, ami megint csak valószínűbb, hogy pontszerűen mér, de nem biztos (inkább attól függ, mit szeretett volna, és mit tudott kinyerni a benchmark készítője a programból). Ellenpéldaként a 3DMark Vantage például biztos, hogy fix idő alatt fut le, és az ez alatt rederelt képkockák számából ad végeredményt. (De ehhez az elemzésemhez nem is használtam Vantage-t.)

Persze tudjunk arról is, hogy kellően sűrű pontonként mérve már bőven a hibahatáron belüli az eltérés, tehát ha például 4 jegyre adjuk meg az FPS-t, akkor az utolsó jegy biztos, hogy a véletlenszerű hibák szuperpozíciójának folyományaként véletlenszerűen fog ingadozni (és a kétféle mérés is kb ezt a jegyet befolyásolja, a kirívó esetektől eltekintve).
Csak azért jegyzem meg ezeket, mert jó lehet tudni, hogy az FPS érték nem mindig annyi jegyre pontos, ahányra kiírják, illetve ha kétszer lefut ugyanaz a benchmark, sohasem adja ugyanazt az eredményt (csak a 2-3 jegyre kerekített érték azonos). De épp ezért jó dolog a megfelelő számú jegyre történő kerekítés is, hogy elmossa a véletlen hibákat.


Minimum és maximum

Jó kérdés, hogy kezdjünk-e valamit a Min és Max eredményekkel. Ellenőrzésre biztos jó, ha szolgáltatja őket a program, de nem túl meggyőző, hogy jól jellemeznék a játszhatóságot.

- A Maximális FPS érték szinte semmire sem jó, esetleg annak ellenőrzésére, hogy ki volt-e kapcsolva a V-sync, és nincs-e más módon korlátozva a MaxFPS, ami kihathat az átlagokra is.
Nem csak hogy pillanatnyi csúcsérték, de játékélmény szempontjából azért is irreleváns, mert nem érzed meg, ha a tökéletesen simától még simábban fut, és csak az a két gubanc van, hogy a monitor ki sem rajzolja azon képkockákat, amik meghaladják a monitor képfrissítési frekvenciáját (LCD 24/59/60, nagyon elvétve 100/120, CRT 60-120), és amúgy sem érzékelné őket az agyad. (Erről bővebben apró betűben a lap alján.)

- A Minimális értéket sokan tekintik akár még mértékadó eredménynek is. Valahol van benne ráció, hisz ahol a Min FPS felvette az értékét, ott futott legkevésbé simán a játék. Ez így rendben is lenne, csak hát ez is egy pontszerű érték, ráadásul 99%-ban csak abszolút szélsőérték. Ennek folyományaként előfordulhat, hogy valahol 10 FPS-t is rögzített a benchmark, de te észre sem vetted, az átlag FPS 60, a max 120, gyönyörű és sima futtatást tapasztaltál. Ezt csak akkor szabadna mértékadónak tekinteni, ha nagyszámú mintából vett, statisztikai módszerekből származtatott érték lenne. Tehát nem az abszolút minimumot bökné ki nekünk a program, hanem megpróbálnánk kiszűrni a mérési módszer természetéből adódó ismert, és véletlen hibákat is. (Ehhez legalább 3x kéne futtatni ugyanazt a tesztet, végig rögzítve a tetszőlegesen sűrű időközönként vett értékeket, majd ezeket statisztikai úton feldolgozni -> talán érthető, ha ezt egy PC-guru, vagy hardware enthusiast, de még újságíró sem csinálja, én sem álltam most neki, többek közt eszközhiány okán sem. :D).
Arra viszont hasznos lehet ez az érték is, hogy megállapítsuk, vajon az abszolút minimum érték azért következett-e be, mert a CF/SLI "köhögött" egyet, vagy más volt az ok. Ugyanis, ha a 2 GPU ebben a pontban is jó hatásfokkal odatette magát, az arra utal, hogy nem a VGA körül van a gond, mikor csuklik az FPS, hanem a grafikus motor a hibás (bár, ha a CPU nyel egy nagyot ilyenkor, akkor az viheti magával a drivert, és oda a CF-hatásfokunk is, de "valószínűleg"-es dolgok megállapíthatóak, és tulajdonképp sohasem teszünk mást, csak a valószínűség értékei változnak…)

>>>Puszta érdekességképp gyártottam egy-két grafikont egy sajátos kiértékelési módszerrel (nem szép dolog, de mindenki csinál néha hasonlót az életben :D). A Minimum és maximum értékek különbségéből, azaz egyfajta (nem mértékadó adatokból,) lineáris közelítéssel (túlzott elhanyagolás) vett középértéket javítottam meg az átlagértékkel. Ezzel egy valóságban nem létező szituációt hoztam létre, mely egyszerre figyelembe veszi a minimum, maximum és átlag értékeket is. Ez még mindig közelebb áll a valósághoz, mintha csak min, csak max, vagy (max-min)/2+min középértékkel dolgoztam volna, de a reprezentativitása még így is a 0-át súrolja.
Ezek a grafikonok egyrészt azoknak szólnak, akik szerint ilyen típusú benchmarkoknál is fontos érték a min/max, másrészt saját magam szórakoztatását szolgálta. Mivel nagyon szubjektív, és inkább csak játékra jó, így nem is írtam rá pontos %-okat, mint a többire.

Helo. Ismered FPS-t? ->

Végezetül emlékezzünk még meg arról is egy kicsit, hogy még a mértékadó FPS is csak FPS.
- De mi az az FPS?
- Egy szám, ennyi darab képkocka jelenik meg másodpercenként.

Oké, de ha a másodperc első 1/10-edében megjelenik 40, az utolsó 9/10-edében pedig 5, akkor simának tűnt az a 45 FPS? Nem biztos, ha folyamatosan ezt játssza egy gép, tuti hogy nézni sem bírod sokáig (főképp, hogy a 60Hz-es monitor csak 6-ot rajzol ki az első 45-ből…). Szerencsére ha FPS számlálót látunk mocorogni a sarokban, az eleve átlagérték, tehát rugalmasabban kezelhető a dolog. (Nem másodpercenként frissít, hanem folyamatában, és átlagol...). De nem árt azt is figyelembe venni akkor, mikor megállapítjuk, FPS-ek alapján játszható-e a játék, hogy fontos az egyenletes teljesítmény a másodperceken belül is.
Bár ezt az egész jelenséget jól kiszűri az, hogy DirectX-nél és OpenGL-nél is alapértékben 3 képkockát előre betáraz a VGA, mielőtt a monitorra küldi, valamint a V-sync is tompít a dolgokon, ami a monitor frissítéséhez igazítja a képkockák kirajzoltatását. Ennek ellenére népszerű volt régen a 3870x2-k "microstuttering" mizériája. Itt magasan tetőztek a min/max/avg FPS-ek, csak mégis úgy érezte a felhasználó, hogy valami nem stimmel. Nem szaggat, de mégis olyasmi az érzés. Ilyen jellemzően inkább CF és SLI rendszereknél fordulhat elő, főleg ha a mai trendnek megfelelően AFR módot használ a drivert (váltott módban 1-1 FPS-t számolnak a GPU-k).
Tanulság: Ne iktassuk ki a 3 FPS pre-render limitet, és mindig használjunk V-syncet (hacsak nem multiplayer-nél hajtunk bugokra, vagy arra, hogy ne akadjon le a netkód, ha 100-as ticken fut egy szerver, de a kliens csak FPS-el azonos számban frissül, de itt úgyis lesz elég FPS a sima futáshoz...)

Egy másik megközelítés:
- Hogyan jelenítjük meg az FPS-t valós időben?
- Sehogy…

Az FPS alapvetően egy másodpercre vonatkozik. Az a szám, amit a monitor sarkában láthatsz, megmondja, hogy az adott érték megállapítását megelőző másodpercben hány darab képkockát sikerült renderelni. (A teljesség igényéért megjegyezzük, hogy általában 3 képkocka tárolódik le előre, tehát mikorra kirajzolódik a szám a monitor sarkán, már eltelik annyi idő, amennyi ahhoz kellett, hogy 3 képkocka a monitorra kerüljön. A poén pedig ott van, hogy ez az idő is az FPS függvénye, de akkor ezt az új FPS értéket még nem ismerhetjük, nem tudhatjuk mikor volt pont annyi ez az érték, tehát sohasem kerül a monitorra az az igazi FPS érték, amit az emberek a rövidítés mögé képzelnek. -> Ez nem befolyásolja a szoftveres mérés végén kapott átlagértéket, csak a kijelzés pontosságát, amit a monitor sarkán olvasunk le…).

Ha elmélkedünk még róla:
- Hogy mondjuk meg, hány FPS-el futott a játék a 40. másodperc végén?
- Fogjuk a 40. másodperc vége körüli +/-0,5 másodperces intervallumot, megnézzük ott hány képkocka renderelődött le? Vagy pontosabb lenne +/-0,2 másodpercnyi intervallumban? Nézzük meg +/-3-ra?
- Nézzük meg a 40.-től vissza 1 másodpercre? Vagy 2-re, esetleg 0,5-re?
Folyamatos kijelzéskor biztos csak az utolsók valamelyikét tehetjük meg, és az is biztos, hogy a szemlélőnek is az számított a 40. másodpercben, hogy előtte hány képkockát látott, nem az, hogy majd hányat fog, mert azt még nem tudja, mi történik majd a jövőben. Valamint az FPS rövidítés magában hordozza, hogy secundum-ra, tehát másodpercre vonatkoztatott érték. (Átválthatjuk órára, napra, évre, milliomod másodpercre; 1000F/S-re, csak abban a mértékegységben nem annyi jegyre lesz pontos, amennyire ott illene, főleg ha előtte már kerekített volt az érték...)
Akkor miért is jó nekünk, ha kiátlagolunk 1000 másodpercet? Az 1000-redik másodpercben nem az fogja érdekelni a szemlélőt mi történt 980 másodperccel ezelőtt.
Ha így nézzük, nincs is átlagos FPS, az nem „képkocka/másodperc” érték, hanem „képkockák átlagos száma 1 másodperce vetítve”, illetve 2, 3, stb másodpercre vetítve. Persze minden szaktudomány él ezzel a nyelvi egyszerűsítéssel, ez csak megfogalmazás, pusztán azért boncolgatom, hogy gondolj bele, mik is azok az értékek, amiket a grafikonokon, vagy táblázatokban láthatsz, mi az az FPS…

Remélem ezt kellőképp meguntuk, mivel nincs kedvem arról is írni 1 oldalt, hogy mindezek ellenére miért is létezik mértékadó FPS érték, és miért reprezentálja ez így is kellő pontossággal a szemlélő vizuális élményét. (De gondolom hihető, hogy így van, mert egyébként nem használnák ezt a számot tesztekhez, és konklúziók levonásához, ha nem így lenne. -> Mondjuk nem is sok mást lehet elképzelni helyette, ami nem ennek egy altípusa lenne...)

Útmutató a grafikonok értelmezéséhez

- A grafikonokon a két sáv közé írt % értelem szerint a két sáv által reprezentált számérték közti, %-ban kifejezett eltérés (ennyit gyorsított, vagy lassított, mikor Standard-ről Advanced-re állítottam át a Catalyst AI csúszkáját).

- A grafikonok jobb-felső sarkaiba írt 2 százalékérték a bal-felső sarokban szereplő rövidített magyarázatnak megfelelően, a Crossfire hatásfoka (ennyivel gyorsabb két GPU, mint egy). Az Std-Std és Adv-Adv rövidítések azt jelentik, hogy az összehasonlításnál egy GPU és két GPU esetén is, azonosan vagy Standardon, vagy Advanceden állt a Catalyst AI.

- Az utolsó két grafikonnál a görbék n-1 fokszámú polinomok (pálcikák száma mínusz egy), csak úgy a vicc kedvéért, hogy saccra mennyire simulnak rá a kapott eredmények sávos diagramjára.

*****

A CRT-nél azért kell mégis legalább 75, inkább 100 Hz, hogy ne lásd a villogást, mert az felülről lefelé, sorokon belül oszloposan egymás után frissül, és így is egésznek kell látnod a képet, hogy a sorok csak felvillannak, majd ki is hunynak. Minden képpont csak felvillan, aztán a mellette lévő is felvillan, de az előző kezd kialudni (a képernyő fluoreszkáló anyaggal van bevonva, ami kivillan, ha elektron csapódik be rá, de nem marad úgy -> az elektron pedig egy pontból jön, és utólag térítik el mágneses mezővel, tehát egyszerre csak 1 képpont gerjeszthető, ehhez az eltérítéshez kell a sok hely, ezért nem lapos...)
Ez viszont csak a villogtatásra vonatkozik, 60 és 120 Hz-es CRT-n is tökéletesen ugyan úgy folyamatosnak látod a 24FPS-el pergő filmeket, csak 120-nál nem látod, ahogy végigvonul a sugár a képernyőn, mikor villantja a képpontot. (Illetve azt már gondolom mindenki tudja, hogy attól színesek a képpontok, hogy piros, zöld és kék pontok vannak egymás mellett, és a 3-at megfelelő mértékben lövik meg -> ezért működik a feketefehér TV színes adással, mert a 3 szín jele meglövi ugyanazt a fekete pnotot, és kész...)

LCD-knél az az előny, hogy a kristály, amit egyszer beerőszakoltak a megfelelő pozíciójába, az már ott is marad, amíg újra át nem kell állítani (tehát míg el nem kezdődik a következő képkocka kirajzolása...). Így villogást vagy soronkénti sugaras frissítést sohasem fogsz látni. (Gondolom kitaláltad, vagy eddig is tudtad, hogy a kristály állásától függő mértékben jut át a panel háta mögül eredő fény, és itt is a 3 alapszínből keverik ki a színeket, 3 egymáshoz közeli kristállyal.) Sőt, itt újabban jellemző lehet még a 24Hz-es mód is, ami tökéletesen passzol a 24 FPS-el pergő Blu-ray filmek lejátszásához. Így nem gond, hogy fér el 60 frissítésben 24 képkocka, úgy hogy lehetőleg mind a 24 közel azonos ideig legyen kint, ami lehetetlen is, így némelyik tovább van kint, másik kevesebbet. Ugye 60x cserélhetünk képet a monitoron, de vagy 24x, vagy ennek egész számú többszörösével megegyező időben kapunk új képkockát, ami rajzolható lenne.

És itt jön a lényeg, amiről az apró betű szól. Nem csak 24, de 23,967, 25, és elvétve még egyéb sebességgel futó filmek is előfordulnak. Ezek elosztásának problémája okozhat filmlejátszáskor akadozó képet (gyors kameramozgatáskor szokott néha ugrálni a kép...), nem pedig ez a 24 FPS a kevés. Ha megfelelően szétosztjuk a 24 képkockánkat az adott másodpercre (pl mind 1/24-es másodpercig látható), akkor ez már elég a folyamatosság érzetéhez. (A telecineről ne is beszéljünk, ott képesek voltak megfelezni az FPS-eket is így, hogy 24-el fut ugyan a kép, de minden képkocka csak a kép felét rajzolja ki, hely/sévszél takarékossági okokból, így az élmény közelebb esik a 12 FPS-éhez. Ha nem szoftveresen rakják előre össze, hanem a monitornak kell villogtatnia csíkokat, akkor végképp feltűnik az embernek is, hogy valahogy "nem az igazi".)

Miért nem elég akkor 25 FPS a játékhoz? 2 okból:
- A játék alatt sem folyamatosan oszlanak szét a képkockák az egyes másodperceken belül (mikor épp hogy sikerül elkészülni egye-egyel a VGA-nak, ami az adott képkockán látható jelenet függvénye, mozgóképnél mindig más és más...), a V-syn is csak 3 képkockányi késleltetést engedélyez annak érdekében, hogy lehetőleg folyamatossá tegye az elosztást (pro-gamerek néha már ezt is észreveszik alacsony inputlagos egérrel és monitorral).
- A filmeket kémiai úton rögzítik filmszalagokra, amik nem egy végtelenül kicsiny hosszúságú, hanem emberi ésszel is felfogható tartományú exponálási időn keresztül készülnek (sőt, ez a tekercsek digitalizálásánál is igaz, mert a digitális képalkotásban is van exponálási idő, bár jól összehangolható a tekercs mozgásával). Tehát egy képkockán nem csak egy merev kép van a mozgásból, hanem egy rövid, pl 1/00-ad másodperc alatt történt mozgás folyamatának szellemképe is rögzül halványan a mozgó objektumok körvonalai mentén. Ez sokat segít az agynak folyamatosnak érzékelni a 24 képkockából kirakott mozgást is. Ez a blurr-effekt az, amit játékokban is próbálnak utánozni, kár hogy teljesítményigényes, így csökkenti az FPS-t, amit élvezhetőbbé akar tenni...

Szóval, mit akart a költő mondani az apró betűben? Játékban 30 FPS nem ugyanaz, mint filmeknél, mivel itt rosszabbul oszlik szét az a 30 képkocka a másodperceken belül, és nincsenek másodlagos segédinformációk a mozgás folyamatában történő érzékeléséhez...

A cikk még nem ért véget, kérlek, lapozz!

Előzmények