Blog Personal.

Uncategorized

DLSS 2.0, Arrays Sistólicos y el fúturo de las GPUs. (Feedback II)

Podéis comentar esta entrada, pero no haré Feedback del Feedback para evitar caer en un circulo vicioso.

Comentario#1:

Gracias por responder.
Lo que sigo sin entender es si los tensor cores son capaces de codificar video ( deben de serlo cuando tienen acceso directo al buffer de video para poder reescalar las imágenes), ¿Qué sentido tiene que AMD coloque sus arrays sistolicos en otra parte?

Si no recuerdo mal, podrían usarse para cosas como el raytracing del audio que tanto presume Sony, pero supongo que con los de nvidea también se podría, no?

¿Podrías comentar algún uso que le puedan dar a los de AMD que no se pueda hacer con los de nvidea?

La codificación y descodificación de video hace tiempo que no es realizada en las Compute Units de la GPU sino que utilizan unidades especializadas que realizan ese trabajo en paralelo y que ocupan un porcentaje del área de la GPU muy pequeño pero no son lo que es la GPU propiamente dicho sino que son procesadores dentro de la GPU, los cuales tienen acceso a la misma área de memoria externa que lo que AMD llama unidad GFX que es el renderizador, están físicamente dentro de la GPU ya que esta es un SoC propiamente dicho pero funcionan en paralelo y completamente a su aire.

Los aceleradores suelen ser:

  • Unidad de Codificación de Vídeo: Toma varios búfers de imagen sucesivos y los transforma en un vídeo de un formato concreto.
  • Unidad de Descodificación de Vídeo: Es la unidad encargada de reproducir vídeo a tiempo real, cuando estas viendo una película es esta la unidad que trabaja.
  • DMA: En las GPUs dedicadas de PC es la unidad que hace de puente entre la GPU y la RAM principal del sistema a través del puerto PCI Express.
  • Generador de Video/Adaptador de Pantalla: Es la unidad que toma el búfer de imagen final y lo envía a la salida de vídeo.

¿Que ha hecho AMD? Ha añadido arrays sistólicos al VCN que agrupa las Unidades de Codificación y Descodificación de vídeo pero hay que tener en cuenta que los arrays sistólicos no son un tipo de procesador sino un tipo de unidad y que el VCN no es programable, sino que lo que hace es ejecutar una serie de algoritmos fijos para codificar y descodificar video y en algunos casos incluso realizar algunos algoritmos adicionales pero no es una unidad programable, tiene acceso a la RAM de la GPU porque necesita tener acceso al búfer de imagen pero al contrario que las «Tensor Cores» que son unidades dentro del propio SM/CU y a los que un programa «shader» tiene acceso como el resto de unidades para hacer un programa tu no tienes acceso en el caso del Array Sistólico en el VCN que es utilizado por dicha unidad para codificar y descodificar mucho más rápido.

¿Y entonces solo sirve para eso? No, no se si sabréis que hay televisores que utilizan la «IA» para realizar algoritmos de super-resolución o de interpolación de fotogramas (fotogramas extras) pues la idea del VCN con arrays sistólicos viene de ahí y permite hacer esas cosas. Pero desgraciadamente no podemos sentarnos a utilizar los arrays sistolicos de la unidad VCN, aparte que están muy alejados de las Compute Units como para ser útiles de esa manera.

En cuanto al audio, no intervienen ese tipo de unidades absolutamente para nada, al menos que yo tenga constancía pero no lo puedo afirmar ni negar.

Ya es tarde para que los puedan cambiar para las nuevas consolas de Sony y MS, y para la primera tanda de tarjetas gráficas de AMD, pero como comentaste, probablemente en las versiones mejoradas de las consolas pueden añadirlos, y por retrocompatibilidad no pueden quitar los que ya han puesto.

Por mi parte espero que se frene ya esa «carrera» por tener resoluciones cada vez más altas, con el HD /full HD se ve de lujo, y no que parece que se volvieron locos con sacar las revisiones para las 4k,y lo siguiente será los 8k.

El DLSS 2.0 en las Turing no esta teniendo problemas y no creo que su equivalente vaya a tener problemas por las mismas razones, pero para las iteraciones mejoradas de las consolas que están por llegar aún faltan años, así que calma que aún falta un tiempo y disfrutad del momento.

Comentario#2:

Hablas de una ps5 pro o xbox xl, pero no de una hipotética swicth pro dlls2, ya te lo comenté en entradas anteriores, es difícil añadir estos arrays sistolicos en swicth? Si se pudiera se podrían sacar resoluciones 720p o menores(se da mucho en swicth) y que se reescalaran a 4k o 2k o mínimo 1080p, incluso juegos que ya hay mediante parche? Se verían mejor que una ps5 pro? Sería tremendo una portátil que demuestre tal potencia!!!!!!!

Bueno, porque en realidad de Switch 2 no sabemos apenás nada por no decir casi nada y lo poco que sabemos infiere de una diapositiva de Nvidia donde sabemos que hay una versión recortada del Tegra Orin llamada «Orin S» con un consumo de 15W que sería ideal para un sistema al estilo Switch en un futuro.

¿Y cual es el problema? El tiempo de generar la imagen a mayor resolución depende de la resolución de salida y la cantidad de «Tensor Cores» en la GPU, no lo digo yo, lo dice la propia Nvidia.

Una RTX 2060 Super (la más baja en el gráfico) alcanza los 7.2 TFLOPS vía núcleos CUDA, como hay una correlación de 8:1 entre las unidades Tensor y las unidades CUDA (FP32) esto son unos 57.6 TFLOPS en FP16 y unos 115.2 en Int8.

¿En que se traduce esto? Fijaos que la cifra del Orin-S son 36 en Int8. Es una cifra que es 1/3 aproximadamente y por tanto el tiempo sería 3 veces más alto para aplicar el mismo algoritmo. La pregunta es si el DLSS 2.0 va a ser lo suficientemente rápido en milisegundos en el Orin S si este termina en la Switch 2.

En realidad a mi me preocupa otro tema que es el ancho de banda, la LPDDR5 es sumamente lenta para alcanzar ciertas velocidades de reloj y nadie ha salido con una memoria para dispositivos portatiles con un ratio de pJ/bit lo suficientemente bajo como para construir sistemas con los anchos de banda de la actual generación de consolas, pero eso es otro tema distinto.

Comentario#3:

Después de ver el video, soy yo o incluso desde 540p reescalando a 1080p, se ve incluso mejor que 1080p nativos??? Increíble todos los fps extras que se consiguen, esto es un salto gráfico exponencial altísimo!!!!!

El sistema en realidad te engaña, a tu cerebro le parece suficientemente buena lo que «imagina» la GPU utilizando la re-construcción por IA, da igual que matematicamente o visualmente no sea preciso.

¿El motivo? Nuestro cerebro nos engaña por supervivencia.

Comentario#4:

Urian estas bastante confundido en el tema de Ray Tracing XD, me extendere un poquito mas, primero estas usando mal los término, Ray Tracing en tiempo real no existe, todo el Ray Tracing es en tiempo real, este termino dentro del mundo de la programacion, se utiliza para cuando una tecnica es dinamica y no Backed, el termino seria Ray Tracing completo y Ray Tracing hibrido:

1)Todos los Motores y juegos que estan implementado Ray Tracing estan implementando Patch Tracing, la primer version de Ray Tracing sin samples, se dejo de usar en ambitos de fotografías y peliculas desde hace décadas, todas las implementaciones actuales son Patch Tracing, esto debe de quedar claro.

2)El Patch Tracing funciona por Samples y pixel, Samples es lo mismo que rayo, en el Patch Tracing por cada pixel se lanzan rayos de manera ilimitada,el resultados de la muestras de los rayos se compara para tener el valor mas exacto del resultado de intersecciones de ese pixel, un valor bajo puede generar un pixel inacabado lo que se conoce como ruido, pero esto depende de la complejidad de la escena, muchos pixeles con pocas muestra se eliminara el ruido o otros tardaran mas, si tu pones hace una prueba en Blender miras como ciertas partes de la imagen se les quita el ruido antes y otras tardan mas.

3) Hay 2 Formas de muestrear en Patch Tracing:

– Ilimitada, esta se usa en películas o fotografia, y es la más pesada, la imagen se deja renderizando o sampleando, hasta que al creador el resultado le parezca bueno y no vea ruido, en una escena compleja en ciertas luces, pueden ser hasta 50,000 Samples por pixel, 50,000 rayos por cada pixel lo que es una burrada bestial, pero en películas se usa granjas de CPU o GPU que pueden tardar min o hora renderizando una imagen.

– Limitado, se esta usando en juegos, el desarrollador limita el numero de Samples/rayos por cada pixel, debido a la potencia actual de GPU, generalmente se usa de 1 a 5 rayos por pixel, es un muestreo demasiado bajo y esto genera un ruido muy fuerte, pero en realidad es donde surge la magia, de hacer posible el Ray Tracing en juegos, luego se aplica el denoising y magia completada.

4) Para entender el Patch Tracing hibrido, hay que entender como funciona la iluminación y como se dividse, iluminacion de una escena se divide en efectos principales y sub principales:

– iluminacion Directa, subdivida, luces direccionales(sol/luna),omnidireccionales(cielo), spotligth pointlight, emisivas etc.

-Sombras, suaves, conctact, penumbra etc.

-reflejos, traslucidos, speculares etc

– Oclusión Ambiental.

5) Lo que se esta haciendo en juegos es sencillos, se toma cualquier efecto de los mencionados y se calcula con ray Tracing ejemplo, quiero iluminación Indirecta (global), se elige para que fuente de luz quiero GI con Ray Tracing, para luz direccional, sol y luna o para todas las fuente de luz directa, solo ray Tracing para sombras etc

6) Aunque sea hibrido y solo elijas 1 efecto, ese efecto se samplea por cada pixel, al usar bajo(1-5) samples genera ruido y siempre se necita denoising, si tendras un charco con un reflejo lleno de ruido por mucho que sea hibrido y solo se aplique a a reflejos, una sombra llena de ruido, oclusion con ruido etc Dice(battlefield 5)usa denoising para los reflejos, los de 4game(Metro) denoising para la Iluminación Global,y asi todos los juegos que han salido.Es imposible hacer Patch Tracing en juegos con bajos simples sin eliminacion de ruido y todos los motores actuales tienen su solucion de denoising sin IA, si no por shaders.

Cuando me refiero a tiempo real es que sea lo suficientemente rápido a la hora de resolver la escena como para ser útil en videojuegos. Reconozco mi error semántico pero en general dentro de lo que es el contexto de los videojuegos es que todo el renderizado se haga en un tiempo de menos de 33ms si la escena va a 30fps y de 16ms si va a 60fps.

En todo caso en Nvidia son unos trileros con el tema del Path Tracing ya que lo que vamos a ver en los juegos vía el uso de DirectX Raytracing no es Path Tracing híbrido sino Ray Tracing hibrido. ¿Y por qué digo que son unos trileros? Pues porque el factor diferencial con AMD son los Tensor Cores y uso del Path Tracing significa añadir ruido a la imagen y esto sirve para justificar los Tensor Cores haciendo el Denoising.

¿Y por qué cogen Minecraft ahora y/o Quake 2 en su día? Pues porque el tiempo de realizar el Denoising es tan alto que requieren que el juego sea gráficamente simple y que la GPU pueda renderizarlo lo más rápido posible para aplicar el Denoising. ¿Me lo saco de la chistera? Pues no, el tiempo en realizar el Denoising en el RTX Minecraft es casi la mitad del tiempo.

Pero el Ray Tracing hibrido en los juegos no tiene nada que ver con el Path Tracing porque no es el camino que ha tomado Microsoft para realizar el DXR, por favor echadle un vistazo al pipeline estandar del DXR y decidme donde esta la étapa de Denoising en todo el proceso.

¿Sabéis porque el RDNA 2 no tiene unidades Tensor en las Compute Units? Pues porque Microsoft no lo ha hecho imprescindible en el estándar DXR que van a utilizar y AMD ha tirado por el mínimo mientras que Nvidia han estado haciendo Lobby para que los Tensor Cores formen parte imprescindible del estandar.

Es por ello que pienso que el RTX Minecraft y el Minecraft con Ray Tracing de la Xbox Series X son dos cosas distintos pese a que cierto personaje en los comentarios este erre que erre con que no y dice que son lo mismo pero el Denoising en RDNA2 tiene una enorme desventaja pq el ratio de cálculo en FP16 es casi una orden de magnitud menor . Pero la realidad es que tu puedes crear una implementación de Ray Tracing para Minecraft sin tener que tirar del Path Tracing y te puedes olvidar de tener que utilizar el Denoising y con ello los Tensors pero a Nvidia le interesa justificarlos por qué es su factor diferencial, es su ventaja.

No me veo a Microsoft colocando en un compromiso a su consola, lo siento, no me cuadra y no me veo a Nvidia lanzando una versión de Minecraft con RT que no le de ventaja a sus GPUs encima del resto.

Esto es todo, tenéis el Discord y los comentarios de esta entrada para comentarla.

0 0 vote
Article Rating
8 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Big crunch

https://youtu.be/TVtSsJf86_Y Resumen: Minecraft utiliza DirectX Raytracing 1.0, no el 1.1 El porcentaje de tiempo de un frame dedicado al denoise es mucho más grande que en un juego con Ray Tracing Híbrido. El gran lag en iluminación al apagar una antorcha en oscuridad, las sombras que tardan en moverse y cía es por el denoise, no por el path tracing, utilizan una acumulación de sólo 8 frames para el path tracing. Quieren mejorarlo para que sea más dinámico el denoise en según qué casos y minimizar estos problemas. El denoise ya funciona diferente en algunos casos, las sombras utiliza uno… Read more »

Charli

Gracias por responder urian!! Se me colo en el comentario que Hize ps5 cuando quise decir ps4 pro, ha quedado muy flipado mi comentario, lo siento.

Set

Urian te recomiendo que veas el reciente video de Digitalfoundry a los inginieros gráficos detras de Minecraft RTX, talvez te resuelven dudas. Por alguna razón insistes tanto en denoising por IA/Tensor Core, cuando no se utliza en ningun juego con patch tracing hasta el momento, en el video Alex le pregunta sobre los planes de denoising por IA y ellos comentan que estan investigación y que en futuro. Aparte que creo que ningun motor va invertir en una solucion especifica para el hardware de Nvidia, teniendo las consolas hardware AMD, todos los motores estan invirtiendo tiempo en un soluciónes generales… Read more »

IntelCeleronMasterRace

No te cansas de ser pesado, EN SERIO insistis con que el JODIDO BATTLEFIELD usa pathtracing? Sabes la diferencia entre iluminacion DIRECTA y DIFUSA por la cual el minecraft funciona?

Nadie

Por favor deja de escribir «patch» tracing en lugar de path tracing.

Ger

Hola Urian, me he encontrado este artículo que hace referencia a que la nueva versión de la API VULKAN permite liberar parte del proceso de cálculo de Ray Tracing de la GPU y enviarlo a la CPU. Supongo que eso ayudaría a gráficas con menos CU a conseguir una mayor calidad de trazado sin sacrificar rendimiento. Espero que puedas echar un vistazo y comentar, muchas gracias.

https://hardzone.es/noticias/procesadores/vulkan-ray-tracing-cpu-nucleos/

Ger

Y me gustaría sumarle este artículo también, de nuevo gracias por tu tiempo, un saludo

https://wccftech.com/localray-interview-weve-partnered-with-one-of-the-leading-console-manufacturers-on-raytracing/