Alternate Frame Rendering (AFR), ¿cómo mejora el rendimiento de las GPUs?

El renderizado de las GPUs es un tema apasionante, pero si además hablamos del renderizado de varias tarjetas gráficas al mismo tiempo y al unísono, todo se vuelve mucho más interesante. Para ello, los desarrolladores de juegos deben trabajar con una de las técnicas que las API y los motores gráficos implementan. En este artículo hablaremos de AFR o Alternate Frame Rendering, la cual es uno de los modos de representación para tecnologías como SLI y Crossfire.

Aunque tanto NVIDIA como AMD hacen uso de una manera prácticamente idéntica de esta técnica, difieren algo en la sincronización de los frames y por supuesto en su renderizado. Cada arquitectura promueve (según la tecnología y las mejoras del driver) un tiempo interno de renderizado distinto, aparte de tratar el flujo de datos de manera dispar.

Por ello, para usar este tipo de tecnologías como AFR se necesitan, al menos, dos chips gráficos iguales, no importa si pertenecen a AMD o a NVIDIA, ya que como veremos a continuación, la forma de trabajar no puede darse de forma efectiva entre distintas GPU.

Alternate Frame Rendering o como dividir las cargas de trabajo

sli_alternate_frame_rendering_397x259

Este modo de representación y tratamiento de los frames se basa en un principio muy simple: el reparto de las cargas de trabajo mediante cada GPU. Se ha ido puliendo con el paso del tiempo y aunque no es el modo preferido para muchos motores, si la implementación es buena se pueden conseguir grandes resultados.

El funcionamiento es simple: el driver es el encargado de dividir la carga de trabajo entre cada GPU alternando cada frame entre ellas.

Esto quiere decir que, en un sistema con dos tarjetas gráficas, el frame 1 se representaría en la GPU 1 (maestra), el frame 2 se representaría mediante la GPU 2, el frame 3 lo haría de nuevo con la GPU 1 y así sucesivamente. Por su simplicidad suele ser el elegido en la mayoría de juegos, aunque como decimos en ciertos motores no funciona nada bien.

Tiene una ventaja clara frente a otros modos de representación, y es que exige muy poco al sistema y requiere muy poca comunicación entre las tarjetas gráficas, lo cual beneficia a AMD más que a NVIDIA, ya que esta última depende de los famosos puentes SLI para obtener ventaja en multi GPU.

Desventajas de usar AFR como modo de renderizado

Alternate-Frame-Rendering

Aunque los motores y drivers han mejorado mucho con el paso de los años, AFR por su propia naturaleza tiene una desventaja frente a SFR y frente a la futura CFR: puede producir stuttering.

Esto no tiene nada que ver con la sincronización de las GPUs con la pantalla, ni con FreeSync o G-SYNC, ya que estos no eliminarán el problema.

Al renderizar una de las GPUs los frame impares y otra los frame pares y dejar dicha asignación al driver y no al motor como tal, es posible que se generen en ciertas ocasiones retardos en la entrega de dichos frames o malas asignaciones.

Lógicamente esto tendrá el efecto no deseado del tartamudeo que tanto molesta a los jugadores. En cambio, es tremendamente útil para software como CAD o modelado 3D variados, ya que aumenta mucho el rendimiento sin el problema del stuttering.