14. 10. 2014

GPU - hodina tanca


Prenesme známu, tanečnú scénu z Final Fantasy 8 /CG animačka, ples pri ukončení štúdia na vojenskej akadémii pre teplošov/ do modernej hry a bežiac v reálnom čase. PS2 tam hravo natrieska stovky panduľákov, aj nejaký ten lesklý mramor, na luxusnú, fyzikálne korektnú animáciu šiat alias cloth physics kontrolujúcu si kolízie s okolím, je však prikrátka. Videli sme už všemožné neherné hlavne PC hi-tech ukážky, v hre to ale skončilo maximálne na jednom vlajúcom plášti batmana. Chceme niečo viac /a ešte viac, cloth fyzika to nie sú len šaty či pulóvre ale aj koberce, záclony, posteľné prádlo, vlajky, igelitové vrecia na mrtvoly, proste kopa zábavnej interakcie s herným svetom/.

Havoc cloth demo - 25 tanečníc na 60 fps, povedzme rovných 50 na 30 fps /aj keď takto lineárne to v praxi nefunguje/ na štandardnom PC z roku 2009, asi nejaké intel server monštrum. Ak by ste chceli vedieť, ako by si s tým poradila 7. či 8. generácia konzol, tak pri vyhradení 5 ms z CPU času /30fps hra potrebuje na jeden frame 33ms, táto naša simulácia si teda pre seba rezervuje asi 15% z tohto budgetu/ by podľa najnovšej prezentácie od Ubicrap - xcrap 360 utiahol 34 tanečníc, PS3 skvelých 105 /CELL power !!/, PS4 - 98 a konečne Xbone 113. Žiadne ďalšie špecifikácie - geometria, rozlíšenie, framerate. Prvým záverom teda je, že PS3 CPU je v tomto type výpočtov monštruózne výkonne a plne na úrovni oboch CPU v PS4/XO, kde ide malá, medzidruhová odchýlka hlavne na vrub rozdielnej pracovnej frekvencie. Druhým je to, že na PS3ke skutočne mohli vzniknuť hry, ktoré by technicky xcrap 360 "nikdy nedal", bez ohľadu "na rozlíšenie".

Staré dobré CPU však už dnes nie je tým najvýkonnejším čipom na matičnej doske. Rozdiel vo výkone medzi PS4 a XO je v skutočnosti väčší ako hocikedy v hernej histórií  /amiga versus atari ST, PSone versus N64, PS2 versus Gamecube a podobne/. Nielen Ubicrap si povedal, že už keď tu máme tie next gen GPU s GPGPU vlastnosťami /jednoducho povedané - schopnosť behu CPU kódu na grafickej karte/, tak to vyskúšajme, ako sa to dá aplikačne-herne využiť. Po prebehnutí základného výzkumu /komplikované testovanie dátových formátov, rôznych API - NV CUDA, OpenCL, optimalizácie kódu, GPU skutočne nepracuje ako CPU/ padľa voľba na DX štandard Direct Compute v AMD GCN variante. Výsledný algoritmus mal 3100 riadkov, 69KB, veľmi precízne a prácne ladený /hlavne čo, kde a ako bude uložené, tok bajtov/. PS4 v tomto smere neprekvapujúco boduje, lebo umožnuje nižší low level prístup ku hardvéru /síce o dosť náročnejšie pre programátora, ale s razantným nárastom výkonom/. Finálny výsledok vás asi dostane do kolien.


Pri stále rovnakých podmienkach /5ms ale v tomto prípade GPU času/ zvláda PS4 - 1600 a XO - 830 tanečníc /prakticky o 100% silnejšia PS4 !!/ alebo ak sa máme vrátiť na úplný začiatok, tak PS4 určite zvláda teoreticky 640 tanečnic/320 párov na 30-60 fps ? /2ms z GPU času a bohatá rezerva pre zvyšok hry/, čo nám bohate stačí na báječnú scénu s bálom z FF8 vo francúzskych Versailles. To by nás však nemohol brzdiť slabučký Xbone. Ten dramatický rozdiel je spôsobený týmito premennými - PS4 má viac SIMD ALUs /+50%/, má ďaleko výkonnejší ACE engine, ktorý ich obsluhuje /+400%/ a lepšie zorganizované zbernice a pamäťový systém /PS4 ram je rovnako rýchla v celom svojom objeme, pri XO iba v 32 megovej eSRAM/. Už som to tu mnohokrát avizoval, že až dôjde na lámanie chleba, teda moderný presun kódu na Direct Compute /GPGPU/ nebude mať XO pri PS4ke sebemenšiu šancu. Akýkoľvek pokus MS o paritu v natívnych next gen hrách, žiadne cross gen blato, je teda jasným poškodením PS4 hráčov. Zvykajte si. MS totiž platí Ubicrapu časť reklamnej kampane pre Assassin Greed: Parity.


Mark Cerny navrhol PS4 primárne ako Direct Compute konzolu vyladenú na simultánny beh grafiky a non-grafiky na PS4 GPU /PS4 CPU tiež nie je žiadna padavka, ako sa vám niekto snaží nahovoriť, utiahne ak treba aj desiatky paralelných JOBs na 8 jadrách, herný kód a OS/.  Ide o oblasť, v ktorej sú nováčikmi vlastne všetci. Menej tí, čo majú skúsenosti s heterogénnym spracovaním výpočtov na PS3ke /CELL-SPE/. Pole neorané. Nekonečné možnosti a vôbec to nebude prvé roky jednoduché. Ide vlastne o poctivé, ručné - oldschool  riešenie problémov ako v dávnych časoch softvérového renderingu. Nemôžeme ísť večne pri honbe za zvyšovaním výkonu iba cestou čiste mechanického pridávania ďalších a ďalších tranzistorov a rastu spotreby ďaleko za 100-200-300 watt per čip. Čas pre modifikovaný Moorov zákon: každých 18 mesiacov sa zlepší efektivita behu kódu o 100%.