La patch Vulkan per Doom migliora enormemente le prestazioni - articolo
Il Digital Foundry prova l'aggiornamento e ne parla con id Software.
La versione PC del reboot di Doom ha finalmente ricevuto l'update per le API Vulkan che stavamo aspettando. La patch migliora le prestazioni per tutti ma i miglioramenti per i possessori di hardware AMD sono particolarmente validi. I nostri test iniziali suggeriscono un incremento del 30-40% per gli utenti Radeon, ma si tratta di numeri iniziali e approssimativi. La situazione potrebbe anche essere migliore.
Ma che cos'è, esattamente, Vulkan? Beh, consideratelo l'equivalente OpenGL delle DirectX 12, con molti degli stessi vantaggi, principalmente un utilizzo molto migliore delle CPU multi-core e l'implementazione del calcolo asincrono su GPU. Quest'ultimo elemento, in particolare, migliora di molto per l'hardware Radeon e viene usato estensivamente in Doom. Tiago Sousa di id Software ha recentemente parlato di 3-5ms di calcolo in meno per fotogramma nelle versioni console: un margine enorme quando si hanno 16ms di tempo di rendering per fotogramma.
In un'intervista tecnica con il Digital Foundry (che pubblicheremo a breve), il team di id parla dei vantaggi di Vulkan e del potenziale del calcolo asincrono in particolare.
"Sì, il calcolo asincrono verrà utilizzato estensivamente sulla versione PC Vulkan che gira su hardware AMD", ci dice il lead programmer Billy Khan. "Vulkan ci permette finalmente di programmare a livello molto più vicino alla macchina. Lo spesso strato di driver viene eliminato con Vulkan, e questo ci dà miglioramenti prestazionali significativi, non ottenibili con OpenGL o DX".
Jean Geoffrey, senior engine programmer, approfondisce i grandi vantaggi portati dal calcolo asincrono.
"Guardando alle prestazioni delle GPU, qualcosa che balza subito al'occhio è che alcuni passaggi di rendering utilizzano a malapena le unità computazionali. Il rendering delle shadow map, ad esempio, trova solitamente un collo di bottiglia in un percorso fisso (come il rastering) e nella banda di memoria piuttosto che nella potenza di calcolo. Ciò significa che quando si renderizzano le ombre, se non c'è nulla che viene calcolato in parallelo si sta sprecando molta della potenza di calcolo di una GPU".
"Anche i calcoli più intensi di shading non sono potenzialmente capaci di massimizzare le risorse di calcolo per numerosi motivi legati alla pipeline grafica interna. Quando ciò accade, il calcolo asincrono degli shader può sfruttare quelle unità computazionali inutilizzate per altri compiti. Questo è l'approccio che abbiamo utilizzato con Doom. I nostri post-processing e tone-mapping, ad esempio, vengono eseguiti in parallelo con una parte significativa del calcolo grafico. È un buon esempio di una situazione in cui riorganizzare in maniera differente il proprio lavoro tra risorse grafiche e computazionali può risultare in un guadagno di vari ms".
"Questo è solo un esempio ma in generale il calcolo asincrono è un ottimo strumento per sfruttare meglio la GPU. Quando è possibile sovrapporre calcoli di questo tipo, c'è l'opportunità di migliorare le prestazioni. Abbiamo usato il calcolo asincrono nello stesso modo su entrambe le console. Vi sono delle differenze nell'hardware, ma non sono molto importanti visto il modo in cui organizziamo le code di calcolo".
Detto questo, quali sono i risultati con il codice Vulkan su PC? Per i test utilizziamo FCAT, un sistema che contrassegna ciascun fotogramma prodotto dalla GPU con un contorno colorato. È il modo migliore di tenere traccia di ciò che si vede, senza basarsi sui dati interni.
C'è solo un problema: Doom al momento non supporta FCAT e per mettere insieme alcuni numeri abbiamo utilizzato un approccio molto semplice, vale a dire provare tre scene molto diverse e misurare la differenza di prestazioni su una serie di GPU.
È un metodo molto spartano di giudicare le differenze ma i risultati sono stupefacenti. Cominciamo con un confronto a 1440p/ultra/8x TSSAA tra quattro GPU molto potenti: GTX 1080, GTX 1070, GTX 980 Ti e R9 Fury X. Abbiamo fatto la media dei punteggi delle tre scene, e i risultati sono chiari: l'hardware Radeon opera al di sotto delle sue potenzialità sotto OpenGL sia in confronto alla GTX 1070 che alla GTX 980 Ti, ma le surclassa con Vulkan.
FPS medi | GTX 1080 | GTX 1070 | GTX 980 Ti | R9 Fury X |
---|---|---|---|---|
Open GL | 134.0 | 107.7 | 109.3 | 88.7 |
Vulkan | 149.0 | 115.0 | 115.0 | 123.7 |
Incremento prestazionale | +11.2% | +6.8% | +5.2% | +39.5% |
Abbiamo anche voluto verificare il comportamento della nuova tecnologia Polaris di AMD con Vulkan, quindi abbiamo ripetuto esattamente gli stessi test con la RX 480: stesso PC, stesse impostazioni, stesse scene. Ora, in un mondo ideale avremmo confrontato i risultati con quelli della GTX 1060 ma visto che quest'ultima è ancora sotto embargo, abbiamo fatto il meglio che potevamo e preso in esame GTX 970 e GTX 980, le due schede Nvidia che la nuova GPU andrà a rimpiazzare.
I risultati evidenziano ancora una volta il chiaro svantaggio di AMD con i driver OpenGL. La GTX 970 è più veloce del 7% rispetto alla RX 480, e la GTX 980 del 24%. Ancora una volta, però, la situazione cambia notevolmente con Vulkan. La RX 480 supera la GTX 970 e si muove nel campo del margine d'errore rispetto alla GTX 980.
Dobbiamo sottolineare di aver testato solo una piccola selezione di scene relativamente leggere. È chiaro che l'utilizzo della CPU di AMD è calato in maniera significativa, quindi potrebbero esserci incrementi ancora superiori nelle scene d'azione più intense. Eseguire dei benchmark di Doom è molto difficile: anche se i dati del frame-time in sovrimpressione funzionassero correttamente con AMD, la natura altamente dinamica del gioco rende quasi impossibile ripetere esattamente la stessa sequenza al fine di effettuare una misurazione precisa.
FPS medi | RX 480 | GTX 970 | GTX 980 |
---|---|---|---|
Open GL | 69.7 | 75.7 | 86.6 |
Vulkan | 89.7 | 77.3 | 90.7 |
Incremento prestazionale | +28.7% | +3.4% | +4.7% |
Speriamo di avere presto a disposizione uno strumento FCAT per Vulkan o una modalità linea di comando aggiunta dallo sviluppatore, e considerando le radici del gioco sarebbe stupendo avere anche supporto per una timedemo. Al momento, comunque, la situazione è chiara. Con Vulkan vi sono vantaggi per tutti, a prescindere dall'hardware. Va sottolineato che i nostri test sono stati eseguiti con un Core i7 6700K overclockato a 4.6GHz. Che possediate una GPU Nvidia o AMD, l'ottimizzazione della CPU dovrebbe fornire grossi miglioramenti a chi possieda processori meno capaci.
In termini di incrementi delle prestazioni della GPU, i numeri mostrano però che Vulkan è importantissimo per AMD. Il cambiamento è particolarmente notevole nel caso della R9 Fury X: anche se la forza bruta della GTX 1080 la mantiene in testa al gruppo, la Fury X surclassa GTX 1070 e 980 Ti, un risultato impressionante per un upgrade dal solo lato software.
id Software è molto chiara riguardo ai vantaggi portati da Vulkan e dal calcolo asincrono. Abbiamo chiesto al team se in futuro vede il calcolo asincrono come un fattore principale di tutti i motori e su tutte le piattaforme.
"Il futuro è adesso. Doom è già un chiaro esempio di come il calcolo asincrono, se usato correttamente, possa migliorare drasticamente le prestazioni e l'aspetto di un gioco", afferma Billy Khan. "Andando avanti, lo utilizzeremo ancora più estensivamente in idTech6. È quasi certo che più sviluppatori lo sfrutteranno man mano che scopriranno come utilizzarlo efficacemente nei loro giochi".