AMD muestra el rendimiento de su RX 7900 XTX con DX12 Work Graphs: hasta un 64% más rápida

La presentación por parte de Microsoft la pasada semana no impactó demasiado a los usuarios pese a que las bondades de la nueva parte de DX12 eran evidentes. Por ello, y ya de forma oficial, AMD ha querido mostrar a todos sus usuarios una pequeña muestra, un anticipo, de lo que está por venir, puesto que la tecnología Work Graphs es realmente un paso adelante en el camino correcto. Armados con una RX 7900 XTX y dicha Work Graphs, AMD ha mostrado el aumento de rendimiento que podemos llegar a conseguir en condiciones óptimas.

Sí, es cierto que un benchmark rápido no va a ser un entorno real para un juego, eso lo sabemos todos, pero la diferencia es tan grande que con que llegue una décima parte será un salto adelante interesante para todos los usuarios que tengan hardware compatible. Vamos a explicar brevemente qué es lo que mejora, cómo y cuál es el resultado, aunque es algo complejo por lo técnico del asunto.

AMD mostró y habló en el GDC 2024 sobre Work Graphs y cómo cambiará el panorama en el hardware y en los juegos

Microsoft-Work-Graphs-Nodos

Si la semana pasada no estuviste atento con lo que Microsoft presentó de mano de sus socios, vamos a resumirlo en palabras de Shawn Hargreaves, Gerente principal de ingeniería de D3D en Microsoft:

Work Graphs es el resultado de varios años de colaboración entre Microsoft, AMD y otros socios. Siempre supimos que querríamos ampliar esta capacidad más allá de la pura computación para abarcar también los Draw Nodes (Nodos de dibujo, o también llamadas Nodos de llamadas), estamos encantados de ver que este prototipo ya se ejecuta en hardware real y esperamos continuar nuestra sólida asociación a medida que agregamos esta funcionalidad a una futura versión de Direct3D.

El problema que tenemos actualmente y que se palió con DX12, las Draw Calls y las sucesivas mejoras de la API es que sigue existiendo un límite dentro del llamado Compute Shader, lo que presenta un problema para la CPU y los Dispatch.

Works Graphs viene a acabar con parte de todo el problema que genera la CPU, y al menos, elimina ese Compute Shader Dispatch (proveniente del Dispatch Graphs como tal) mandando gran parte de la información a renderizar directamente a la GPU.

Work Graphs

Es decir, la CPU deja de ser en gran parte el cuello de botella (se elimina la necesidad de ir a buscar "trabajo" en ella) y se pasa el procesamiento y alimentación de la escena a la GPU, algo que ya comentamos hace meses en los comentarios sobre cómo funcionaba DX12 como API con estos dos componentes.

Resumiendo el concepto, podemos decir que ahora tenemos un Node Graphs central donde cada nodo pide trabajo al resto, se retroalimentan, no hay que esperar a que la CPU mande la información, es totalmente paralelizable, por lo que ayuda al desarrollador a simplificar la programación en el hardware y deja este trabajo a la API, la cual decide cómo ejecutar el trabajo (Broadcasting, Threads o Coalescing) en el mejor orden según los nodos estén con mayor o menor carga, sin latencia externa.

Tanto es así, que la propia Epic Games alaba el paso para UE5, Nanite y Lumen.

Empty Draw Compaction (EDC) y Mesh Nodes

DX12-Dispatch-Graph-mediante-Work-Graph

Por dar algo más de contexto rápido y poder comprender qué es lo que vamos a ver en el gráfico de más abajo que ha deslizado AMD y su importancia, hay que tener claro primero dónde apunta Work Graphs aparte de terminar con el Compute Shader Dispatch en CPU. AMD afirma que gracias a esta tecnología se va a terminar de raíz el Empty Draw Compaction, el cual dice gastar un tiempo de optimización significativo y limita bastante el rendimiento, siendo otro cuello de botella que la CPU no puede salvar fácilmente.

EDC no es más que un método de compactación de datos que van a parar a la CPU. Normalmente hay dos escenarios que hacen colapsar los Dispatch en los registros y posteriormente caché del procesador: resoluciones en los juegos bajas, pero con altos FPS a renderizar (1080p a 360 FPS o superior), o bien, altas resoluciones con FPS moderadamente altos (4K a 120 FPS o superior).

Normalmente, el primer escenario es el que requiere de mayor dependencia de la CPU, y por ello, DX12 incluye dos métodos de compactación de los datos.

Ninguno de los dos métodos llega a funcionar bien cuando se desborda los recursos que tiene nuestra CPU, así que la solución es Work Graphs, pero ¿cómo? Dividiendo las Draw del procesamiento transversal en escenas complejas. Esto dio como resultado un grupo de Draw Calls menor, y según AMD, en su hardware permite cambios frecuentes de PSO (Pipeline State Object) además de manera completa.

Y de nuevo, ¿cómo lo hacen? Mediante Mesh Nodes, que no es más que un nuevo tipo de nodo para controlar los Mesh Shaders. Por lo tanto, y en resumen rápido, Work Graphs ahora aúna Mesh Nodes, los cuales y a su vez, controlan Mesh Shaders.

Execute Indirect y cómo es mejorado por Work Graphs en una RX 7900 XTX

AMD-RX-7900-XTX-Work-Graphs-64%-más-de-rendimiento

Ahora entendemos cómo Work Graphs va a trabajar con los Mesh Nodes y cómo estos se van a desplazar a la GPU para que esta libere del trabajo a la CPU. Pues bien, AMD (y Microsoft) llama a este trabajo que hacía la CPU y que parcialmente hace la GPU como Execute Indirect (ejecución indirecta), puesto que era un trabajo fuera de la gráfica que en los escenarios comentados hacía de cuello de botella.

Así, este Execute Indirect es sustituido por Mesh Nodes (Work Graphs) y llevado a la GPU en forma paralelización en nodos para su cálculo y resolución interna (retroalimentación) donde al ser ahora ampliamente paralelizable (valga la redundancia) mediante los Mesh Shaders, el rendimiento debe aumentar bastante.

Microsoft-Work-Grahps-GPU-retroalimentación

AMD asegura que todo se mueve en un solo Work Graphs mediante un único envío, por lo que el Empty Draw Compaction deja de existir para terminar también (y gracias a ello) con los cambios de PSO (Pipeline State Object) internos, lo que a su vez también genera que la administración de memoria que se producía deje de realizarse.

¿Resultado simplificado? Menores recursos del sistema, menor latencia, más rendimiento y un canal de comunicación más directo con la GPU. AMD compara su rendimiento con Execute Indirect frente a Work Graphs, y como se puede ver, el rendimiento es un 64% mejor bajo una RX 7900 XTX, debido a que el tiempo de renderizado es mucho menor.

Como ya dijo Microsoft, los Mesh Nodes con Work Graphs estarán disponibles a finales de año, justamente cuando las nuevas RTX 50 y RDNA 4 estén en el mercado, así que el año 2025 se presupone interesante en el mercado del gaming por todo lo comentado.