Nvidia RTX - Nuova frontiera o merdaccia?




Tra la GDC 2018, il Siggraph e la Gamescon , Nvidia sta lanciando la sua nuova serie di schede grafiche, che sta cogliendo un po’ tutti di sorpresa perché non è quello che in molti si aspettavano. Dopo il salto, una mia analisi sulla questione.


Credo che convenga un attimo fare un discorso introduttivo sulla storia dell’evoluzione delle GPU o schede grafiche che dir si voglia. Qual è lo scopo fondamentale di una scheda grafica? È un circuito elettronico specializzato per a manipolazione della memoria atta alla creazione di immagini che dovranno essere visualizzate su un monitor. In principio, tutte le azioni grafiche erano gestite dalla CPU. Ma si poteva notare come fosse una cosa inefficiente. Così, nel tempo, si svilupparono coprocessori ed acceleratori grafici che offrivano hardware a funzioni fisse per alleggerire il calcolo grafico dalla CPU. Il concetto di hardware a funzioni fisse è fondamentale. Una GPU sapeva fare solo ed esclusivamente quello per il quale era costruita. 

La rivoluzione nel campo delle GPU arrivò con l’era della programmabilità, ovvero le schede grafiche erano in grado di eseguire programmi grafici, chiamati shaders. Parliamo della serie Geforce 3, del 2001. Questa introdusse due unità speciali,  Pixel e Vertex Shaders, in grado di fare operazioni rispettivmente sui pixel e sui vertici. Dal 2001, ogni generazione di GPU cercò di unire la flessibilità della programmabilità a nuove funzioni eseguibili da questi shaders. Nel 2002, la serie 9000 dell’ATI poteva eseguire matematica complessa sulle unità shaders e quindi le GPU iniziarono a diventare più versatili.

Nvidia con la serie Geforce 8, presentata nel 2006, introdusse lo shader unificato. Ora le GPU avevano un solo tipo di unità di calcolo, lo stream processor, chiamato anche CUDA core nel caso delle Nvidia, in grado di eseguire ogni tipo di operazione volesse, semplicemente programmandolo in modo opportuno.  Da qui partirono tutti i software in grado di sfruttare le GPU per calcolo generico attraverso OpenCL, CUDA e DirectCompute, fino ai giorni nostri. L’aumento prestazionale da una generazione alla successiva era data dall’aumento dei generici stream processors e dal sottosistema di memoria. In hardware si implementava il supporto alle DirectX di livello superiore e si costruivano codificatori e decodificatori video integrati, ma per il resto è sempre stato il numero di CUDA a farlo da padrone. 
Il Ray Tracing prevede una pipeline grafica completamente diversa,non è solo un effetto aggiuntivo

Se volete sapere di più su GPU e memorie consiglio di leggere qui.

Ora, sto facendo un discorso semplificato, mi serve giusto comunicare l'idea alla base, on tutti i dettagli. I calcoli generalmente eseguiti dalle GPU in ambito grafico desktop hanno una complessità FP32, cioè sono calcoli in virgola mobile a 32bit. I calcoli scientifici possono essere FP64. Questi richiedono giustamente unità in grado di contenere 64 bit di dati. Vari chipset di GPU hanno all’interno degli Stream processor diverse unità di calcolo a seconda del segmento di mercato alle quali sono indirizzate, come calcolo scientifico o per chipset mobile.


Ultimamente, sono nate nuove branche di calcolo, come quelle dedicate al deep Learning per le intelligenze artificiali, che richiedono unità di calcolo ottimizzate per quel tipo di computazione. Richiedono hardware “a funzione fissa”. Ed Nvidia nelle sue schede grafiche di ultima generazione sta facendo proprio questo. Sta offrendo due diversi hardware a funzione fissa, che si affiancano ai classici stream processor programmabili “generici”. In un certo senso, si sta tornando indietro, ai tempi delle prime schede grafiche come ho detto poco sopra.

Queste due nuove unità di calcolo sono: i Tensor core ed i core RT. I primi sono nati per l’intelligenza artificiale. I secondi inseguono il Sacro Graal della grafica: il ray tracing. Se volete approfondire sul ray tracing vi rimando  a questo mio articolo, ma in ogni caso vi do la versione veloce. Tutta l’illuminazione nella grafica in tempo reale, quindi nei videogiochi, è finta. È falsificata. Si usano tecniche per dare l’idea, l’illusione che ci sia un’illuminazione vera. Il Ray tracing è una tecnica di rendering diversa da quella attuale, che invece utilizza il tracciamento dei raggi per ottenere informazioni di illuminazioni vere, fisicamente corrette. Si tratta di una tecnica incredibilmente pesante e pertanto era usata solo in produzioni cinematografiche o in campi architetturali/ingegneristici, richiedendo ore ed ore di rendering  su server dotati di migliaia di processori.

La demo in Ray Tracing di Star Wars di Nvidia, era eseguita in full Hd a 24fps su 4 Titan V. 56 TF di potenza grafica. La stessa demo, con stessi dettagli oggi riesce a girare su una singola Quadro RTX 8000.  Perché? Perché i moduli RT si prendono carico del tracciamento dei raggi, liberando i normali shader di carico di lavoro. Questi moduli sono costruiti appositamente per accelerare raggi. Sanno fare solo quello e lo sanno fare bene.

La differenza del Ray tracing nelle giuste condizioni può essere drammatica.
In loro aiuto arrivano i moduli per l’IA, che sono in grado di fare cosa straordinarie se ben sfruttati. La loro rivoluzione si incentra su un semplice concetto: la creazione di informazioni che non esistono. Ma andiamo un attimo con ordine. Ogni elaborazione di un computer opera su dei dati, su delle informazioni. Più informazioni ho, più i miei calcoli saranno complessi, ma precisi. Proviamo ad immaginare la risoluzione di un’immagine. Una risoluzione di 1280x720 indica che ho 921.600 pixel da elaborare. Quando invece renderizzo un’immagine a 1920x1080, ho 2.073.600 pixel da elaborare. Ho più informazione e pertanto l’immagine sarà più definita, i particolari dell’immagine si vedranno meglio.

Ebbene, per alleggerire il calcolo grafico sulle console, si fa spesso un lavoro di upscaling. Ovvero, io elaboro un videogioco ad una risoluzione più bassa di quella dello schermo e poi uso degli algoritmi per aumentare la risoluzione dell’immagine dopo averla prodotta. Immaginate di avere una sequenza di numeri: 1,2,4,5. Mi manca informazione tra il 2 ed il 4. Posso usare l’interpolazione lineare per ottenere (2+4)/2 = 3. Se il gap è maggiore, questa formula non funziona più, ed ho bisogno di altri strumenti per ottenere i dati che mi servono.  Riprendete i dati che ho scritto sopra. Renderizzare a 720p ed upscalare a 1080p, vuol dire generare 1.152.000 pixel in più. Bisogna riempirli di informazioni. E le informazioni che devo generare sono addirittura maggiori di quelle di partenza. Per questo, immagini upscalate, se viste dalla distanza sbagliata, appaiono sporche e con poco dettaglio. Oggigiorno ci sono molte tecniche di ricostruzione dei frame, che utilizzano informazioni di più frame per o upscalare (pensate al checkerboarding usato su console) o applicare filtri di Anti Aliasing per diminuire le scalettature dei bordi degli oggetti.

L’IA cambia le carte in tavola, perché può essere allenata precedentemente in scenari senza restrizioni, e poi può colmare i vuoti di informazioni con parametri estremamente vicini alla realtà. Immaginate di voler creare un algoritmo di  AA che sfrutta l’intelligenza artificiale. Voi prendete il gioco che vi interessa, e lo fate giocare all’IA a risoluzioni elevatissime, come 8 ,16 o 32k. Col tempo l’IA capisce come è composta l’immagine, come gli oggetti si muovono e come interagiscono tra di loro. Dopo qualche giorno l’algoritmo è pronto. A questo punto può essere usato su un’immagine in 1080p. L’IA capisce le similarità tra l’immagine che state vedendo voi sul vostro schermo e quella che ha imparato a 32k. A questo punto può andare a rifinire l’immagine per renderla più simile a quella a 32k. Il tutto, senza pesare sul rendering della scena, perché l’algoritmo gira sui core dedicati all’IA. Questo concetto viene sfruttato dal Ray Tracing di Nvidia e probabilmente dalla tecnologia DLSS. Con il ray tracing, è possibile tracciare meno raggi di quelli che servirebbero, con l’IA che riempie i buchi lasciati dalla mancanza di raggi. 

Il DLSS si dimostra potenzialmente interessantissimo, ma si sa ancora poco o nulla.

Per il DLSS, il nuovo tipo di AA Nvidia basato sull’IA, non si hanno ancora informazioni precise per via dell’embargo, ma è possibile ipotizzare che funzioni come ho descritto poco sopra. Dai grafici Nvidia si può osservare un aumento prestazionale mostruoso quando c’è il DLSS attivo, e questo potrebbe essere perché in realtà diminuisce la risoluzione di rendering del gioco, ma il suo algoritmo IA riesce a compensare sul risultato finale, ottenendo un’immagine migliore di quella renderizzata in modo nativo. Ma bisognerà aspettare i test eseguiti da testate indipendenti all’uscita delle schede a settembre.


Tutta roba molto bella, ma dobbiamo ricordarci che ogni era, ogni epoca, ha la sua buzzword, ha il suo marketing e che le aziende cercano sempre di promuovere dei loro metodi per realizzare qualcosa, così da vendere i suoi prodotti. Chi di voi si ricorda del calcolo PhysX? Il calcolo fisico accelerato dalle GPU? Tutta roba accessoria, adottata da sempre meno persone fino a praticamente sparire oggigiorno. E che dire dei primi anni delle DX11, con la tessellatura che era vista come la cura di tutti i mali? Effetto di una pesantezza tale che viene usato in modo molto pacato oggigiorno, sostituito da altre tecniche meno dispendiose per dare rilievo alle superfici. Hairworks, famoso per la sua pesantezza in Witcher , è una tecnica di tessellatura alla fine del giro.  Altre proposte software sono invece sono rimaste nel tempo, basti pensare all’Ambient Occlusion HBAO o ai vari tipi di AAtemporale, come il TXAA, che trovano ancora impiego in certi giochi.

Questa volta il Ray Tracing sembra essere un qualcosa di più, perché sta venendo implementato nelle API DirectX e Vulkan indipendentemente dai software Nvidia, quindi la strada sembra tracciata, e potrebbe essere come tante tecnologie introdotte in una generazione di GPU, ma che arrivano a fruizione completa solo tra altre 2-3 ricambi tecnologici.

Il chipset Turing è gigante e pieno di nuovi elementi.

Direi che si può chiudere andando a guardare i prezzi che Nvidia ha deciso di usare come apertura di questa nuova generazione 20XX e confrontarli con quelli delle due generazioni passate. Prendiamo la 980, la 1080 e la 2080. Userò come dati il loro valore di boost dichiarato ed il prezzo di lancio msrp delle non Founders Edition. Il tutto per evitare di complicare la situazione.

La 980, del 2014, è una scheda da 2048 shaders, 128 TMU e 64 ROPs, operanti a 1216mhz di boost, con 224GB/s di banda passante su 4GB di GDDR5. Il tutto ad un prezzo di lancio di 549$. Ci prendevamo un chipset da 398mm^1 a 28nm con un TDP di 165W. Pagavamo nel 2014 110$ a teraflop, per una scheda che ne generava 4.9.  Questa è la nostra scheda di controllo, la baseline.

La 1080, del 2016, è una scheda da 2560 saders, 160 TMU e 64 ROPs, opernti a 1733 mhz di boost, con 320GB/s di banda passante su 8GB  di GDDR5x. Il tutto a 599$ di MSRP.Il passaggio dai 28nm ai 16 nm, permisero di ridurre le dimensioni del chip rispetto alla 980 a 314mm^2.  Stavamo pagando un 10% in più rispetto alla generazione precedente, per un aumento prestazionale dell’80% in termini di potenza bruta di calcolo, il raddoppio della memoria ed un aumento della banda passante del 42%. Siamo arrivai a pagare 68$ per Teraflop.  Ed essendo il chipset più piccolo, ad Nvidia costava anche di meno produrlo. Insomma, una situazione Win-Win per tutti. Sappiamo poi che è esplosa la  bolla del mining con i prezzi folli, ma scordandocela, avevamo molto di più per un prezzo molto paragonabile.

La 2080, del 2018, è una scheda da 2944 shaders, 184 TMU, 64 ROPS, 368 Tensor cores, a 1719 mhz di boost, con 448 GB/s su 8GB GDDR6 a 699$ di msrp. Guardando un attimo esclusivamente ai CUDA cores, alle unità di calcolo usate per ogni tipo di operazione di rasterizzazione delle immagini, abbiamo un aumento della potenza teorica del 17% in termini di Teraflop. La banda passante è aumentata del  40% e questo è di sicuro un vantaggio a risoluzioni elevate. Il prezzo però è aumentato del 16%, praticamente dello stesso valore dell’aumento di potenza teorica di calcolo. Se facciamo un calcolo di soldi spesi per teraflops, siamo rimasti allo stesso livello della 1080, a 69$/TF, 1$ peggio di prima.

Questo proprio perché queste schede, si prefiggono l’obiettivo di offrire qualcosa di più, di diverso rispetto a prima. 368 Tensor core. Core RTX in grado di spingere 8Gigarays/s. Numeri che, ad oggi non possiamo quantificare. Perché si basano su tecnologie future, su applicazioni ipotetiche. C’è un nutrito numero di giochi, 21 al momento della scrittura, che offriranno supporto alle nuove tecnologie Nvidia nel breve periodo, ma chi mi dice che non siano un altro buco nell’acqua? Qui è diverso dai vecchi PhysX. In quel caso, il calcolo fisico era eseguito dai CUDA, dai processori generici che già erano sulla scheda. Con questa generazione sto pagando per del silicio che può rimanere là, inerte, a non fare nulla, a girarci i pollici mentre i CUDA cores della scheda continuano a svolgere il loro solito compito di rasterizzare l’immagine.

Non facciamoci prendere per i fondelli. Cerchiamo di essere realistici. Si tratta di tecnologie senza dubbio interessanti. Però il vero motore tecnologico dell’industria videoludica, rimangono le console. Quando cambiano le console, ecco che i giochi cambiano volto, facendo dei salti tecnologici enormi tutti in una volta. Ed il mercato console è in mano ad AMD, non ad Nvidia. Quindi, a mio parere, l’adozione del Ray Tracing e di altre, nuove, esoteriche tecniche di calcolo, dipenderà da che funzioni saranno presenti nelle GPU che animeranno le future PS5 ed Xbox One 2. Fino a quando anche loro non adotteranno queste tecniche, non ci sarà il cambio totale di paradigma. Queste schede Nvidia quindi sono più di ogni altra cosa una commessa. Una scommessa sull’uso di nuove tecnologie, che con il tempo miglioreranno e si evolveranno,  verranno abbandonate. A voi consumer, la voglia di credere con i nostri soldi in questo progetto futuro. E chi vivrà vedrà…

Stay Classy, Internet.

Nessun commento:

Posta un commento

01 09 10