Játék több GPU-val, 1. rész - HD3870X2

Elemzés - 2009/04/24

Oldalak: << - < - 1 - 2 - 3 - 4 - 5 - > - >>
Bevezető
Sok éve már, hogy a VGA-k teljesítményének csúcsát a két (később több) GPU-s megoldások képviselik - 2008. januárjában viszont ez a téma a korábbinál sokkal komolyabb hangsúlyt kapott azzal, hogy az AMD megjelentette a HD3870X2-t, amelyet a HD3000-es vonal egyetlen csúcskártyájának szánt. Bár az nVidia még húzódozik attól a koncepciótól, miszerint az ideális chip a középkategóriára, vagy maximum a felső-középkategóriára céloz, és a magasabb "szférákban" kettő (később várhatóan több) GPU-val szerelt kártyák indulnak harcba, a HD4000-es és a GTX200-as sorozat versengése elég világosan mutatja, hogy a teljesítmény növelésében a hatalmas chipek kezdenek kevéssé hatékonnyá válni - az egy tranzisztorra jutó teljesítmény a GT200-asokkal csökkenésnek indult, és végső soron ez a mutató (valamint ennek a mutatónak az árazásra gyakorolt hatása) vezetett a HD4000-es széria komoly térnyeréséhez.
Érdemes tehát lassan megbarátkozni a gondolattal, hogy a csúcskategória jövőjét közép- és hosszútávon a több GPU-s megoldások jelentik. Tekintettel arra, hogy az Internet hemzseg a skálázódási problémákról szóló panaszoktól, ez az irány nem feltétlen megnyugtató - és az sem igazán növeli a komfortérzetünket, hogy lényegében tetszőleges két CrossFire / SLI tesztet kiválasztva, az eredmények és a belőlük leszűrhető konklúziók biztosan eltérnek, sokszor drámai mértékben. Ezért aztán mi is megnéztük közelebbről ezt a szituációt - beszereztünk egy X2-est, és nekiestünk a tesztcsomagnak.
Szándékosan nem írtuk fentebb, hogy milyen X2-esről van szó. Értelemszerűen a modernitás jegyében egy HD4870X2-vel kezdtük a vizsgálódást - a kártya pedig meg is hálálta a "bizalmat", és váratlanul gyorsan választ adott azon kérdésünkre, hogy vajon miért ennyire eltérőek az egyes CF / SLI tesztek eredményei. Kicsit konkrétabban, a kártya úgy kifektette az erős CPU-val és a közepes alaplappal + RAM-mal felszerelt tesztgépünket, hogy öröm volt nézni - innentől kezdve nem tudunk szabadulni a gyanútól, hogy számos esetben a CF vagy az SLI skálázódásról levont következtetések nagyjából csak a tesztelő gépére érvényesek, általánosabb konklúziót nemigen lehet belőlül levonni. A megoldás:
A fenti, kb. 2kg súlyú megoldáshoz vezető út nem volt teljesen zökkenőmentes - HD3870X2-t manapság már csak rendelésre kapni, készleten nem tart egy bolt sem. Szerencsére az egyik, HD3870-essel foglalkozó tesztünk az X2 tulajdonosok fantáziáját is megmozgatta, és Zk kollága a proHardver! fórumokon felajánlotta saját kártyáját egy tesztelés erejéig - ezúton is szeretnénk neki megköszönni a segítséget!
Egy kis elmélet - röviden a több GPU-s megoldásokról
A következő oldalakon látható teszteredmények és a hozzájuk fűzött magyarázatok mélyebb elméleti ismeretek nélkül is értelmezhetőek és felhasználhatóak, de akik szeretnének egy kicsit a számok mögé látni, azok számára készítettünk egy rövid összefoglalót arról, hogy milyen módszerekkel lehet a kettő (ill. több) GPU-t közös munkára bírni.
Az első dolog, amit érdemes megjegyezni, az az, hogy jelenleg egyetlen algoritmust alkalmaz minden multi-GPU megoldás, még az X2 / GX2 kártyák is - ez az AFR (alternate frame rendering). Arról azonban szó sincs, hogy az AFR a GeForce 6000-es széria óta egyeduralkodó lenne, elfogyasztott ugyanis időközben egy-két "versenytársat". Íme a három gyakorlatban is alkalmazott módszer rövid ismertetése:
  • AFR (alternate frame rendering): ahogy a neve is mutatja, az AFR metódus minden képkockát másik GPU-nak oszt ki. Nagy előnye, hogy egyszerű, kevés extra munkával jár, ill. hogy könnyű vele közelíteni a két GPU 100%-os kihasználtságát, hátránya viszont, hogy minden GPU hozzáadása növeli a képkocka "késleltetését" (azaz a képkocka elemeinek kiszámítása és a képkocka megjelenése között eltelt időt) - ezért 2-3 GPU felett már elég kérdéses a használata, két GPU-ra viszont közel ideális. Bár az AFR a következő két megoldás komplexitási problémáival nem szembesül, két dolog nagyon csúnyán meg bírja akasztani:
    • Egyes (főleg régebbi) motorok esetén előfordulhat, hogy a motor úgy szinkronizálja a képkocka kiszámítását és a megjelenítését, hogy az várakozást jelent két kocka kalkulációja között - ilyenkor a második GPU nem tud időben elkezdeni dolgozni a saját képkockáján, és szélsőséges esetben a két GPU-s megoldás nem lesz gyorsabb, mintha egy GPU-val dolgoznánk.
    • Paradox módon a régi motorok mellett a nagyon modernek jelentenek gondot - ha a motor nem minden képkockát a nulláról kalkulál, hanem az n-edik kockában kiszámolt adatokat az n+1-edikben is felhasználja, akkor ezeket az adatokat több GPU esetén vagy szinkronizálni kell, vagy a motor szándékai ellenére minden egyes alkalommal újra kell őket számolni. Ez a probléma biztosan nem fogja nullára lerontani a skálázódást, de jelenthet igen komoly limitációt - ezzel a problémával a tesztben is találkozni fogunk.
  • SFR (split-frame rendering): az SFR megoldásban a GPU-k ugyanazon a frame-en dolgoznak, a felosztás pedig úgy történik, hogy a képkockát vízszintesen több részre osztja az ütemező (pl. két 1280x512-es darabra), és midnegyik GPU 1-1 részért felel. Bár ez a megoldás kiküszöböli az AFR késleltetését, hátránya, hogy a mindkét képrészen szereplő objektumokkal mindkét GPU-nak foglalkozni kell (ami csökkenti a skálázódást), ill. ha a két képrész komplexitása nagyon eltérő, akkor az egyik GPU a lábát lógatja, amíg a másiknak kilóg a nyelve. Ez utóbbi probléma csökkentésére a GPU-k igyekeznek "megjósolni", hol érdemes kettévágni a képkockát - ez pedig persze további extra logikát és rossz esetben késleltetést jelent.
  • Supertiling: technikailag a legígéretesebb megoldás az egyedül a Radeon kártyák által ismert Supertiling - ez lényegében az SFR koncepció továbbvitele, a képkockát számos négyzetre bontja, és az egyes négyzeteket osztja ki a GPU-k között. Koncepcionálisan nagyon szép a megoldás, a skálázhatósága a megfelelő tile-méret belövése esetén elméletileg közelítené az AFR-ét - a gondot a több tile-ban is szereplő objektumok jelentik, ennél a módszernél lényegében a teljes geometriát ki kell számolni mindegyik GPU-n.
Mindkét gyártó kísérletezett egy darabig mindenféle intelligens megoldásokkal, amelyek kiválasztották a három (ill. a GeForce-ok esetén kettő) módszerből az ideálisat, de aztán feladták a küzdelmet - manapság kizárólag az AFR-t használja mindenki. Mivel az AFR két GPU esetén még nagyon hatékony tud lenni, ebben meg is lehetne nyugodnunk - látszik azonban már a horizonton a DirectX 11, ahol elvi síkon lényegesen megnőhet a képkockák között megőrzött adatok mennyisége, ami miatt muszáj lesz rövid időn belül újragondolni a több GPU együttműködését. Egyelőre azonban AFR rulez - lássuk, mennyire!
Tesztkörnyezet
A konfiguráció elemei
Alaplap Gigabyte X38-DS4, FSB @400MHz
CPU és órajel Intel Q9550 @Q9770 (3.2GHz, 8x400)
CPU hűtés Cooler Master HyperTX2
Memória 4x1GB Geil Ultra DDR2-8500
Memória beállítások 1000MHz (2.5x400), 5-7-7-19, tRD: 9
Tápegység Corsair TX650
Operációs rendszer Windows Vista x86 Ultimate SP1
VGA neve Core clock Shader clock Memory clock Driver
Radeon HD3870 770 MHz 1125 MHz (x2) Catalyst 9.3 WHQL
Radeon HD3870X2 825 MHz 900 MHz (x2) Catalyst 9.3 WHQL
Radeon HD4870 750 MHz 900 MHz (x4) Catalyst 9.3 WHQL
A VGASpeed.hu tesztkörnyezetének részletes ismertetője itt található meg.
A 3870 és a 3870X2 mellett bevettük a tesztbe a 4870-et is - az RV770 chip egységeinek kapacitása meglehetősen közel áll a két RV670 kombinált kapacitásaihoz, és így egyfelől a 4870 eredményei segítenek felderíteni a CrossFire skálázódási panaszait, másfelől a teszt végeredménye segíthet a "melyiket vegyem?" kérdésben is, mert jelenleg a 3870X2-es kártyák is igen versenyképes áron kaphatók.
Az alábbi táblázat összefoglalja a fentebb emlegetett kapacitásokat:
VGA neve HD3870 HD3870X2 HD4870
Core órajel 770 MHz 825 MHz 750 MHz
Memória-órajel 1125 MHz (x2) 900 MHz (x2) 900 MHz (x4)
Memória mennyisége 512 MB 2x512 MB 512 MB
ALU-k (SP-k) 320 640 800
Textúrázó egységek 16 32 40
Interpolátor egységek 32 64 32
ROP egységek 16 32 16
Memóriabusz 256-bit 2x256-bit 256-bit
Memória típusa gDDR4 gDDR3 gDDR5
Triangle setup 770 Mtri / sec 1650 Mtri / sec 750 Mtri / sec
Számítási teljesítmény 493 GFlops 1056 GFlops 1200 GFlops
32-bit texel fillrate 12.3 GTex / sec 26.4 GTex / sec 30.0 GTex / sec
32-bit pixel fillrate, 0xAA 12.3 GPix / sec 26.4 GPix / sec 12.0 GPix / sec
32-bit pixel fillrate, 4xAA 6.2 GPix / sec 13.2 GPix / sec 12.0 GPix / sec
Z-only fillrate, 0xAA 24.7 GPix / sec 52.8 GPix / sec 48.0 GPix / sec
Z-only fillrate, 4xAA 12.3 GPix / sec 26.4 GPix / sec 24.0 GPix / sec
Memória-sávszélesség 72.0 GB / sec 2x57.6 GB / sec 115.2 GB / sec
Látható, hogy helyenként a HD4870, helyenként a HD3870X2 van jobban eleresztve:
  • Az ALU-k és a textúrázók darabra többen vannak az RV770-ben, ezt a hátrányt némileg kompenzálja az X2-es magasabb órajele
  • Bár az 3870X2-esben duplaannyi ROP egység van, a ROP-onkénti kapacitások a 4870-es esetében majdnem mindenhol duplák, ezért többnyire a két GPU-s kártya csak a 10%-kal magasabb órajel előnyével rendelkezik - ez alól kivétel a pixel fillrate AA nélküli esetben, amelyik játék erre érzékeny, ott az X2-nek van lehetősége nyerni az újabb gyártású versenyző ellen
  • Nagy különbség még, hogy az RV670 és az RV770 chipben ugyanannyi interpolátor van - az interpolátor-érzékeny játékok a másik olyan terep, ahol a 3870X2 előnyben lehet.
A tesztben résztvevő játékok
DirectX 9
Race Driver: GRID v1.2
Mirror's Edge 1.02
Oblivion v1.2.046
Rainbow Six: Vegas v1.06
DirectX 10
Bioshock v1.1
Call of Juarez benchmark v1.3.0.1
Crysis v1.21
Unigine Tropics demo v1.1
DirectX 10.1
Assassin's Creed v1.0
Far Cry 2 v1.02
S.T.A.L.K.E.R. Clear Sky benchmark (xrEngine v1.5.0.7)
Stormrise v1.0
A játékokról, ill. a VGASpeed.hu tesztmódszereiről részletes ismertető a bal oldali menü Tesztmódszer és játékok pontjában érhető el.
Nézzük akkor, mire képes a CrossFire!
Oldalak: << - < - 1 - 2 - 3 - 4 - 5 - > - >>