Las GPU AMD aumentan su rendimiento un 33% en Ray Tracing con PLOC BVH

Hemos ido viendo cómo AMD está mejorando en un apartado donde NVIDIA les pilló a contrapié: el Ray Tracing. Las mejoras, aunque palpables, no son suficientes y por ello los de Lisa Su están implementando más y más recursos para cogerles, al menos en lo que a Vulkan y OpenGL se refiere. Por ello, han comentado su último avance, el cual todavía tiene que ser trabajado y al que le han puesto por nombre PLOC BVH Builder. Una mejora que aumenta el rendimiento en hasta un 33% según se afirma.

Todo se cimienta dentro del Proyecto Mesa3D, una implementación de código abierto basada en la especificación de OpenGL para renderizar gráficos 3D y que ahora se lleva a muchas más API, excluyendo la más importante, DirectX, por motivos obvios. Por ello, este avance es de vital importancia, ya que situaría al resto de API muy cerca del rendimiento de la de Microsoft.

AMD se beneficiará del PLOC BVH

PLOC-BVH-Builder

El trabajo hay que otorgárselo a Friedrich Vock y a Bas Nieuwenhuizen, dos programadores que han trabajado con lo que se conoce en el mundo del software para juegos como Parallel Locally-Ordered Clustering o PLOC por sus siglas en inglés. Esto de por sí es habitual, lo que no lo es el enfoque, ya que se han trabajado para hacer que soporte BVH, es decir, Bounding Volume Hierarchy, la estructura en forma de árbol para representar conjuntos de objetos en una escena de forma geométrica.

Estos BVH son usados para calcular las intersecciones, colisiones y en definitiva, hacer los cálculos para el Ray Tracing, acelerando su proceso con unidades dedicadas como los RT Cores, o bien, por fuerza bruta con los Shaders.

AMD-Ray-Tracing-RDNA-2

Pues sabiendo esto, el algoritmo PLOC enfocado a construir estos BVH elimina el cuello de botella que supone el cálculo tan lento del último, reemplaza las partes de este que son críticas y permite que el rendimiento escale y la GPU consuma menos energía.

Como AMD trabaja con el proyecto de Ray Tracing de código abierto denominado comúnmente GPURT y en el caso de Vulkan, AMDVLK, los dos programadores han querido usar el algoritmo PLOC de una manera similar, donde para ello usan una sincronización global de los Shaders junto con un nuevo algoritmo de reparto de tareas, un taskmanager por así decirlo, que, curiosamente, es muy parecido a lo que usa Intel con sus GPU Arc.

Mejorar la sincronización para aumentar el rendimiento y bajar el consumo

Algoritmo-BVH

Los RT Cores de NVIDIA consumen una buena parte de la energía cuando se le piden trabajar para Ray Tracing, pero al mismo tiempo son muy eficientes en cuanto a rendimiento/vatio, mucho más que las opciones de AMD e Intel. Por ello, utilizar un algoritmo de reparto y partición de tareas con una sincronización global del Shader para lograr que ambos calculen de forma más eficiente las iteraciones dentro del árbol es muy inteligente.

De hecho y según comenta Vock, el aumento de rendimiento ha sido bastante grande:

Mi evaluación comparativa en un 6700XT indica una mejora del 33 % para Q2RTX (Quake 2 RTX) y las demostraciones de nvpro. En Control se sufre un poco por el aumento de los tiempos de compilación, pero aún mejora un poco (alrededor de 47 -> 51 FPS).

La mejora en Control es de un 8,5%, lo cual está más que bien y teniendo en cuenta que el driver de AMD para Linux y Vulkan (AMDVLK) integra el proyecto GPURT para servir como opción al RADV del Proyecto Mesa, es factible pensar que PLOC BVH Builder, tras sus respectivos cambios y correcciones, así como mejoras, termine implementándose para todas las API de dicho Proyecto Mesa.

Esto son grandes noticias, pero la realidad es que el grueso de juegos sigue siendo DirectX en Windows. Ojalá AMD pueda dar un salto secuencial con las RX 7000 para competir, al menos, con las RTX 30 en Ray Tracing, tal y como se espera por otra parte gracias a la segunda generación de Ray Accelerators o aumentando el número de RA por CU.