ikergarcia1996
Nuevo
- Registrado
- 8 Dic 2014
- Mensajes
- 30
- Puntos
- 0
- Edad
- 29
Hace algún tiempo que estoy viendo mucha desinformación sobre el tema DX12 y sobre que gráficas van mejor en esta API, en este post quiero explicar algunas cosas e intentar ayudar a toda esa gente que está entre comprar una gráfica AMD y Nvidia y no se decide. Además quizá sirva para que algún fanboy se informe un poco xD
Versión para los que no les gusta leer: :cafe:
Desde que se empezó a hablar de DirectX 12 hemos estado viendo gráficas como esta:
De hecho hemos visto gráficas muy similares en webs especializadas, aquí un ejemplo:
Viendo estas gráficas a la conclusión que cualquier persona llegaría es “Las gráficas AMD revientan a las gráficas Nvidia en DX12”, como veis la mejora de rendimiento es mucho mayor en la FuryX al usar DX12, seguramente muchos lleguen a preguntarse si la 980ti es compatible con DX12, ahora bien, los datos de la primera gráfica están sacados de esta otra:
¿Qué me decís ahora? La 980ti y la FuryX están a la par en DX12 hay 1fps de diferencia ¿Es mejor la FuryX en DX12 que la 980ti o simplemente existía un problema con el rendimiento en DX11 con la FuryX?
Este es un ejemplo muy exagerado, pero una instrucción perfecta para el post, porque de esto vamos a hablar. ¿Son mejores las gráficas AMD en DX12 que las Nvidia o rendían mal en DX11 y por eso la ganancia en DX12 es mayor?
Vamos a empezar por analizar el “overhead” ¿Qué es el overhead? Overhead significa “gastos generales” en nuestro caso la traducción más precisa sería “Gasto de recursos”, el overhead en tarjetas gráficas es el uso que realizan de la CPU, y las gráficas de AMD sufren un gran overhead en DX11 debido a sus drivers, vamos a comprobarlo y después explicaremos la causa.
Comprobarlo es muy sencillo, basta con realizar un benchmark de una gráfica AMD y una Nvidia, a continuación repetirlo con un procesador menos potente.
En este caso vamos a analizar la perdida de rendimiento de la 750ti y la 270X al usar un i3 respecto a usar un i7
Fuente: Digital Foundry.
FAR CRY 4:
RYSE:
COD ADVANCED WARFARE
Si alguien quiere ver más comparaciones aquí tiene un muy buen post sobre el overhead:
AMD vs Nvidia Overhead - overclock.net
Como veis la 270X se ve muchísimo más afectada que la 750ti al usar un procesador menos potente. ¿Por qué pasa esto? La clave son las “command-queue” es decir, las listas de comandos de DX11. Hablar sobre esto nos daría para escribir un libro, así que lo explicaré muy por encima. Las gráficas AMD cogen las llamas de dibujado a la API y las ponen en un solo hilo, esto hace que el rendimiento dependa mucho de las potencia mono hilo de nuestro procesador (curiosamente este ha sido siempre el punto débil de los procesadores de AMD, por lo que las gráficas AMD rinden mejor con procesadores intel que procesadores AMD) y en algunos juegos el procesador puede verse desbordado y tendríamos un pésimo rendimiento. Nvidia usa el multi-hilo, divide estas llamas en diferentes hilos, por lo que consigue un rendimiento mucho mayor y el overhead se ve drásticamente reducido.
Como antes vamos a comprobarlo, vamos a poner a la RX 480 y la GTX 1060 en TW3 olvidaos de fps o cualquier otra cosa, fijaros en el uso del procesador.
FUENTE: "https://youtu.be/uzyUVQHzDwk"
-Pero TW3 usa gameworks, no me lo creo… Ok, pues vamos a uno de los juegos más cpu dependientes que existen, Total war warhammer bajo DX11, ahora además vamos a usar la FuryX y la 980ti.
FUENTE: "https://youtu.be/ceCB5nR9g1c"
Como veis en ambos juegos la gráfica Nvidia está aprovechando todos los núcleos del procesador mucho mejor que la gráfica AMD, que está tirando de unos pocos núcleos.
¿Y por qué AMD no hace como Nvidia e implementa las listas de comandos multi-hilo? Por varias razones, la primera es porque no es sencillo, hace falta una gran inversión en I+D para implementar esto en los drivers, Nvidia se la pudo permitir, AMD no y optó por una implementación más sencilla, que además tiene una ventaja, pese a que pierdes rendimiento funciona bien en todos los juegos mientras que la opción de Nvidia depende mucho más de optimizaciones por drivers -¿Entonces por eso siempre decimos que las gráficas Nvidia son más dependientes de los drivers y por eso sacan siempre drivers cada vez que sale un juego? Exacto.
La segunda razón es porque la arquitectura AMD no está diseñada para esto.
Vale bien, ¿Pero esto no iba sobre DX12?, llevas media hora hablando de DX11.
Ahora viene la parte interesante, en DX12 gráficas AMD SI soportan las listas de comandos multi-hilo, la API permite usarlas con la arquitectura de AMD, de hecho la propia arquitectura estaba desde un principio pensada para trabajar con APIs como DX12. ¿Y qué pasa con las gráficas Nvidia? Absolutamente nada, ya las implementaban en DX11 y en DX12 siguen haciéndolo, para ellas no ha cambiado nada, en cambio las gráficas AMD se libran de un lastre que han soportado durante años y consiguen mejorar su rendimiento.
Por desgracia probar esto es más complicado, primero porque los juegos DX12 que tenemos ya sabéis como van la mayoría y segundo porque ningún programa de los que muestra información en pantalla funciona aún bajo DX12. Además pocas webs han hecho comparaciones de escalados de procesadors.
Por suerte he encontrado algunos benchmarks y Magia! Recordáis lo que pasaba con el i7 y el i3 en la 270X? Pues como veis eso queda solucionado bajo DX12
Entonces, las gráficas AMD ganan más rendimiento por que en DX11 estaban lastradas por el overhead y en DX12 puedes dar todo su potencial. Pues a mí me han contado que es porque las gráficas Nvidia no soportan el async compute ¿Qué pasa con el async?
Esto daría para otro post, así que solo le dedicaré un par de frases. Lo primero, el computo asíncrono ha sido ultra overhypeado, muchas veces se le ha atribuido la mejora de rendimiento cuando en realidad son otras características de la API las que lo están produciendo, como la reducción del overhead, segundo, solo se nota en juegos muy cpu dependientes y por último las gráficas Pascal también lo soportan.
Pruebas propias con la GTX 1080, async desactivado vs async activado en Time Spy
Que gráfica gana más rendimiento, que implementación es mejor y demás lo dejamos para otro día, solo nos interesa saber que no es algo demasiado relevante en lo que se refiere a mejoras en DX12 en la mayoría de los casos.
No te creo, dices eso por que tienes una gráfica Nvidia!!!
Ok, pues hazle caso a los desarrolladores de hitman: http://wccftech.com/async-compute-boosted-hitmans-performance-510-amd-cards-devs-super-hard-tune/
Saying that Multi-Engine (aka Async Compute) is the root of performance increases on Ashes between DX11 to DX12 on AMD is definitely not true. Most of the performance gains in AMDs case are due to CPU driver head reductions.
Como veís lo está diciendo claramente: " Decir que el computo asíncrono es la raíz del incremento de rendimiento entre DX11 y DX12 en las gráficas AMD es definitivamente falso". La mayoría de la mejora de rendimiento en el caso de AMD viene de la reducción del overhead".
Conclusión: Las gráficas AMD no están mejorando más que las Nvidia en DX12 por que tengan mejor soporte, lo están haciendo porque estaban lastradas en DX11 y ahora pueden dar su máximo potencial. ¿Qué puede que Nvidia o AMD tengan mejor soporte que la otra en agunas tecnologías? Sí, pero la diferencia de rendimiento por el momento es despreciable.
¿Entonces me compro la 480 o la 1060? Comprate la que te dé la gana y deja de preocuparte por DX12 y lo que va a pasar dentro de 10 años cuando tu gráfica no tire ni el buscaminas, ambas te van a ir igual de bien en DX12 fps arriba fps abajo, las dos soportan al 100% la API.
Pero y Doom? Que pasa con doom?
Ya estamos con doom otra vez? No existen más juegos? xD. En doom pasa exactamente lo mismo, las gráficas AMD no tenían implementado OpenGL 4.5 y lo tiraban con OpenGL 4.3, haciendo que su rendimiento fuese bastante malo, al meter vulkan esos problemas se solucionaron y las gráficas AMD pasaron a rendir lo que rendían, no es que sean la ostia en Vulkan y mejoren una burrada, es que en OpenGL iban como el culo.
Como veis las gráficas AMD ganan una burada de rendimiento, pero se quedan junto a sus equivalentes de Nvidia, es decir, donde deberían haber estado desde el principio.
Aunque no pasa lo mismo en todas las escenas, en algunas superan a sus equivalentes de Nvidia ¿Por qué? Es bastante gracioso ahora pasa justo al revés, los drivers de Nvidia solo dan soporte hasta la versión 1.0.8 de Vulkan mientras que las AMD dan soporte hasta la 1.0.17, esperemos que Nvidia solucione esto cuanto antes y de soporte a la última versión de Vulkan.
Zona spam: Si queréis agradecer el trabajo que me ha llevado hacer este post un like en el vídeo de arriba del todo no vendría mal :guiño:
He intentado ser lo más imparcial posible y reunir la mayor cantidad posible de información para hacer este post, si alguien cree que hay algo mal en el post (que suguro que lo habrá) o cree que alguna zona no es imparcial, que lo escriba en los comentarios para cambiarlo.
En compensación por el tochaco...
Versión para los que no les gusta leer: :cafe:
Desde que se empezó a hablar de DirectX 12 hemos estado viendo gráficas como esta:

De hecho hemos visto gráficas muy similares en webs especializadas, aquí un ejemplo:

Viendo estas gráficas a la conclusión que cualquier persona llegaría es “Las gráficas AMD revientan a las gráficas Nvidia en DX12”, como veis la mejora de rendimiento es mucho mayor en la FuryX al usar DX12, seguramente muchos lleguen a preguntarse si la 980ti es compatible con DX12, ahora bien, los datos de la primera gráfica están sacados de esta otra:

¿Qué me decís ahora? La 980ti y la FuryX están a la par en DX12 hay 1fps de diferencia ¿Es mejor la FuryX en DX12 que la 980ti o simplemente existía un problema con el rendimiento en DX11 con la FuryX?
Este es un ejemplo muy exagerado, pero una instrucción perfecta para el post, porque de esto vamos a hablar. ¿Son mejores las gráficas AMD en DX12 que las Nvidia o rendían mal en DX11 y por eso la ganancia en DX12 es mayor?
Vamos a empezar por analizar el “overhead” ¿Qué es el overhead? Overhead significa “gastos generales” en nuestro caso la traducción más precisa sería “Gasto de recursos”, el overhead en tarjetas gráficas es el uso que realizan de la CPU, y las gráficas de AMD sufren un gran overhead en DX11 debido a sus drivers, vamos a comprobarlo y después explicaremos la causa.
Comprobarlo es muy sencillo, basta con realizar un benchmark de una gráfica AMD y una Nvidia, a continuación repetirlo con un procesador menos potente.
En este caso vamos a analizar la perdida de rendimiento de la 750ti y la 270X al usar un i3 respecto a usar un i7
Fuente: Digital Foundry.
FAR CRY 4:


RYSE:


COD ADVANCED WARFARE


Si alguien quiere ver más comparaciones aquí tiene un muy buen post sobre el overhead:
AMD vs Nvidia Overhead - overclock.net


Como veis la 270X se ve muchísimo más afectada que la 750ti al usar un procesador menos potente. ¿Por qué pasa esto? La clave son las “command-queue” es decir, las listas de comandos de DX11. Hablar sobre esto nos daría para escribir un libro, así que lo explicaré muy por encima. Las gráficas AMD cogen las llamas de dibujado a la API y las ponen en un solo hilo, esto hace que el rendimiento dependa mucho de las potencia mono hilo de nuestro procesador (curiosamente este ha sido siempre el punto débil de los procesadores de AMD, por lo que las gráficas AMD rinden mejor con procesadores intel que procesadores AMD) y en algunos juegos el procesador puede verse desbordado y tendríamos un pésimo rendimiento. Nvidia usa el multi-hilo, divide estas llamas en diferentes hilos, por lo que consigue un rendimiento mucho mayor y el overhead se ve drásticamente reducido.
Como antes vamos a comprobarlo, vamos a poner a la RX 480 y la GTX 1060 en TW3 olvidaos de fps o cualquier otra cosa, fijaros en el uso del procesador.
FUENTE: "https://youtu.be/uzyUVQHzDwk"



-Pero TW3 usa gameworks, no me lo creo… Ok, pues vamos a uno de los juegos más cpu dependientes que existen, Total war warhammer bajo DX11, ahora además vamos a usar la FuryX y la 980ti.
FUENTE: "https://youtu.be/ceCB5nR9g1c"


Como veis en ambos juegos la gráfica Nvidia está aprovechando todos los núcleos del procesador mucho mejor que la gráfica AMD, que está tirando de unos pocos núcleos.
¿Y por qué AMD no hace como Nvidia e implementa las listas de comandos multi-hilo? Por varias razones, la primera es porque no es sencillo, hace falta una gran inversión en I+D para implementar esto en los drivers, Nvidia se la pudo permitir, AMD no y optó por una implementación más sencilla, que además tiene una ventaja, pese a que pierdes rendimiento funciona bien en todos los juegos mientras que la opción de Nvidia depende mucho más de optimizaciones por drivers -¿Entonces por eso siempre decimos que las gráficas Nvidia son más dependientes de los drivers y por eso sacan siempre drivers cada vez que sale un juego? Exacto.
La segunda razón es porque la arquitectura AMD no está diseñada para esto.
Vale bien, ¿Pero esto no iba sobre DX12?, llevas media hora hablando de DX11.
Ahora viene la parte interesante, en DX12 gráficas AMD SI soportan las listas de comandos multi-hilo, la API permite usarlas con la arquitectura de AMD, de hecho la propia arquitectura estaba desde un principio pensada para trabajar con APIs como DX12. ¿Y qué pasa con las gráficas Nvidia? Absolutamente nada, ya las implementaban en DX11 y en DX12 siguen haciéndolo, para ellas no ha cambiado nada, en cambio las gráficas AMD se libran de un lastre que han soportado durante años y consiguen mejorar su rendimiento.
Por desgracia probar esto es más complicado, primero porque los juegos DX12 que tenemos ya sabéis como van la mayoría y segundo porque ningún programa de los que muestra información en pantalla funciona aún bajo DX12. Además pocas webs han hecho comparaciones de escalados de procesadors.
Por suerte he encontrado algunos benchmarks y Magia! Recordáis lo que pasaba con el i7 y el i3 en la 270X? Pues como veis eso queda solucionado bajo DX12

Entonces, las gráficas AMD ganan más rendimiento por que en DX11 estaban lastradas por el overhead y en DX12 puedes dar todo su potencial. Pues a mí me han contado que es porque las gráficas Nvidia no soportan el async compute ¿Qué pasa con el async?
Esto daría para otro post, así que solo le dedicaré un par de frases. Lo primero, el computo asíncrono ha sido ultra overhypeado, muchas veces se le ha atribuido la mejora de rendimiento cuando en realidad son otras características de la API las que lo están produciendo, como la reducción del overhead, segundo, solo se nota en juegos muy cpu dependientes y por último las gráficas Pascal también lo soportan.

Pruebas propias con la GTX 1080, async desactivado vs async activado en Time Spy

Que gráfica gana más rendimiento, que implementación es mejor y demás lo dejamos para otro día, solo nos interesa saber que no es algo demasiado relevante en lo que se refiere a mejoras en DX12 en la mayoría de los casos.
No te creo, dices eso por que tienes una gráfica Nvidia!!!
Ok, pues hazle caso a los desarrolladores de hitman: http://wccftech.com/async-compute-boosted-hitmans-performance-510-amd-cards-devs-super-hard-tune/

Saying that Multi-Engine (aka Async Compute) is the root of performance increases on Ashes between DX11 to DX12 on AMD is definitely not true. Most of the performance gains in AMDs case are due to CPU driver head reductions.
Como veís lo está diciendo claramente: " Decir que el computo asíncrono es la raíz del incremento de rendimiento entre DX11 y DX12 en las gráficas AMD es definitivamente falso". La mayoría de la mejora de rendimiento en el caso de AMD viene de la reducción del overhead".
Conclusión: Las gráficas AMD no están mejorando más que las Nvidia en DX12 por que tengan mejor soporte, lo están haciendo porque estaban lastradas en DX11 y ahora pueden dar su máximo potencial. ¿Qué puede que Nvidia o AMD tengan mejor soporte que la otra en agunas tecnologías? Sí, pero la diferencia de rendimiento por el momento es despreciable.
¿Entonces me compro la 480 o la 1060? Comprate la que te dé la gana y deja de preocuparte por DX12 y lo que va a pasar dentro de 10 años cuando tu gráfica no tire ni el buscaminas, ambas te van a ir igual de bien en DX12 fps arriba fps abajo, las dos soportan al 100% la API.
Pero y Doom? Que pasa con doom?
Ya estamos con doom otra vez? No existen más juegos? xD. En doom pasa exactamente lo mismo, las gráficas AMD no tenían implementado OpenGL 4.5 y lo tiraban con OpenGL 4.3, haciendo que su rendimiento fuese bastante malo, al meter vulkan esos problemas se solucionaron y las gráficas AMD pasaron a rendir lo que rendían, no es que sean la ostia en Vulkan y mejoren una burrada, es que en OpenGL iban como el culo.


Como veis las gráficas AMD ganan una burada de rendimiento, pero se quedan junto a sus equivalentes de Nvidia, es decir, donde deberían haber estado desde el principio.
Aunque no pasa lo mismo en todas las escenas, en algunas superan a sus equivalentes de Nvidia ¿Por qué? Es bastante gracioso ahora pasa justo al revés, los drivers de Nvidia solo dan soporte hasta la versión 1.0.8 de Vulkan mientras que las AMD dan soporte hasta la 1.0.17, esperemos que Nvidia solucione esto cuanto antes y de soporte a la última versión de Vulkan.

Zona spam: Si queréis agradecer el trabajo que me ha llevado hacer este post un like en el vídeo de arriba del todo no vendría mal :guiño:
He intentado ser lo más imparcial posible y reunir la mayor cantidad posible de información para hacer este post, si alguien cree que hay algo mal en el post (que suguro que lo habrá) o cree que alguna zona no es imparcial, que lo escriba en los comentarios para cambiarlo.
En compensación por el tochaco...
