Játék több GPU-val, 1. rész - HD3870X2
Elemzés - 2009/04/24
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!