Blog Personal.

Conceptos Básicos, Deep Learning, Especulación, GeForce, Nvidia

Primer vistazo a la GA100 y especulación sobre la futura gama RTX 30×0 puesta al día.

Personalmente no tengo problemas en comer cuervo, es decir, reconocer que me equivoco. Lo que tengo muy claro es que la falta de competencia a Nvidia en el mercado de computación de alto rendimiento es lo que ha provocado que el chip GA100 resulte en algo completamente decepcionante si tenemos en cuenta que hay un salto de nodo y uno 3 años por el medio desde la aparición de Volta.

Lo primero que llama la atención es que Nvidia muestra imagenes de un GA100 con 6 pilas HBM2E…

Se trata de una bestía compuesta por 8 GPC, 128 SM en total (16 por GPC) y por tanto 8192 «núcleos» CUDA (Recordad que son ALUs) en su interior.

Pero lo primero que nos llama la atención es el hecho que lleve 54 mil millones de transistores (1 billón americano= 1000 millones españoles) cuando el aumento en la cantidad de SM junto al salto a los 7nm no concuerda para nada con una cifra así. Pero resulta que el chip por eso es altamente denso ya que tiene una densidad de 65.6 millones de transistores por mm² mientras que otras GPUs a 7nm como por ejemplo la Navi 10/RDNA de AMD tiene una densidad de 41 millones de transistores por mm2.

¿Que es lo que ocurre? Basicamente TSMC tiene dos versiones de su nodo de 7nm, uno de alta densidad habitualmente utilizado en smartphones que alcanza bajas velocidades de reloj y otro de alto rendimiento que es el que utiliza AMD para sus RDNA y Zen 2 que esta pensado para altas velocidades de reloj. Curiosamente Nvidia ha optado para la GA100 por la librería de alta densidad de TSMC llevando consigo la consecuencia de una baja velocidad de reloj, personalmente creía que Nvidia iba a duplicar el rendimiento de los núcleos CUDA y que la velocidad de reloj sería más alta que en Volta pero no, resulta que es más baja debido a la alta densidad.

Tened en cuenta que la GV100 (el único chip Volta) tenía 21 mil millones de transistores midiendo unos 815mm2 por lo que su densidad era de 26 miillones de transistores por mm^2. Con una densidad en Ampere de 65.6 millones y por tanto 3 veces más uno esperaría un salto por el mismo tamaño mucho más grande o como mínimo tener un chip más pequeño. ¿Entonces que es lo que ha ocurrido? Bueno, ayer estaba yo completamente perdido en esto…

Porque resulta que el primer chip bajo la marca Ampere no es la versión completa, en realidad es una versión capada a la que llaman «A100» que tiene 7 GPC en vez de 8, y 5 pilas HBM2. ¿Me lo invento? No, eso lo dice la propia Nvidia.

Luego me sorprendio ver una especificación de 40MB para los 12 controladores (2 por pila HBM) y el hecho que me diese un número raro, luego entendi que la configuración completa tiene 48MB y la recortada tiene unos 40MB. ¿Son chips distintos? No, simplemente Nvidia en el «A100» desactiva 1 GPC, 1/6 de la cache L2 y 1/6 de las interfaces de memoria y recordad que las interfaces de memoria van de acuerdo con la cantidad de Cache L2.

¿Entonces a que viene que Nvidia no lance la versión completa? El A100 consume la friolera de 400W en total y la versión completa consumiría aún más. Pero alto, no se si os habéis fijado en la cifra de cache L2 que en la versión completa sería de 48MB… ¡Unas 8 veces más que en Volta! La cantidad de cache L2 es algo que no me esperaba pero es sintomático de algo que Bill Dally, el cientifico jefe de Nvidia, dijo una vez y que es algo que esta ocurriendo y es el hecho de que el coste energético de trasladar los datos es cada vez más grande y cuanto más alejado esta el dato de la ALU en la jerarquia de memoria entonces el consumo sube aun más. El hecho de que Nvidia haya decidido colocar 8 veces la cantidad de Cache L2 viene por ese motivo.

El otro cambio en densidad respecto a Volta es el aumento de la Cache L1 de cada SM de los 128KB a los 192KB. Por lo que teniendo en cuenta que fisicamente hay 128 SM esto nos da un total de 24MB para la Cache L1 más otros 48MB para la Cache L2, en total unos 72MB solo para las caches, pero el aumento de la Cache L1 esta dentro de lo esperable, es la Cache L2 con su enorme tamaño la que es una sorpresa que nadie se esperaba pero aún así no justifica el enorme tamaño del chip y la enorme densidad

¿Entonces? El motivo de ello es el uncore, especiamente la interfaz que comunica la cache L2 con los diferentes GPC, el hecho de que la cantidad de GPC haya aumentado así como la cantidad de SMs por GPC provoca que la infraestructura de conexión, el cableado interno del chip aumente considerablemente. El tamaño del chip se va a la estratosfera con ello y se necesita una enorme densidad teniendo que sacrificar velocidad de reloj y aún así teniendo un consumo de 400W para la versión incompleta, es simple y llanamente un jarro de agua fria para los que defienden el clásico «Más núcleos, es la guerra».

Y dicho esto vayamos a las novedades, la primera de ellas es un cambio en el Procesador de Comandos que no vamos a ver en las GeForce Ampere porque esta pensado para Data Centers… ¿Y que es? La capacidad de la GPU de sub-dividirse en 7 GPUS virtuales para 7 clientes distintos, asignando cada uno de los 7 GPC activos en el A100 a un usuario para los servicios de Cloud Computing.

Esto significa que la infraestructura de comunicación al tener 7 clientes a los que servir en paralelo también es enormemente compleja en este caso siendo uno de los motivos para que el chip sea enorme. Cuando tenemos un solo cliente que es la de una GPU normal el sistema logístico puede ir repartiendo las tareas secuencialmente, es como si tuvieramos una sola oficina de correos en la ciudad pero aquí tenemos 7.

Pero el gran cambio respecto a Volta viene los los Tensor Cores de tercera generación y mi reacción al ver esto:

Fue simplemente de casi tirar el café. ¿Un salto de 10 veces más respecto a Volta en FP32? ¿A base de convertir los Tensor Cores de FP16 a FP32? Tiene lógica pero… ¿Entonces como es que Nvidia conserva los núcleos en FP32 en el SM de Ampere?

Bueno, el motivo de ello es que el formato de datos TF32 no el FP32 pero Nvidia los compara, en realidad se trata un formato de 19 bits propietario que no sigue ningún estándar y se han sacado de la chistera. Por eso no pueden reemplazar las ALUs FP32 estándar.

Lo que hace el mecanismo del nuevo Tensor Core es tomar los valores en FP32 y reducir la cantidad de decimales. En realidad esto se hace para recortar la cantidad de transistores y la complejidad por ALU, esto significa que llegado a un punto Nvidia reemplazará las ALUs en FP32 que son los núcleos CUDA por las ALUs en FP32 de los Tensor como ya hizo con las ALUs en FP16, pero para ver esto posiblemente tendremos que esperar a Nvidia Hooper como mínimo.

El otro elemento a destacar es la configuración interna de los Tensors, el ratio de ALUs en FP16 como ya había previsto ha pasado de ser de 8:1 a 16:1 en el nuevo diseño. En Volta y Turing teníamos unos 8 Tensor Cores por SM con unas 64 ALUs por Tensor Core en una configuración que representaba un tensor (matriz 3D) de 4:4:4. En cambio en Ampere cada Tensor Cores en teoria tiene una configuración 8:4:4 y por tanto 128 ALUs pero dado que hemos pasado de 8 Tensor Cores a 4 entonces esto significa que la configuración realmente es de 8:8:4 y los Tensor Cores tienen 256 ALUs cada uno.

En cuento a lo de alcanzar una cifra mayor en los Tensor Cores utilizando la «Poda» es algo que sinceramente no entiendo del todo y necesito mirarlo con más atención, espero que me sepáis perdonar ese punto en concreto ya que no quería retrasar la entrada varios días.

Gama RTX 30×0

Aunque no la han presentado nos podemos hacer una idea de como será la gama RTX 30×0 y que cambios habrá respecto a la GA100. empezando por el SM los más obvios son:

  • Eliminación de las ALUs en FP64
  • Integración del RT Core de vuelta.

Y en cuento a la GPU esta claro que va a ser monocliente y tener los mismos procesadores de comandos y la infraestructura logística de Volta y Turing.

Pero hemos de tener en cuenta que el sistema de memoria en la gama RTX 30×0 es GDDR6 y en cuanto a ancho de banda unos 2048 bits HBM2 corresponden a 256 bits GDDR6. Para conseguir una GPU con el mismo ancho de banda que la configuración completa con el HBM2E del GA100 necesitaríamos un bus de 768 bits GDDR6, el cual consumiría un montón y unos 768 bits son sin utilizar el modo x8/Clamshell no solo un chip con un área enorme sino que necesitaríamos un total de 24 chips de memoria… Por no hablar de que el consumo lo haría realmente imposible, aparte que sería un chip muy grande.

Si tomamos medio GA100… Entonces pasamos a tener una configuración de 64 SM en 4 GPC, 24MB de Cache L2 y un bus de 3072 bits HBM2 que podemos convertir en un bus de 384 bits pero la cantidad de SM es menor que los 72 de la TU102 y para colmo tenemos el problema de la densidad que os he comentado antes con la velocidad de reloj debido a la enorme cantidad de cache L2 que tiene el GA100.

Por lo que por lógica Nvidia en la gama RTX 30×0 va a recortar la Cache L2 respecto a la GA100. Nuestra GA102 con bus 384 bits GDDR6 no tendria 24MB de Cache L2 sino la mitad, unos 12MB, los cuales seguirían siendo 2x la cantidad que hay un Turing pero el espacio adicional se utilizaria para aumentar la cantidad de SM respecto a la GA100.

Esto nos lleva a que la configuración de SM por GPC no va a ser la misma en la GA102 que en la GA100, para empezar vamos a tener 6 GPC y cada uno de los 6 GPC con 14 SM (7 TPC) y por tanto un TPC más que en la TU102. El motivo de tener 6 GPC se traduce en que las unidades de función fija de los SM serían más bajas que en Turing y algunas partes del pipeline serían peor, con 6 GPC la configuración máxima es de 96 SM si tenemos un ratio de 16 SM por GPC. Pero la tradición de Nvidia es aumentar en cada nueva arquitectura 1 TPC por GPC y de ahí que la que tiene más números de ser para la GA102 sea una configuración de 84 SM en total.

Otra cosa es que Nvidia se saque para 2021 o 2022 un nueva gama con 16SM previo paso al abandono de los núcleos CUDA en una futura GPU al poder utilizar las ALUs no en TF32 sino en FP32 completo en Hooper que va a ser el reemplazo de Ampere.

Eso si, la gama GA 102, GA104 y GA106 que veremos en las RTX 30×0 no utilizarán el nodo de 7nm en alta densidad sino el alto rendimiento para alcanzar una mayor velocidad de reloj. Teniendo en cuenta todos los cambios no me extrañaría que la GA102 estuviese en un tamaño de 550mm2 en cuanto a tamaño, menos que el tamaño de la TU102 y al nivel del tamaño de la TU104 a la que seguramente reemplazará en precio.

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

0 0 vote
Article Rating
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Set

Hay rumores que para la gaming usarían 8nm Samsung que es peor, que los 7nm. Es un poco preocupante el tema consumo 400w es bastante para 1400mhz y HBM2 7nm, seria de ver como se traslada eso a las 3080ti en GDDR6, frecuencian altas y si el nodo llega ser inferior…..

Por otro no te da la sensación que la estructura separada de la L2, es por que Nvidia se esta reprando para la GPU MCM(modulares) :

https://pbs.twimg.com/media/EX_HYvcXgAAMqf8?format=jpg&name=medium

Steven

Hola preocupa el consumo y que piensan usar los 8nm en las gamas bajas y los 7 en la alta algo así entiendo yo