Showing posts with label NVIDIA. Show all posts
Showing posts with label NVIDIA. Show all posts

03/03/21

AI: cogito ergo sum

Tensor Cores je stále ešte relatívne nová časť hardvéru Nvidia grafických kariet pri architektúre Volta/Turing, ktorá značným spôsobom akceleruje výpočetné, maticové operácie triedy fp16, fp32,int4, int8. Deep Learning /DL/ je jedna z funkcií, pri ktorej ich využijete. DL ako "umelá inteligencia" okrem iného imituje spôsob práce ľudského mozgu. Neuróny, neurálna sieť, "deep neural network". V hrách to už asi poznáte pod implementáciou - DLSS /Deep Learning Super Sampling/, keď sa program prehnaný cez tensor jednotky snaží kombináciou dát z viacerých existujúcich frejmov obrazu a vlastnej inteligencie vyrobiť "nové" pixely. DLSS teda doručí 4K rozlíšenie z niečoho nižšieho, tak aby bežné ľudské oko nič alebo takmer nič nespozorovalo. A zachová lepší framerate. Natívny 4K/60 grafický režim dnes totiž zabije bez milosti každú HW konfiguráciu. Čaká sa na reakciu AMD, ktoré podobne ako pri HW podpore raytracingu, mešká aj v tomto bode. Nvidia zatiaľ vylepšuje kód tak, aby napríklad to DLSS nebolo nutné trénovať pre každú hru zvlášť, ale aby poskytovalo kvalitné a vyrovnané výsledky autonómne, na autopilota.

DLSS je schopné vytvoriť 4K obraz v lepšej kvalite ako je natívne 4K rozlíšenie !!  Toto bombastické tvrdenie nie je moje vlastné, tak prostoduchý a Nvidia pozitívny ja nie som. Ako však podobné trúfalé prehlásenie vzniklo. Natívny, surový 4K obraz bez akejkoľvek úpravy /antialiasing, postefekty/ je plný obrazových porúch a vysokofrekvenčných interferencií. Dôjde k tomu tak vtedy, keď sa veľa vyprodukovaných texelov snažíte dostať na relatívne malý počet fyzických pixelov obrazovky. Ak sa vám aj podarí vyhladiť hrany a textúry, tak vám to napríklad shader specular aliasing zas celé pokašle. Je to ako nová textúra aplikovaná už na tú, ktorú ste namáhovo "vyriešili". DLSS súperí v kvalite a výkone s inými postupmi, ako je najčastejšie používané TAA a "softvérový" upscale s využitím registrov hardvéroveho MSAA. V praxi však zistíte, že hento je lepšie v pohybe, tamto pri statickom obrazu, tu zas je problém s transparenciami a tam s "ghost" artefaktami /chyba, keď na obraze visia dáta z ineho frejmu/. A všetci riešia ako ziskať informácie o subpixeloch, lebo tie sú obzvlášť potrebné pre maximálnu stabilitu obrazu. DLSS 2.0 funguje zároveň aj ako dobrá forma antialiasingu /dokonca "ostrenia" textúr/ a preto môže byť jej výsledok po rekonštrukcii lepší ako natívne 4K bez AA.

Ak už teda obetujeme kus silikónu pre tensor jednotky, čo s nimi ďalej /okrem obligátnej hernej AI/. Mám niečo veľmi zaujímavé, čo jedným šupom vyrieší celý náš problém s hernou geometriou, pošle klasické polygóny do hajan, dramaticky zlepší interakciu s objektami, o niekoľko rádov zníži nároky na VRAM a definitívne odstráni hnusné doskakovanie pri zmene kvality /LOD - level of detail/ všetkých predmetov v hre. NSDF-SOT-CLOD. Takú peknú skratku som tomu dal. Ide sa vysvetľovať. Základom je SDF /signed distance field/, ktorá kompletne nahrádza klasické polygóny. Tento typ renderingu používa Dreams /PS4, PS5/. Hlavnou devízu SDF si všimne hneď každý laik - engine umožňuje manipuláciu s objektami prakticky bez obmedzenia, voľná deformácia.

Definovanie SDF objektu si predstavte následovne. Postavte sa pár metrov od auta a od svojej pozície ťahajte špagát ku kľúčovým bodom toho auta. Auto je teda definované ako tvar, ktorý vytyčujú v sústave súradníc tie špagátiky /vektor, smer, dĺžka/. Zmena tvaru = zmena parametrov špagáta. Jednoduché. Ľahko odskočim, lebo úžasným vedľajším produktom tejto techniky je aj to, že vlastne zároveň robíte primárny raytracing, tiene ambientnej oklúzie máte "zadarmo". Naspäť ku autu. Čím viac bodov ťaháte, tým lepšie rozlíšenie dostanete. A sme doma. Necháme neurálnu sieť interpolovať/rekonštruovať tie SDF /NeuralSDF/ body medzi sebou použitím implicitných plôch a uvidíme čo sa stane. Stane sa to, že v pár kilobajtoch dát získavate model s takmer nekonečnou detailnosťou a kontinuálnou tvorbou LOD /ContinuousLOD/ subverzii modelu. Aby tých dát pre výpočty v neurálnej sieti nebolo naraz príliš veľa, tak sa použije 3D verzia dobre známeho "2D tile based" delenia priestoru s názvom "sparse octree traversal" - SOT. 

SONY a MS podopiera PC, čo ťahá celý vývoj AI na svojich vetchých nôžkach

Tensor jednotky v budúcnosti teda použijeme na nový typ plne interaktívnej, parametrickej 3D geometrie. Na rekonštrukciu 2D obrazu do želaného rozlíšenie. Na hernú AI, animáciu a fyziku. Grafická karta - GPU prejde v ďalších rokoch obrovskými zmenami a uvidíme ako sa tomu prispôsobí CPU, aby nedošlo ku zbytočnej redundancii, duplicite výpočetných kapacít. V nasledujúcich rokov, teda pôjde PC vývoj rýchlo týmto smerom a behom dvoch generácií konzol /PS5, PS6/ by sme sa mali dostať ku ustálenej verzii niečoho, čo si dnes určite neviete predstaviť, ale bude to definitívne level Matrix a budú v tom už aj vládne investície a dostane sa to do ústavy. Taká zmena nás čaká. Moje otrepané brepty, že to bude stáť viac peňazí ako čierny obchod s drogami už nebudem opakovať. Prachy, nové pracovné priležitosti, nové závislosti, úplne nová dynamika v ekonomike, spoločnosti, kultúre. To hlavne pre tých, čo zažili rustikálne časy bez internetu, mobilov, telku s dvoma kanálmi, benzínové motory s karburátormi bez katalyzátoru.

12/12/19

SONY Graphics Synthesizer versus NVIDIA GeForce 256


"Rozpracovali sme herný koncept, pracovný názov Mariňáci, a povedali sme si, že skočíme za SONY. Proste vkladáme svoju dôveru do PlayStation platformy. V tých časoch až tak veľa first person strieľačok na konzolách nebolo a akurát bola ohlásené PS2ka. Nakódovali sme herné tech demo a to demo bolo doslova nadžgané grafickými finesami až cez okraj, takže to na prvých vzorkách Nvidia Geforce 256 bežalo ledva na 5 fps /!/. Viete - SONY sľubovalo pri PS2ke nevídané veci a malo ísť o najrýchlejší herný stroj na svete, jej skutočný výkon sme však ešte vtedy nepoznali."
 - Michiel van der Leeuw /Guerrilla Games/.

Nvidia Geforce 256 s rýchlejšou mem variantom typu DDR /v predaji od februára 2000, teda podobne ako PS2 v japonsku/ za cca 300 dolárov bola svojho času špičkové a veľmi drahé GPU. Po prvýkrát sa aj v segmente spotrebiteľských PC grafík použila HW T@L akcelerácia /transformácia, nasvietenie, triangle setup a rasterizácia bežiace pekne na GPU s minimálnou asistenciou CPU/. Arcade kabinety od SEGA alebo aj staršia Playstation 1 to už používali vo veľkom a dlhé roky. Ak vás zaujíma ten HW T@L výkon na GPU v praxi, tak Pentium III na 450Mhz bolo v týchto operáciach trošku pomalšia, 550ka tak o prsiach pozadu a 600-700ka už to vedela urobiť rýchlejšie a GeForce 256 by teda bola v režime "decelerátora".

V Quake 3 alebo v Unreal Tournament v 640x480 /toto rozlíšenie má skrytý zmysel, lebo na PS2ke na CRT telke sa vyššie aj tak nedostanete/ na ďalšej drahote a to CPU Pentium III na 700Mhz je výkon 256 SDR /pomalšia RAM/ identický so "zastaralou" Voodoo 3500 - iba akcelerácia rasterizácie ale výborne vyladené GLIDE ovládače. Ak použijeme slabšie CPU ako je Celeron 366 tak už 256 SDR od Voodoo trochu odskočí o nejakých 20%. Naozaj veľa záviselo od kvality ovládačov a kvality podpory HW T@L v hre. UT to malo implementované na bačkoru, odignorované. Jednoduché veci ako UT vedela pekne hrateľne utiahnúť 256ka aj v 1600x1200 rozlíšení. V Call of Duty s viac stromčekami a podobne však bolo problémom aj 30fps v 800x600. Predbehnem udalosti - ešte tam proste nebolo dosť gruntu, teda priepustnosť, fillrate pre skutočnú vizuálnu hostinu.


demo špeciálne ušité pre HW T@L GeForce 256, 640x480/16bit na 55-60fps, 
až 100 000 polygónov na frame, 6 megapoly/s, herne by išli čisla určite na polovicu.

NVIDIA GeForce 256 s 32 mega DDR teda ponúka priepustnostť 4.8giga/sec na 128 bit buse do VRAM /dual data rate 2x150Mhz/, GPU beží na 120Mhz a má 4 pixel pipeline /ROP rasterizácia/ a 4xTMU /textúrovanie/ s teoretickým fillrate 480 Mpixel/s /4 ROP x 120Mhz/, teoretický polyrate cca 15 megapoly/s. Na pomalšiu 256 SDR sa už ďalej vykašleme, jej priepustnosť do VRAM je cca 2.7giga/sec, čo je veľká slabina, aj keď najskôr išlo práve o tu grafiku, ktorú GG použili.

Porovnať inak túto PC architektúru s PS2 je absolútne nezmyselné, ide o tak dramaticky rozdielne paradigmy, prístup k riešeniu problému, že aj kapusta a ananásom toho majú viac spoločného. Vskutku ale môžte ľahko ušiť scénu na PS2ke, kde sa GeForce 256 bude plaziť na 5fps. PS2 bola stavaná na extrémny fillrate a polyrate /+ plne programovateľná vertex časť grafickej pipelajny, čo 256ka nemala/ v nízkom rozlišení, jej práca s alfa efektami, s overdraw /mnohonásobné prekrývanie sa transparentných polygónov/ na scéne ďaleko predbiehala všetko čo vtedy malo PC na trhu. Aj preto neskôr pri MGS2, ktorá beží na PS2ke na 60fps mal Xbox s GPU na úrovni GeForce 3.5 /o omnoho generácií modernejšia grafika ako 256ka/ tak obrovské problémy práve vtedy, keď do obrazovky búšili desaťnásobne sa prekrývajúce alfa efekty a framerate im tam voľne padal ku 20 fps.


PAL rozlíšenie na 60fps, cez 300 000 polys na frame, cez 18 megapoly/s, aplikačne herne.

PS2 GPU bežiace na 150Mhz voliteľne adresuje celých 32 mega systémovej RDRAM, ide o 32 bit dvojkanál na 400Mhz s 3.2 giga/sec s 4 megou "videocache" EDRAM s 48giga/sec na 2560 bit buse /3xbus, 2x1024bit + 1x512 bit/, nemá pixel/vertex shader ani TMU jednotky. Má 16 x pixel ROP jednotiek s teoretickým fillrate 2400 megapixel bez textúr alebo 1200 megapix/s pri použití textúrovania, nasvietenia a Z buffer. HW T@L v podobe oboch VU 0+1 + EE FPU má teoretický transformačný výkon aj nad 80 megapoly/sec a vykresľovací okolo 15 a až 75 megapoly/s v závislosti od veľkosti polygónu a pridružených atribútov - alpha, fog, textúra, Z-buffer. Overený, reálny, herný je bežne 20 megapoly/sec - cez 330K polys na frame pri 60 fps hre alebo 650K pri 30fps.

GeForce 256 SDR/DDR však objektívne boli veľmi dobré grafiky s vysokým fillrate, nemuseli ste z nich ten potenciál krvopotne dolovať, akcelerácia spracovania geometrie bola skrytá v ovládačoch, pri PS2 ste si to museli naprogramovať urobiť vo vlastnej réžií. Všetko bolo veľmi priamočiare, jednoduché, ľahko prístupné. A stačilo to na hry ako Quake, MDK2, Descent, GTA, NFS. Obe GPU však ani omylom nestačili na PS2ku a zlomiť im krk bolo jednoduché - stačí veľa alfy na ploche /stromy, trava, výbuchy, partikle/ alebo príliš veľa malých polygónov. Preto beží na 256ke Quake slušne ale komplexnejšia Call of Duty už nie /a to sa písal iba rok 2003 a išlo stále o "qvák" ID tech 3 engine/. Dostať však ten výkon z PS2 bolo ale veľmi až nesmierne náročné, prácne a drahé, preto sa skutočného potenciálu dotklo iba niekoľko hier a väčšina vývojárov išla na pol plynu. Nikdy, absolútne nikdy však na 256ke neuvidíte tak hustú džungľu nabitú efektami ako Transformeroch alebo toľko vody a geometrie ako v F1ke na 60fps od Melbourne House /"We really set out to push the PS2 hardware"/. Pravdepodobne by kľakla práve na tých 5fps.