Blog Personal.

Deep Learning, Especulación, Futuro, GeForce, Nvidia

Comentando los últimos rumores sobre Ampere (II)

Moore Law is Dead ha publicado su segundo video de especulación sobre Ampere y he decidido hacer una entrada comentando dichos rumores del video, tened en cuenta que a la espera de que el día 14 de Mayo de 2020 se confirmen los datos esto es una entrada de especulación por lo que si se ajusta a la realidad será coincidencia.

El vídeo es el siguiente:

Veamos…

La idea inicial de Ampere respecto a Turing en la gama GeForce es que sea lo mismo que fue «Little Pascal» respecto a Maxwell con el salto que hubo de los 28nm a los 16nm pero esta vez con el salto a los 7nm. ¿Y que es lo que hizo Nvidia por aquel entonces? Pues añadir 1 TPC (2 SM y por tanto 128 núcleos CUDA adicionales) por cada GPC para tener una gama completamente nueva.

El mayor cuello de botella de cara a las GPUs es el ancho de banda externo, las GPUs pese a que pueden escalar más en rendimiento con una mayor cantidad de núcleos se ven afectadas por el ancho de banda externo y por tanto no pueden ir más allá de un punto de rendimiento si la RAM externa, en este caso la GDDR6 no acompaña. ¿El problema que le veo a estos rumores? Nvidia ha de pasar antes por la remesa de memorias GDDR6 a 16Gbps y aunque ya ha pasado por ellas en la gama Super, la disponibilidad masiva de los chips de memoria a 18Gbps es escasa, aparte que dicha velocidad aumenta considerablemente el coste energético de la tarjeta y creedme, no es viable a las velocidades que dice la diapositiva con GDDR6 a 18Gbps un consumo de 220-230W y más si hablamos de velocidades >2Ghz.

Es más, pienso que al igual que con Turing tuvimos una remesa de modelos con memoria a 14Gbps y luego otra con memoria más rápida que fuerón las Super aquí vamos a ver lo mismo y las GeForce Ampere que saldrán este año utilizaran memoria GDDR6 a unos 16Gbps. El motivo por el cual pienso esto es porque las actuales RTX Super no van más allá de los 15.5 Gbps de velocidad por lo que incluso tomando los 16Gbps sería un aumento de velocidad pero desgraciadamente Nvidia no puede ir más allá, tampoco lo necesita pero es importante poner los pies en el suelo y ser realistas sobre lo que nos podemos esperar.

Para empezar en la presentación dentro de dos días no se va a presentar ninguna GeForce sino el reemplazo a NVidia Volta que es el único representante existente en la gama de GPUs de alto rendimiento de Nvidia, sabemos que va a ser una bestía con 128 SM y por tanto 8192 núcleos CUDA en su máxima configuración, será un chip enorme como su antecesor y al igual que su antecesor utlizará memoria HBM2.

Eso es lo que vais a ver el Jueves, nada más que eso. ¿Entonces que ocurre con las GeForce? Tienen que presentarse en la Computex que se ha retrasado hasta Septiembre y originalmente era en Junio. No sabemos si Nvidia adelantará la presentación de la gama GeForce para mañana pasado respecto a la publicación de esta entrada o no, pero el plan original era presentar Big Ampere (GeForce Tesla y el nuevo DGX) para la GTC y dejar las GeForce para el Computex.

Ahora bien, Nvidia en las GeForce no va a ir a la estrategia de Turing con grandes chips y además caros sino que cada uno de los tres representantes de la gama GeForce Ampere va a ser más pequeño en tamaño que sus equivalentes de la gama GeForce Turing y si los rumores son ciertos Nvidia ha separado la gama en dos proveedores distintos.

  • GA102 y GA104 para TSMC
  • GA106 para Samsung

La primera tarjeta que van a presentar en la gama GeForce no es la RTX 3080 Ti sino las RTX 3080 y RTX 3070 y Nvidia va a volver a utilizar la versión recortada del chip n104 correspondiente a esta generación para la gama n70 en vez de tirar de un n106 como ocurrió en Turing.

Si ciertos rumores son ciertos, Nvidia quiere colocar la RTX 3070 a un precio de $500 y la RTX 3080 a $600 de precio recomendado. Ambas tarjetas utilizandoi un bus de 256 bits GDDR6 como sus modelos actuales y su rendimiento adicional vendría por:

  • El aumento leve de la cantidad de SM
  • Una mayor velocidad de reloj por el paso a los 7nm.

Si la TU104 tiene un total de 48 SM (24 TPC) y por tanto 6 TPC por cada uno de los 4 GPC, el salto minimo que deberíamos esperar hacía la GA104 es el de 7 TPC por GPC, 14 SM con TPC y por tanto 56 SM en total. No es un salto que digamos tan espectacular pero va en consonancia con el salto que Moore Law’s is Dead le da a la GA102 que es precisamente del mismo tipo. Es un salto menor, pero hay que tener en cuenta que la memoria disponible no permite ir más allá y la HBM2E es demasiado cara para el mercado doméstico.

En cuanto a la GA106, por lo visto a simple vista no sería más potente que la actual TU106 a igualdad de velocidad de reloj. Y digo a simple vista porque es más rápida y tiene los cambios arquitecturales de Ampere.

La diapositiva empieza con una enorme desinformación, lo es porque la intersección solo es una parte del pipeline y da igual la cantidad de intersecciones que realices si las etapas posteriores no van más rápidas. No olvidemos cual es el pipeline para el trazado de rayos para juegos (no digo a tiempo real porque se me enfadan).

La idea es que los programadores tienen que especificar que objetos son emisores de luz en cada momento con un Ray Generation Shader, los rayos no van rebotando por la escena hasta que se quedan sin energía o salen de la misma de manera reiterativa sino que tenemos que especificar que objetos de la escena generan rayos y cuales no, es una forma de reducir la carga computacional de la escena a la espera de que salga un hardware lo suficientemente potente. El otro punto es que el RT Core utiliza la Cache L1+Local de cada SM y es junto a la unidad de texturas y las unidades Load/Store las únicas que tienen la capacidad para acceder a la jerarquia de caches, un sistema 4 veces más rápido necesita una infraestructura de datos que aumente en la misma capacidad y no va a ser el caso.

Pero lo que para mi es importante es el hecho de doblar los Tensor Cores, la particularidad de los Tensor Cores es que comparten los mismos registros que los núcleos CUDA (FP32 e Int32) por lo que si doblamos la cantidad de Tensor Cores sin doblar la cantidad del resto de núcleos esto significa de retruco que Ampere va a ser como una Turing que puede utilizar sus Tensor Cores en combinación con los núcleos CUDA en cualquier momento. Para que lo entendáis, Ampere va a tener 16 Tensor Cores por SM y cuando los use al 100% no va a poder utilizar los núcleos CUDA, pero va a poder combinar 8 Tensor Cores por SM+Todos los núcleos CUDA y 8 Tensor Cores es la cantidad que tiene Turing.

Debido a que los Tensor y comparte registros con el resto esto significa que los Tensor están inactivos en Turing la mayor parte del tiempo, en Ampere van a poder estar activos todo el tiempo y ser utilizados en cualquier parte del pipeline sin tener que esperar a los núcleos CUDA. Esto es el cambio más importante de Ampere respecto a Turing, el hecho de que los Tensor Cores pueden ser invocados en cualquier parte del pipeline debido a que ya no van a compartir registros. Se que a algunos os cuesta visualizarlo, pero creedme que es un cambio muy importante si al final se confirma pero os daré un ejemplo de lo que supone el cambio con el DLSS.

Con el DLSS 2.0 en Turing esos milisegundos en los que dura la conversión la imagen no podemos utilizar los núcleos CUDA, es decir, las unidades Int32 y FP32 no se pueden utilizar. Con el cambio en Ampere si, podemos hacer que la GPU realice el DLSS 2.0 desde antes y sacar un mejor rendimiento ya que una parte no va a anular a la otra.

Otra de las cosas que creo que vamos a ver va a ser de cara no al trazado de rayos sino de cara a la rasterización y concretamente en la iluminación directa, en la cual no actua al trazado de rayos y en muchos casos se hace via Renderizado en Diferido. Pues bien, pienso que el calculo de la iluminación pasará de hacerse via Compute Shader a pasar a realizarse parcialmente en los Tensor y por cierto, no os extrañe que Nvidia hable de un Tensor Shader o de los Compute Shaders capacs de invocar a los Tensor «Cores» en cualquier momento en conjunto con los núcleos CUDA si lo necesitan.

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

0 0 vote
Article Rating
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Set

Si los Tensor Core se puden usar en paralelo con los cudas, ya no seria necesario los RT core no??. Los RT core tienen pinta de ser la mismas unidad que los tensor con ALU FP16 (512), que Nvidia añadió debido a que los Tensor Core no se podian usar en paralelo si no al final de Frame, con el Ray Tracing necesitan una unidad que se ueda utilizar en paralelo para la interseccion de rayos.Pero si los Tensor Core lo hacen los rt core no tendrian mucho sentido: – Los Tensor Core podrian hacer las intersecciones en tiempo de… Read more »