Internet es maravilloso porque ha permitido a cualquiera tener acceso a cualquier información. Pero el problema que tiene aparejado es que mucha gente no sabe entender la información a la que tiene acceso. En el mundillo de las tarjetas gráficas es un problema adicional porque en realidad poca gente entiende la arquitectura de una GPU, y se tiene que fiar de lo que dicen los expertos.

Luego están en internet los enemigos de esta o aquella marca de tarjetas gráficas, que suelen vomitar lo primero que se les ocurre para argumentar lo mala que es la competencia. El verdadero problema llega cuando esos argumentos erróneos se les da bombo por otros medios que claramente no tienen idea de cómo funciona en realidad una tarjeta gráfica. Reddit es un caldo de cultivo para informaciones y desinformaciones, y por eso hay que tener mucho cuidado con lo que por allí se lee.

Reddit, ese lugar en el que se encuentra de todo

reddit_logo_wide

Reddit se ha hecho eco de una discusión en Steam, y originada en Overclock.net, de un usuario exempleado de AMD y conocido por sus comentarios anti-Nvidia, que ha atacado a Futuremark y su 3DMark Time Spy. Asegura que Futuremark ha manipulado la prueba para que las tarjetas Maxwell no sean penalizadas en Time Spy, porque no se está usando la computación asíncrona en ellas.

La siguiente parrafada os la podéis saltar si no os interesa cómo funciona la computación asícrona.

En esencia la computación paralela es la ejecución de distintas tareas a la vez para acelerar la consecución de un resultado. En el caso de los sombreadores asíncronos, se crean tres tipos de colas de tareas (gráficos, cómputo y copia), siendo las de cómputo y copia un tipo de tareas ligeras en cuanto a procesamiento necesario. Eso permite intercalarlas fácilmente en los momentos de inactividad de ejecución de una tarea gráfica (por ejemplo, si está a la espera de datos de otra tarea en ejecución).

Tradicionalmente, en DirectX 11 todas las tareas se hacían en orden, y este tipo de intercalación resultaba inviable, por lo tanto los tiempos de inactividad son desaprovechados. La computación asíncrona de DirectX 12 y Vulkan (tomada de las consolas), y específicamente en las gráficas de AMD, se realiza mediante unos motores de computación asíncrona (ACE) que gestionan las colas. Nvidia lo hace en Maxwell mediante software, los controladores GeForce, y en ellos la computación asíncrona está solamente activada para las gráficas Pascal.

Por otro lado, la computación asíncrona es tanto computación concurrente como paralela al mismo tiempo. Concurrencia se da al ejecutar varias tareas al mismo tiempo en el mismo o distintos procesadores (unidades de cómputo o CU en la arquitectura de AMD), y cada tarea puede tener acceso a la información de las demás. En la generación de gráficos, es algo indispensable, porque al calcular por ejemplo la iluminación de una figura se necesita conocer las del resto.

La computación paralela es la división de una tarea en subtareas para ejecutarlas (en este caso concurrentemente, pero puede haber paralelismo sin concurrencia) en distintos procesadores (en este caso los sombreadores), y obtener un único resultado final. Insisto en que la generación de gráficos requiere tanto de computación concurrente como computación paralela al mismo tiempo y por tanto también la computación asíncrona. En el caso de DX12, la asincronicidad se da al dividir las tareas en tres colas para su ejecución concurrente en los sombreadores (núcleos CUDA o procesadores de flujos) y que se elija cómo insertar su ejecución en la carga de trabajo de la tarjeta gráfica.

Argumentos sin mucho fundamento

amd_jkdy

El genio del usuario de Overclock.net básicamente ha asegurado, sin pruebas, que Time Spy favorece a las tarjetas gráficas Nvidia (cuando ha sido desarrollada junto a Intel, AMD y Nvidia). El argumento es genial, porque dice que «si estuvieran usando paralelismo para la computación asíncrona se vería que en Maxwell se sufriría una penalización de rendimiento, como ha admitido Nvidia en su libro blanco de la GTX 1080, y como se ha visto en Ashes of the Singularity».

Y elucubra que la computación asíncrona no está implementada para las tarjetas gráficas de AMD porque tendría una mejora de rendimiento en la línea de DOOM, cosa que es totalmente falsa porque se puede activar y desactivar mediante una opción de Time Spy versión profesional, y lo explico más adelante.

Antes ya le he desmontado su teoría conspiranoica, porque como he dicho, los controladores GeForce tienen desactivada la computación asíncrona para las gráficas Maxwell. Time Spy intenta enviar colas para su procesamiento paralelo, pero GeForce le dice que mejor las cosas en secuencia, que el paralelismo no le gusta.

Así pues, de ahí se saca que en Maxwell no haya impacto a los FPS en la prueba Time Spy, porque Ashes of the Singularity implementa el uso de un paralelismo simulado mediante los controladores (reasignando recursos para emular dos colas, una de gráficos y otra de cómputo), que sí pueden tener (y tienen) un impacto negativo en el rendimiento de las tarjetas.

El caso de DOOM

b6049acecacbcd316b0f75937f9126fb_doom

El usuario de Overclock.net también llega al extremo de decir que cómo es posible que en Vulkan se consiga una enorme mejora de rendimiento con la computación asíncrona y en Time Spy es mucho más modesta. Pues chico, eso es porque OpenGL en la arquitectura de GCN de AMD funciona fatal, y en la de Nvidia algo mejor, pero en general OpenGL funciona mal y no consigue sacar un buen rendimiento de las tarjetas gráficas.

La RX 480 tiene un rendimiento que muchas veces es bastante superior al de una GTX 970, pero en OpenGL en las pruebas de DOOM queda bastante por debajo. Sin embargo, al activar Vulkan queda muy por encima de la GTX 970. DOOM no tiene por ahora soporte para la computación asíncrona en las gráficas Pascal de Nvidia, y cuando la tenga seguro que aporta una mejora en la misma línea, aunque más modesta.

DOOM, 1080p, calidad ultra con FXAA, Vulkan
GTX 1080
138
139
GTX 970
82
82
RX 480 (8 GB)
73
98
OpenGL Vulkan

El problema histórico que ha tenido AMD es que sus tarjetas más potentes, bajo DirectX 11, han tenido problemas con la gestión de cargas de trabajo, dejando mucho más tiempo de inactividad que las tarjetas gráficas Nvidia. También debido a esos tiempos de inactividad las tarjetas de AMD salen beneficiadas porque en DirectX 12 hay más tiempos de inactividad para ir adelantando tareas de cómputo y copia, con lo que la mejora es muy sustancial en DX12.

O sea, la idea es que la arquitectura GCN no es buena en DX12, si no que es mala en DX11 y que las DirectX 12 permiten aprovechar todo su potencial. Debido a que en las tarjetas gráficas más lentas suele haber muchos menos tiempos de inactividad, la mejora de rendimiento bajo DX12 en ellas es inferior.

Volviendo a DOOM, pasa exactamente eso: la RX 480 en OpenGL debería rendir más que una GTX 970, pero como los controladores de AMD de OpenGL son malos, la mejora al activar la computación asíncrona es enorme, en torno a un 25 % de media. Además es que la discusión inicial del usuario relacionada con Maxwell se ha extrapolado al funcionamiento de Pascal, cuando por ejemplo en DOOM todavía no está implementada la computación asíncrona.

Así que, nuevamente, se vuelve a liar una polémica totalmente innecesaria (como la de las GTX 1080 modificadas para los críticos de hace unas semanas), y esto empieza a ser cansino. Noticias de fin de semana de un gran despropósito.