Ojo con la Nvidia serie 600

Por si alguien está pensando en comprarse una Nvidia serie 6xx que se lea antes el artículo que pongo a continuación. La decepción es mayúscula. http://www.chw.net/2012/03/kepler-a-…n-computo-GPU/.

Pda ¿Qué tan buena puede ser una Nvidia 440 GT para render por GPU?

Cita:

El 18 de Julio del 2002 el lanzamiento del primer GPU DirectX 9 de la industria, abrió las puertas al nacimiento del cómputo acelerado por GPU (GPU) con la posterior introducción del Api brokgpu, Api que hizo notar el gran poder de cálculo para aplicaciones matemáticas, de punto flotante y de uso general que eran capaces de ofrecer los GPU.

Con la introducción de los GPU DirectX 10 en el 2006 y su nuevo modelo de Shaders unificados, los GPU ganaron mayores capacidades de cómputo, y con ellas llegaron nuevas apis GPU como Cuda y stream, pero las restricciones de hardware de ellas (Cuda sólo funciona en GPU Nvidia y stream sólo en GPU AMD) hicieron notar a la industria la necesidad de crear un modelo estándar de programación, el cual se consolido el 18 de noviembre del 2008 con la aparición del Api de cómputo paralelo acelerado por GPU OpenCL.

Volviendo al presente, la semana pasada vimos llegar los nuevos GPU kepler, los primeros en estar basados en la nueva arquitectura de Nvidia, sobre la cual tratamos resumidamente todas sus nuevas características enfocadas a ofrecer un buen rendimiento en juegos 3d, pero los GPU no sirven únicamente para jugar, y en esta ocasión nos enfocaremos en lo que nos ofrece kepler en el campo del cómputo GPU, por lo que lamentablemente, aunque trataré de que sea lo más entendible posible, no se podrá evitar que suene algo técnico.

Las variantes y nomenclatura de los GPU Nvidia.

Desde la introducción de la arquitectura fermi hace 2 años, Nvidia cambió su tradicional enfoque de desarrollar un único modelo de GPU para todas sus gamas de productos, desarrollando 2 variantes: una enfocada a ofrecer un gran rendimiento en juegos y cómputo GPU (modelos cuyo nombre código termina en 0 como gf110), y otra enfocada a juegos 3d, pero con menor potencia en cómputo GPU (modelos que terminan en 2, 4, 6, 7, 8 y 9 como, por ejemplo, gf114).

Esta diferenciación permite a Nvidia reducir considerablemente el número de transistores de sus GPU dedicados a juegos, lo que se traduce también en menores costos de producción y chips de menor tamaño, reservando los chips de gran tamaño y más costos os de producir para la gama alta, pues dotar del hardware necesario para darles un buen rendimiento en cómputo GPU toma muchos más transiestores, lo que eleva la complejidad del chip y su coste de producción.

La arquitectura fermi.

Los GPU fermi están basados en unidades de cómputo denominadas streaming multiprocessors (sm), las que reúnen varios shader processors (Nvidia los denomina Cuda Cores), pero ello no quiere decir que todos ellos sean iguales, pues están diferenciados en 2 distintos grupos: Shaders con capacidades de cómputo de enteros (int) y punto flotante de 32 bits (fp32), y Shaders especiales con capacidades de cómputo de enteros y punto flotante de 32 y 64 bits (fp32/64), para realizar una operación a 64 bits se usa el poder de cálculo de un shader FP 32 + un shader FP 32/64.

Los streaming multiprocessors (sm) de los GPU fermi de gama alta posen 2 grupos de 16 Shaders cada uno (16 FP 32 y 16 FP 32/64), lo que totalizan 32 Shaders por sm, donde cada sm puede realizar 32 cálculos int o formación profesional de 32 bits, o 16 cálculos FP 64 (no es posible realizar cálculos de 32 y 64 bits simultáneamente), 4 sms conforman un graphic processing cluster (gpc) y los GPU fermi de gama alta posen un total de 4 gpcs, es decir 16 sms con 32 Shaders cada uno, lo que nos da 512 shader processors.

Por ejemplo, gf110 es capaz de ejecutar 512 operación simultaneas int o FP 32 por ciclo, o 256 FP 64 bits por ciclo, en este punto cabe aclarar que Nvidia limita artificialmente a sus GPU GeForce y Quadro a 64 operación FP 64 por ciclo (la 8º parte de su potencial FP 32), solo GPU para cómputo HPC tesla son capaces de acceder a todo el potencial de 64 bits que ofrece la arquitectura fermi (quizá Nvidia recurre a limitar a sus GeForce y Quadro para evitar que compitan contra sus productos tesla).

Fermi de gama media y baja postura un diseño algo distinto, pues sus sm posen 3 grupos cada uno con 16 Shaders, donde dos grupos pueden realizar cálculos int o FP 32, y el tercer grupo puede realizar operación FP 32/fp64, es decir cada sm postura un total de 48 Shaders, y puede procesar simultáneamente 48 operación int o FP 32, o 16 operación FP 64, por lo que su rendimiento en cómputo GPU es considerablemente inferior al de fermi de gama alta, y las cosas empeoran pues para esta gama Nvidia limita el poder de cómputo de 64 bits a un 12º de su poder de cálculo FP 32.

Pero para los gamers esto no suena mal, pues Nvidia compensa el menor número de Shaders FP 64 de sus fermi con sms de 48 Shaders, duplicando su número de unidades de textura (8 tmus por sm) en relación con la variante con 32 Shaders (4 tmus por sm), ello beneficia a su rendimiento en juegos. Una concesión que sin duda agradará a los usuarios cuya principal necesidad sean los juegos.

Sms de gf110 (izquierda) y gf114 (derecha), los grupos de Shaders FP 32 marcados en azul, los Shaders FP 64 marcados en rojo, la arquitectura kepler.

Como lo describimos en nuestro artículo sobre la arquitectura kepler, kepler esta conformado por los nuevos next generation streaming multiprocessors (smx), los que aparte de Poser un renovado y simplificado scheduler, están conformados por 6 grupos de 32 Shaders (192 Shaders por smx), pero aquí empiezan las diferencias en relación a fermi, pues con kepler Nvidia realiza una drástica diferenciación entre sus tipos de Shaders. Los 6 grupos de 32 Shaders que conforman el smx, son todos idénticos y todos pueden realizar cálculos de enteros (int) o punto flotante de 32 bits (fp32).
¿Qué ocurrió con los Shaders capaces de ejecutar punto flotante de 64 bits? La respuesta a ello es simple: Nvidia en fermi limitaba artificialmente el rendimiento FP 64 de sus GPU GeForce y Quadro a 1/8 en fermi con sms de 32 Shaders (su potencial real es 1/2 FP 32/fp64), y a 1/12 en fermi con sms de 48 Shaders (potencial real de 1/3 FP 32/fp64) dejando únicamente a sus productos tesla la capacidad de usar todo el potencial FP 64 del chip. Pero tenemos que Nvidia únicamente lanza productos tesla basados en su gama alta, entonces ¿por qué fabricar GPU con costos o hardware FP 64 si tan sólo se usara la 4º parte de su potencial?
Nvidia debe haberse hecho muchas veces dicha pregunta, y la solución a ella son nuevas unidades de cálculo dedicadas capaces de ejecutar operación de punto flotante de 64 bits (fp64), las que ha diferencia de los Shaders FP 32/64 compartidos de fermi, únicamente realizan operación de punto flotante de 64 bits, pero que al parecer no son capaces de realizar operación de enteros, motivo por el que Nvidia no las incluye en los esquemas de sus GPU.

Con estas nuevas unidades FP 64 dedicadas Nvidia simplifica la programación de sus GPU, a la vez que evita el dejar muchos transistores sin uso (como en fermi), ganando en tamaño de die y en flexibilidad, pues al igual que con fermi, Nvidia desarrollara 2 variantes de su arquitectura kepler, su variante para gama alta (la que se conoce como gk100 o gk110) enfocada a ofrecer un gran rendimiento en juegos y cómputo GPU, y otra variante para sus gamas medías y bajas (gk104, gk106, gk107 y otras) enfocada a ofrecer un buen rendimiento en juegos, pero no tanto en GPU, esta última variante postura 8 unidades FP 64 dedicadas por smx (suponemos que gk100/gk110 tendrá 16 o 32 de ellas por smx).

Smx de kepler gk104 mostrando sus 6 grupos de Shaders FP 32, otra diferencia en relación a fermi es que los graphic processing cluster (gpc) están conformados por 2 smx (en fermi están conformados por 4 sms), tomando como ejemplo a gk104 (GeForce GTX 680) tenemos que al Poser 4 gpcs cada uno con 2 smx (cada smx con 192 Shaders y 8 unidades FP 64), tiene un total de 1536 Shaders y 64 unidades dedicadas FP 64 bits, es decir es capaz de ejecutar 1536 operación simultaneas de enteros o punto flotante de 32 bits, pero tan sólo 64 operación simultaneas de 64 bits.

Este bajo número de unidades de 64 bits en kepler de gama media y baja, permite a Nvidia ahorrar bastantes transistores y dedicar más hardware enfocado a juegos como unidades de textura: 16 unidades de textura (tmus) por smx, el doble que en gf114 (y el cuádruple que en gf110 (4), pero el hablar de unidades de textura comprende al uso del GPU en juegos, y por este artículo estar dedicado al cómputo GPU seguiremos con los demás cambios de kepler enfocados al GPU.

Kepler también postura un mayor número de unidades de funciones especiales (sfus, encargadas de realizar cálculos de matemática trascendental e interpolación) y unidades de carga y almacenamiento (load/estore): 32 de cada una de ellas por smx (fermi sm con 32 Shaders postura 4 por sm y su variante con sms con 48 Shaders postura 8 por sm), pero mantiene el uso de 64kb de l1 por smx/sm. El controlador de memoria de doble canal (2 canales de 32 bits cada uno) de kepler postura 128kb por controlador (al igual que en fermi) por lo que tomando, por ejemplo, a gk104 tenemos un total de 512 Kb (4 controladores de 64 bits).

Hemos elaborado una tabla con las especificaciones de algunos GPU fermi y kepler:
¿Qué hay de kepler de gama alta?
Observando la tabla se aprecia una enorme diferencia en el número de unidades FP 64 entre los distintos GPU Nvidia basados en fermi y kepler, pero conociendo la limitación intencional que Nvidia impone a sus GPU fermi, se aprecia que el poder de cómputo FP 64 en gigafloops DP (doble precisión o 64 bits) de la GeForce GTX 680 alcanza para superar a la GeForce 560 ti, pero está lejos de alcanzar a GPU como GeForce GTX 480 y GeForce GTX 580, lo cual pone en evidencia que kepler gk104 no ha sido diseñado para superar en todos los aspectos a fermi de gama alta, tarea de la que se encargara el núcleo kepler de gama alta conocido por el nombre código gk100/gk110.

Según declaraciones oficiales de summit gupta, gerente general de la división de productos tesla de Nvidia, gk100/gk110 posera más shader processors (sobre todo más unidades FP 64 a fin de alcanzar un potencial entre 1.3 a 1.5 teraflop en doble precisión), menores frecuencias de funcionamiento (quizá inferiores a 1 GHz), más ancho de banda (lo más probable sería un bus de 384 bits), y un TDP no mayor a 225w.

Claro que estas declaraciones se refieren a la versión tesla de gk100/gk110, de la cual Nvidia liberara información en mayo de este año, durante el evento GPU technology conference (gtc), y su lanzamiento será durante los últimos 3 meses de este año, aunque ello no quiere decir que GeForce basado en gk100/gk110 llegue en la fecha anunciada, pues tradicionalmente Nvidia primero lanza sus GPU GeForce, luego su gama Quadro, y por último tesla.

El rendimiento GPU de kepler gk104
Lamentablemente las cifras expuestas muestran que, aunque gk104 casi duplica el poder de cálculo de gf110 en cálculos int y FP 32, su poder FP 64 palidece ante el de gf110 y gf100. Varias webs se animaron a realizar test evaluando el poder de cómputo FP 64 de la nueva gk104 (GeForce GTX 680), y lamentablemente los resultados corroboran que no es capaz de acercarse a gf100/gf110, los que continúan siendo los GPU con mayor poder de cálculo en doble precisión de Nvidia.

Bajo el Api Cuda anandtech realizó un test usando primegrid genefer 1.06 donde gf110 terminó la prueba en 77 segundos, seguido de gf114 con 98 segundos, y gk104 con 133 segundos, un muy mal resultado que demuestra un escaso poder de cálculo FP 64 del nuevo GPU de Nvidia, incluso bajo el Api sobre el cual debería destacar.

La mayoría de test realizados se hicieron bajo el Api OpenCL, y hemos reunido algunos de ellos en una tabla:
Aprovechando los test OpenCL, hemos elaborado otra tabla con el puntaje/watt:
Examinando los resultados, en efecto se comprueban las afirmaciones de Nvidia de que kepler postura un rendimiento FP 32 por watt que duplica al de fermi, pero en FP 64 la historia cambia por completo, donde casi empata con gf114, pero pierde ante gf110, a pesar de que ambos chips fermi sólo están mostrando sólo la 4º parte de su verdadero potencial FP 64 por las limitaciones de Nvidia a su línea GeForce.

Conclusiones.

Sabiendo que los GPU kepler de gama media y baja (gk104, gk107 y otros cuyo modelo no termine en 0), no están orientados al cómputo GPU, no esperábamos que superara a gf110, y ello queda más que demostrado en los diversos test que hay en la web.

Les prometemos un artículo similar cuando kepler gk100/gk110 haga su aparición, pero desde ya, estamos seguros que superara consistentemente a gf110.

Links:
-Nvidia GeForce GTX 680 review: retaquíng the performance crown (anandtech)
-Nvidia launches first kepler GPU at gamers, HPC versión waiting in the Wings (HPC wire)
-fortsetzung: test der Nvidia GeForce GTX 680: ist amds Radeon Hd 7970 geschlagen? (pc games hardware)
-GeForce GTX 680 2 Gb review: kepler sends tahíti on vacation (Toms hardware).


Ver más sobre el tema y los comentarios en el foro