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

Voy a responder los comentarios de ambos bandos uno por uno, en realidad yo estoy en modo palomitero pero creo que tengo que aclarar ciertas cosas.

popcorn0513

Comentario#1:

Ademas ya me diras tu de que sirve usar la esram para eso sise trata de un calculo de potencia bruta de fisicas

En todo caso usando la esram podrian usar hipoteticamente un ancho de banda similar al gddr5 de ps4 pero seguirian en las mismas, situacion de grave desventaja de potencia real, dos tercios la de ps4 en el caso de gpgpu.

Y Herebus dice que para cuando se aprovechen los 8 Aces por CU la cosa va a ponerse abrumadoramente superior en ps4, que ademas cuenta con un bus que comunica directamente la cpu con la gpu saltandose hasta las caches L2.

Serviría por el simple hecho de que estamos hablando de un tipo de proceso que funciona mejor en un Stream Processor/Procesador de Caudal y como su nombre indica su rendimiento depende del caudal de datos (ancho de banda) que le llegue y ya sabemos que la ESRAM tiene un mayor ancho de banda. El problema es que las funciones GPGPU son funciones donde la GPU funciona como procesador de apoyo a la CPU (es decir, la GPU tiene que devolverle el resultado a la CPU en un tiempo dado y escribirlo en una memoria a la que pueda acceder la CPU sin problemas. Dado que la ESRAM es un espacio de memoria en el que  la CPU tiene un acceso pauperrimo a la misma y contra-indicado entonces para este tipo de operaciones se utiliza la DDR3.

En cuanto a los ACEs que dice Herebus, no es que la cosa se vaya a poner abrumadoramente superior tampoco, pero va a aumentar aún más la diferencia por un motivo muy simple. Los ACEs son los planificadores de la GPU y el aumentar el número de estos aumenta el número de hilos que esta puede gestionar por lo que se gana un tiempo en el renderizado. ¿Como? Sí entendéis el concepto de la división del trabajo lo entenderéis sin problemas. Ah, y hubiese sido mejor 2/3 de potencia de PS4 que no lo que tenemos ahora en Xbox One.

En todo caso sobre los ACEs ya profundizare más adelante.

Comentario#2:

Parece ser que podriqn usarse 3 tecnicas:

  • Una pausa por frame para dedicar algunos milisegundos todos los CU para una tarea muy compleja como podria ser la iluminacion SVOGI.
  • El rendimiento sacado de la nada mediante Aces para apoyar a la cpu liberandola de algunos procesos y que deje de ser un cuello de botella. Esto es, sin perder rendimiento gráfico (un Win-Win)
  • Dedicar un numero de CUs permanentemente a una tarea pesada. Por ejemplo reservar uno o dos para fisicas, que a veces no se calculan a parte de colisiones basicas, pero otras veces la carga es tremenda, asi que es mejor reservarlos. Otro ejemplo es uno mas reaervado para pocos procesos muy pesados que nuca procesaría la cpu.

Pues yo te digo que erras y mucho con el tema del SVOGI.

En primer lugar, el SVOGI ha sido descartado por el hecho que pide una potencia de computo brutal para funcionar, hasta el punto en que Sony no recomienda su uso en PS4 y recomienda una variación sin los Octrees en PS4.

SVCT

 

El coste en computación más alto en utilizar SVOGI es la generación del Octree correspondiente y su posterior recorrido por lo que es normal el hecho de eliminarlo de la ecuación y aún así el rendimiento en PS4 tras eliminar el Octree es el siguiente:

ResultsHablamos de una media de 26ms de media por fotograma en PS4 y eso que le hemos quitado la generación y el recorrido del Octree. Pero es que tampoco tenemos que ir directamente a Sony, el propio Tim Sweeney que es el arquitecto jefe del Unreal Engine 4 dijo que habían descartado el SVOGI por el hecho de ser demasiado costoso en cuanto a computación. Al fin y al cabo la primera Elemental Demo del UE4 funcionaba en una GPU de Nvidia con 3 TFLOPS de potencia a 1920×1080 de resolución, PS4 tiene una potencia de 1.8 TFLOPS.

Pero todo esto no es culpa de Sony sino de Epic Games que calculo mal las especificaciones de la actual generación en su día:

samaritanprocessingrel3yqn

Vamos, que Epic Games se esperaba que PS4 y Xbox One tuviesen una potencia de 2.5 TFLOPS y al final cuando se han encontrado que las consolas no han tenido tanta potencia han tenido que recortar cosas o sustituirlas por algoritmos que hacen lo mismo de forma menos precisa pero que necesitan menos potencia de calculo para funcionar.

En cuanto a los otros dos puntos, dejame decirte que los ACEs no son programables ni tienes acceso a ellos, tu no puedes planificar reservar si utilizar una CU para una cosa o para la otra. Esto no es PS3 donde el PPE se utilizaba para planificar los SPE, aquí lo que tienes es la posibilidad de crear varias listas de comandos adicionales (para computación o gráficos) para que cuando una tarea se quede parada la GPU pueda saltar a otra y el hecho de aumentar el número de listas tiene como objetivo reducir el número de tareas de las mismas. Lo he dicho antes, para entenderlo a la perfección se ha de tener en cuenta la “División del Trabajo“. Pero para explicarlo mejor dire que si tu colocas un número de operarios con una lista de trabajos concreta si esa lista es larga es posible que si una de las tareas de principio de la lista se bloquea y no hay más operarios entonces las que vienen a continuación puede que no se realicen, si tu en cambio repartes las tareas entre varios operarios y con listas más pequeñas se gana eficiencia. Pero en ningún momento puedes decir tantos CUs para esto, tantos CUs para aquello, lo que si que puedes hacer es “Tantas listas de comandos para esto, tantas listas de comandos para aquello”.

Comentario#3:

Nunca diré que la xbox one es superior a la PS4, pero os bañais demasiado criticando una solucion de MS, que tmb dá sus reditos.

Supongo que si MS hubiese sabido que iba a bajar tanto el precio de la gddr5 lo hubiese hecho, pero ya no se puede hacer nada. No le deis tantas vueltas.

No es un tema del coste de la GDDR5, es un tema de que los arquitectos de la consola se plantearon de esa manera el esquema de memoria del sistema desde el principio. El motivo por el cual PS4 es más atractiva para los desarrolladores es por el hecho que suele haber una disparidad entre los ingenieros de hardware y los de software acerca de su sistema ideal. En Sony colocaron a un ingeniero de software que hizo un sistema mucho más agradable para estos y en Microsoft ha habido la disparidad donde los ingenieros de hardware no han trabajado codo con codo con los de software a la hora de diseñar el sistema. Y como bien dices, ya no se puede hacer nada, pero tampoco esta de mal el saber como afecta el sistema de memoria al rendimiento de la consola.

De todas formas, en la practica, con las tiles y demás tecnicas que están a la vuelta de la esquina, llegar a 1080p/30 o 1080/60 será facil para las dos, y hasta 4K no van a ni intentarlo.

Lo de los Tiles ocurre única y llanamente cuando no tienes la suficiente memoria como para almacenar el búfer de imagen. No es una técnica nueva y ya la habíamos visto en Xbox 360 y PS3. En el caso de la consola de Microsoft era porque los 10MB de eDRAM no eran suficientes para ciertas resoluciones y en el caso de PS3 se utilizaban tiles muy pequeños para que cupieran en la memoria local de los SPE del Cell y que estos aplicarán efectos de post-procesado y liberaran a la GPU de dicha tarea. Lo que la gente no tiene en cuenta del Tiling es que el hecho de mover datos de una memoria es un tedio para los desarrolladores. Ellos lo que quieren es una ÚNICA memoria que sea rapida y densa, no quieren un pozo de memoria rápido pero poco denso por un lado y otro muy denso pero lento por el otro.

En el caso de Xbox One han colocado los Move Engines por un motivo, en Xbox 360 las operaciones de lectura y escritura de la GDDR3 a la eDRAM y viceversa eran llevadas por la GPU. Ahora con los Move Engines deberían ser llevadas por estos pero esto añade una complicación adicional al código que no existiría en una configuración de memoria realmente unificada como la que tuvo la primera Xbox y tiene PS4.

Con la xbox360 nadie montó una plataforma anti paridad oficial contra las compañias xD A la gente se le vá de las manos.
Hemos visto como más del 50% de los juegos multi van mejor en ps4 y la gente aún dice que hay paridad pagada por MS. Yo flipo. Los desarrolladores hacen lo que quieren con sus juegos.
Nosotros solo decidimos si lo comrpamos o no. Estáis convirtiendo(No tú Urian xD ) el placer de jugar en un salsa rosa cualquiera. Pillas una web y solo leemos mierda que se alimenta de mierda.

Yo puedo jugar a cualquier consola independientemente de la potencia que tenga mientras el juego que tenga delante sea bueno. Yo hace tiempo que paso olímpicamente de ciertos entornos que los considero completamente tóxicos.

Llevamos mas de un año escuchando la cantinela de que la PS4 es mas potente que la XBO. En algun momento deberian dejar de rallar con eso. Solo crea rencillas. Los que se han comprado la XBO lo hacen por sus juegos, no porque sean estupidos o fanboys incoscientes(que de todo habrá en los dos bandos).

NO generaliceis tanto.

El articulo está bien Urian, y muestra la realidad de las dos GPU. Nada que reprocharte. Los numeros frios hablan y hablan con claridad. Faltaría más. Es solo la actitud de algunos en los comentarios que siempre tratan de hacer leña del arbol caido, hablando de Win Win y metiendo mierda siempre, y regodeandose en la mierda sacada. Eso es lo que me llega a escamar. Nunca he visto eso en otras generaciones. Gente relamiendose en una superioridad tecnica, cual onanista al ver su reflejo xD
Y eso que tienen ahí el PC que dá más placer…

Pero es que es la cantinela de los Sony Retards, precisamente yo hace tiempo que los cale y son los más fáciles de calar por el hecho que la diferencia entre el fanboy de Nintendo y Microsoft suele decirte sin tapujos que le gusta su marca y punto, en cambio el fanboy de Sony va con un tufo de falso imparcial que tira para atrás. Cuando PS2 vendía en el mercado de masas y el shovelware no paraba de salir era cojonudo, cuando con Wii ocurrió lo mismo entonces dejaron de comer patatas para escupir caviar y volverse los heraldos del juascorismo más rancio pero alto no hablemos de comparaciones técnicas de juego multiplataforma en Xbox 360 mientras nos hacían comer con patatas la superioridad de los exclusivos de PS3 gracias al fantastuoso Cell. ¿En la actual? Ya sabemos lo que ocurre en la actual generación.

Nadie, absolutamente nadie es imparcial desde el momento en que por preferencias a ti te puede gustar más un color u otro. Quien os diga en cualquier tema que él o ella es imparcial os esta mintiendo descaradamente y yo lo digo claramente, yo no soy imparcial desde el momento en que tengo mis preferencias forjadas con el tiempo y la experiencia de la vida.

Me gustaría que hablases aún así de por qué en el estudio de Ubi hablan de que programarón a bajo nivel en PS4 y de qué hiceron para tener ese rendimiento y por qué no dicen nada de como sacaron esos datos en XBO. Será que teines razón en que no hay bajo nivel en el desarrollo de XBO? No se dijo(creo recordar que el desarrollador de Trials) que habia una API que ya dejaba meter mano a nivel “metal”? (aunque no le dió tiempo a usarla)

Tan dificil es sacar rendimiento con la API de XBO? Mejorará con DX12 o la 11.3? (aunque no sea a nivel de PS4, ya que es más potente.)

Se le llama API de bajo nivel cuando no hay un controlador de software por el medio traduciendo los comandos para que una GPU pueda entenderlo. En PC las APIs de alto nivel tienen sentido por el hecho de que no solo cada fabricante sino que cada arquitectura habla su idioma y el controlador de cada GPU es una especie de piedra roseta para que la GPU entienda los comandos del juego. Cuando desarrollas en PC tu desarrollas para una abstracción general de lo que es una GPU con unas carácteristicas genéricas.

¿Pero que ocurre cuando tu sistema no tiene variaciones en la configuración del hardware? Pues que puedes enviar directamente los comandos a la GPU sin que haya un controlador por el medio y reducir la sobrecarga de tiempo en el renderizado y no solo eso, puedes trucar la API para que aproveche al 100% la funcionalidad de la GPU del sistema. Y he aquí el quid de la cuestión en el caso de Xbox One, su API es Direct3D 11.2 pero dado que el sistema tiene algunas carácteristicas concretas se le ha añadido una serie de elementos a la API que en PC se añadiran en DX12:

De esto ya hable en su día. En todo caso, el problema de la sobrecarga de tiempo esta en PC por dos motivos:

  • El Direct3D en PC solo funciona con dos núcleos como mucho por lo que no puedes repartir el envió de datos de CPU a GPU entre diversos núcleos.
  • La existencia de un controlador.

La gente piensa que Xbox One es la que se va a ver beneficiada con el DX12, más bien no y no lo digo yo sino el propio Spencer:

SpencerDX12

SpencerFail

 

No será DX12 lo que dará mayor capacidad visual a los futuros juegos de la consola sino el conocimiento de los desarrolladores del sistema con el paso del tiempo. Algo que ocurre con todos los sistemas.

En fin, termino ya que el post se ha hecho muy largo.

Anuncios