Bailarinas, GPGPU y los problemas arquitecturales de Xbox One y Wii U

Comentario original:

Puede que te guste este hilo

http://zonaforo.meristation.com/topic/2264666/?p=41954848#entry41954848

Sumamente interesante, hace días que lo quiero comentar ya que demuestra entre otras cosas que los que decíamos que la ESRAM de Xbox One es un parche por el hecho que la DDR3 no da el suficiente ancho de banda para lo que es la GPU de Xbox One. Las diapositivas más interesantes de la presentacíón son estas:

GPGPUCloth1

Se trata de una prueba de rendimiento para el cálculo de las físicas de la ropa. El CBEA (la CPU de PS3) parte con ventaja por el hecho de que las unidades SPE están sobretodo optimizadas para este tipo de trabajo, Xbox 360 que pese a tener tres núcleos de proposito general en contra de uno de PS3 es mucho menos potente para este tipo de tareas y de ahí que saque solo 34 bailarinas en escena,¿Cuantas sacaría Wii U? Pues dado que su CPU es de naturaleza similar a la de Xbox 360 pero funcionando casi a 1/3 de la frecuencia se entiende que la gente de Ubi Soft Montpellier no hayan querido hacer leña del árbol caído.

¿Pero que ocurre cuando entran en escena las GPUs? Pues que el rendimiento aumenta de mala manera:

GPGPUCloth2

Ahora bien, lo que llama la atención es la diferencia de rendimiento entre Xbox One y PlayStation 4, teniendo en cuenta que ambas son GPUs bajo la misma arquitectura y una funcionando a 1.31 TFLOPS de potencia y la otra a 1.84 TFLOPS pues no cuadra mucho la diferencia de rendimiento por lo que tiene que haber un cuello de botella enorme y todos sabemos cual es: La configuración de memoria de Xbox One. Y es que el benchmark de marras no esta optimizado para utilizar la ESRAM y es la demostración de que dicha memoria interna se añadió por el hecho de que la DDR3 escogida como memoria principal es un cuello de botella enorme.

En realidad la conclusión no es mía sino que se puede encontrar de un forista de Beyond3D y os la traduzco ya que es muy buena explicación de lo que ocurre realmente:

PS4 y Xbox One tienen ambas la misma generación de la arquitectura GCN. La latencia en la memoria principal de la X1 es menor, pero la latencia no es importante en esta prueba de rendimiento (como se especifica en la presentación). No parece que que la ERAM sea utilizada (o posiblemente no pueda ser utilizada) en acelerar la carga de trabajo. Observando la memoria principal:

PS4: 176 GB/s; 1.84 TF; 95.65 GB/TF
X1: 68 GB/s; 1.31 TF; 51.91 GB/TF

X1 GB/TF / PS4 GB/TF = 51.91 / 95.65 = 0.54

En otras palabras, X1 tiene 0.54 al ancho de banda de la memoria principal por FLOP que la PS4 si estás trabajando fuera de ese pequeño pozo de ESRAM. Así que el ancho de banda de la memoria principal ha limitado la prueba de rendimiento. Dado que son arquitecturas idénticas deberíamos esperar que la PS4 saque un rendimiento muy por encima que la  X1. Incluso más allá que su diferencia FLOPS. Hasta  unas 1.84 veces en términos de rendimiento/TF. ¿Como se compara esto? ¿Es realmente malo?

Prueba de rendimiento de las bailarinas, 5 ms de tiempo de computación via GPU:

PS4: 1600 bailarinas / (1.84 TF/s / 200) = 1600 bailarinas / 9.2 GF = 173.91 bailarinas/GF

X1: 830 bailarinas/ (1.31 TF/s / 200) = 830 bailarinas / 6.55 GF = 126.72 bailarinas/gigaflop

126.72 / 173.91 = 0.73

Si, esto es malo, la X1 esta funcionando solo al 73% de la eficiencia de PS4 en este test, significando que la PS4 rinde un 37% más rápida por FLOP.

Todo esto hace que resulten patéticos todos los intentos de defender la configuración de memoria de la Xbox One que se pueden encontrar por internet ya que su ancho de banda es el 54% de lo que debería ser para no tener esa desventaja del 37%. Obviamente los de siempre están bien callados y es que la evidencia es incuestionable  y todo este tiempo les hemos visto hablar de fantasias desde otros foros pero no han demostrado ni una. El hecho que haya salido esta presentación con estos datos tiene que significar un enorme sopapo por parte de la realidad a ciertos elementos que llevan ya mucho tiempo mintiendo descaradamente.

¿Y que hay de Wii U? ¿Como se comportaría? Teniendo en cuenta que la GPU tiene una potencia de 0.176 GFLOPS en lo que a potencia de cálculo se refiere no creo que sea muy útil ya que podría acabar afectando los gráficos, claro esta que el problema es que no se puede hacer computación+gráficos de forma efectiva en la GPU de Wii U y aquí lo explican a la perfección:

La arquitectura VLIW4 de Cayman fue la primera anunciada en tener dispatch asincrono, lo cual es lo que da la opción de que la GPU ejecute más de un kernel al mismo tiempo y la habilidad para que más de hilo de la CPU envie comandos a su propio kernel de computación.

La arquitectura de la GPU de Wii U es de la serie RV7xx, algo que ya comente en su día con pruebas para dolor de ciertos personajes de internet. Esto se traduce en que su chip es de la serie 4000 y Cayman es el chip de gama alta de la serie 6000 de AMD, tened esto en cuenta para lo que viene a continuación.

Hacer funcionar la computación en un procesador más viejo que Cayman requiere un cambió de contexto en la GPU, basicamente limpiaro escribir de nuevo buena parte del contexto del chip y re-inicializarlo en modo computación por un momento, entonces hacer otra limpieza y reiniciarlo para gráficos. Las latencias para esta operación son brutales.

Poder cambiar de contexto significa que la GPU puede parar un contexto, coger otro y retomar el primero sin perdida de rendimiento y para ello no esta pensada la GPU de Wii U pero tampoco lo esta la GPU de Xbox 360 ni la de PS3, de ahí a que la gente de Ubi Soft Montpellier no hayan puesto dichas GPUs dando los resultados via computación por GPU de Xbox 360, PS3 y Wii U en este prueba.

Anuncios