DirectX 12: arriva Work Graphs, l'API che sfrutta al massimo le GPU

DirectX 12: arriva Work Graphs, l'API che sfrutta al massimo le GPU

Tra le novità in arrivo delle DirectX 12 troviamo l'API Work Graphs, una soluzione che consente alla GPU lavorare maggiormente in autonomia, senza dover aspettare direttive dalla CPU. Una tecnica spinta da Epic Games e funzionale alle capacità del nuovo Unreal Engine 5.

di pubblicata il , alle 06:51 nel canale Schede Video
DirectXMicrosoft
 

Microsoft, e più segnatamente il team che si occupa di mettere a punto le API DirectX 12, ha svelato le ultime novità dell'Agility SDK 1.613.0. Tra queste non troviamo solo DirectSR, di cui sapremo di più nel corso della GDC 2024, ma anche Work Graphs.

Stando a quanto spiegato in un post, Work Graphs è una API che "sfrutta tutto il potenziale della vostra GPU. Non si tratta solo di un aggiornamento dei modelli esistenti, ma di un paradigma completamente nuovo che consente uno sviluppo di giochi più efficiente, flessibile e creativo".

Work Graphs permette agli sviluppatori di generare e pianificare il lavoro della GPU "al volo", senza fare affidamento sull'host. "Ciò significa che puoi ottenere prestazioni più elevate, latenza inferiore e maggiore scalabilità per i tuoi giochi con attività come culling, binning, il concatenamento del lavoro di elaborazione e molto altro".

A correre in nostro soccorso per capire qualcosa in più di Work Graphs è Graham Wihlidal di Epic Games, il quale si dice emozionato dal rilascio di Work Graphs, soluzione su cui la software house spinge da anni.

"Con la proliferazione di tecniche di rendering basate sulla GPU - come Nanite in Unreal Engine 5 - il ruolo della CPU tende principalmente verso la gestione delle risorse e il monitoraggio dei rischi, e solo una frazione del tempo impiegato nella generazione di comandi per la GPU", spiega lo sviluppatore.

"Prima di D3D12 Work Graphs, era difficile eseguire una gestione precisa della memoria sulla GPU, il che significava che era praticamente impossibile supportare algoritmi con espansione dinamica del lavoro. Anche lunghe catene di lavoro di calcolo sequenziale semplici possono comportare un significativo overhead di sincronizzazione e memoria".

"Il rendering gestito dalla GPU era svolto dalla CPU che doveva indovinare quali allocazioni temporanee erano necessarie alla GPU, spesso sovrallocando nel caso peggiore e usando la rilettura dei frame precedenti per il perfezionamento. Qualsiasi carico di lavoro con espansione dinamica significava emettere invii nel caso peggiore dalla CPU, facendo uscire la GPU anticipatamente dal lavoro non necessario, oppure venivano utilizzate tecniche non portabili, come i thread persistenti".

"Con Work Graphs, pipeline complesse altamente variabili in termini di 'forma' complessiva possono ora funzionare in modo efficiente sulla GPU, con lo scheduler che si occupa della sincronizzazione e del flusso di dati", aggiunge lo sviluppatore di Epic Games. Tutto questo è particolarmente utile perché semplifica il modello di programmazione per gli sviluppatori, poiché il codice complesso di gestione delle risorse e delle barriere viene spostato dall'applicazione al runtime di Work Graph".

In estrema sintesi, la GPU potrà eseguire più task da sola, senza dover bussare continuamente alla porta della CPU per sapere cosa fare, ingenerando un collo di bottiglia. Eliminare le strozzature nella pipeline di rendering è funzionale allo sviluppo di giochi sempre più vasti e avanzati, caratteristiche che sono proprio alla base del lavoro di Epic Games con Unreal Engine 5.

Tra le altre novità dell'aggiornamento indicate da Microsoft troviamo lo Shader Model 6.8, il quale introduce una serie di nuove funzionalità per gli sviluppatori di shader tra cui Start Vertex/Instance Location, Wave Size Range ed Expanded Comparison Sampling (maggiori dettagli nel post di Microsoft).

Infine, citiamo "GPU Upload Heaps", un nuovo modo "veloce e conveniente" di copiare dati dalla CPU alla GPU in determinati scenari. "Senza questa feature, la VRAM della GPU è inaccessibile alla CPU e tutte le copie devono passare attraverso il bus PCI. Tuttavia, la maggior parte delle GPU moderne dispone di una BAR (Base Address Register) ridimensionabile che può essere utilizzata dalla CPU per scrivere dati sulla GPU e in molti casi con una latenza inferiore".

Nel suo post Microsoft afferma che tanto AMD quanto NVIDIA supportano le nuove funzionalità immediatamente grazie ad aggiornamenti driver. Ulteriori dettagli sono disponibili in questo post di AMD e in quest'altro di NVIDIA. Per ora il supporto a Work Graphs da parte di AMD riguarda le GPU basate su architettura RDNA 3, mentre NVIDIA copre le GPU Ampere e Ada Lovelace. Non ci sono informazioni invece per quanto riguarda Intel e il supporto a Work Graphs.

4 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
UtenteHD12 Marzo 2024, 08:53 #1
Beh letto cosi' sembra tutto ottimo e mi chiedo come mai non ci abbiano pensato prima (lo dice sempre chi non ci ha manco pensato ad una cosa del genere).
Se funziona bene come descritto spero lo mettano anche in Win10.
jepessen12 Marzo 2024, 10:07 #2
Giusto per completezza, sembra che nel sito di AMD dicano che il GPU Work sia disponibile anche in Vulkan, quindi non solo in DirectX 12, anche se in maniera sperimentale per adesso:

“We’re looking forward to experimenting with GPU Work Graphs using the VK_AMDX_shader_enqueue extension. Having early access to the extension gives us the ability to try out new ideas and rendering approaches and provide feedback as GPU Work Graphs hopefully move towards becoming a more widespread standard.”
CtrlAltSdeng!12 Marzo 2024, 10:17 #3
Tutto molto bello ma se non vedo, non credo

Uuuuuuh resize bar 2.0 gyammy ediscion spotted!!!!
Max Power12 Marzo 2024, 16:27 #4
Vedremo

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^