El siguiente escrito está basado en un artículo publicado originalmente por chw.net que yo personalmente he intentado adaptar tomando algunas de sus partes. Este escrito no pretende en ningún caso rivalizar con el artículo original sino destacar algunos puntos sumamente interesantes tratando de explicarlos de una forma más accesible si cabe. Pido disculpas de antemano si al realizar la conversión he cometido algún error de interpretación que pueda inducir a error.

Fermi: una mirada al pasado inmediato de Nvidia.

Hablar del pasado de Nvidía es hablar de Fermi. Se han dicho muchas cosas sobre Fermi, pero es importante saber que nos ha acompañado tanto en las series de juegos (GTX) como en las series profesionales (Quadro, Tesla) desde hace mucho tiempo. De hecho podemos encontrar tarjetas tan comunes como la GTX 480, la GTX 570 o las Quadro actuales como la Quadro 600 o la Quadro 6000.

Pero para conocerla mejor es importante entender la base, así que veamos un poco por encima cómo funciona.

Fermi esta basada en unidades de calculo llamadas "Streaming Multiprocessors" (SM), que engloban entre otros elementos a los "shader processors" que Nvidía llama CUDA cores, o núcleos CUDA.

Entonces de ahora en adelante estableceremos a grosso modo la siguiente equivalencia: Shader processors = CUDA cores (núcleos CUDA).

Hay que saber que no todos los Cuda cores son iguales. Tenemos dos grupos:

- Cuda cores con capacidad de calculo de enteros (INT) y coma flotante de 32 bits (FP32)
- Cuda cores con capacidades de calculo de enteros y coma flotante de 32 y 64 bits (FP32/64). Observamos que en este punto incorporan además los cálculos complejos de 64 bits.
Por decirlo de forma sencilla, existen núcleos CUDA que son capaces de realizar cálculos sencillos (FP32), y existen otros algo más especiales que son capaces de realizar cálculos sencillos además de cálculos complejos (FP32/64).

Los que cuentan a la hora de trabajar y sobre todo a la hora de renderizar por GPU usando la gráfica son los CUDA cores con capacidad de realizar cálculos complejos (FP64).

Bien, todo esto parece algo complejo, así que prestemos atención a lo que realmente nos va a condicionar.

Es importante señalar que en Fermi NVIDIA limita artificialmente a sus GPUs GeForce y Quadro a un total de 64 operaciones FP64 (calculos complejos) por ciclo; y que sólo sus tarjetas Tesla están exentas de esta limitación pudiendo trabajar con todo su potencial. Esta limitación se traduce en 1/8 de su potencial FP32.

Pero esto es aún peor cuando hablamos de la gama medía y baja donde las tarjetas sólo pueden procesar 16 operaciones FP64. Esta limitación se traduce en 1/12 de su potencial FP32.

Así que Nvidía limitó sus tarjetas GTX y Quadro para que no compitieran con sus Tesla. Esto es algo que Nvidía reforzaría con su nueva arquitectura: Kepler. Veamos un poco el presente.

Kepler: el presente de Nvidia.

Si hablamos del presente tenemos que hablar de Kepler. En la serie de juegos GTX nos encontramos con la serie 600 y tarjetas tan famosas como la GTX 670 o GTX 680, y en Quadro por ejemplo veremos la nueva K5000.

Kepler supone un cambio radical con respecto a la arquitectura anterior; Fermi. Nvidía da un giro radical y reduce el número de transistores para abaratar costes potenciando las tarjetas de juegos con unidades de calculo sencillo pero penalizando los cálculos complejos y por tanto su capacidad para trabajar por ejemplo renderizando.

La intención de Nvidía es clara, separar su serie de juegos y gama medía Quadro de la gama profesional Tesla dejando a estas cómo única alternativa para batir a las antiguas Fermi.

Como hablamos de cambios vemos que la primera característica de la nueva serie de Nvidía es que todos los núcleos cuda son capaces de realizar cálculos de enteros (INT) o punto flotante de 32 bits (FP32), lo que llamamos cálculos sencillos.

¿Pero qué pasa con los cálculos complejos (FP64)?

Muy sencillo, Nvidía a diferencia de la serie anterior (Fermi) ha incluido nuevas unidades de calculo complejo (FP64) que tienen la particularidad de que sólo son capaces de realizar cálculos complejos, no pudiendo realizar cálculos sencillos.

Podemos ver como en la nueva Kepler Nvidía vuelve a realizar una distinción entre:

- Gama alta (GK100 o GK110) que ofrece un gran rendimiento en juegos y calculo GPGPU
- Gama medía y baja (GK104, GK106, GK107, etc...) con un buen rendimiento en juegos, pero mermada en GPGPU; esta última variante posee tan sólo 8 unidades FP64 dedicadas
Y aquí tenemos un caso curioso, podemos ver el ejemplo del tope de gama en mononúcleo de la serie 600 de Nvidia: la todo poderosa GTX 680. Una tarjeta que se muestra superior a la GeForce 560 Ti, pero que palidece ante una GeForce GTX 480 y más aún contra su equivalente en la gama anterior; la GeForce GTX 580.

La GTX 680 tiene un total de 1536 shaders (Cuda cores) pero ojo en realidad sólo tiene 64 unidades (FP64) de calculo complejo.

Aquí es donde vemos que los Cuda cores tienen distinto valor ya que en realidad esos 1536 núcleos están pensados para operaciones sencillas de enteros o coma flotante FP32, pero tan sólo es capaz de realizar 64 operaciones complejas (FP64) a la vez que son las que se usan para renderizar.

En este sentido, las nuevas tarjetas Kepler de Nvidía de gama medía han demostrado tener una gran capacidad para juegos con casi el doble de capacidad a la hora de realizar cálculos sencillos (FP32) pero una capacidad pobre con respecto a la gama anterior Fermi para realizar cálculos complejos (FP64).

De hecho y como comentabamos Nvidía ha reducido el número de transistores haciendo tarjetas más sencillas para reducir costes que no tienen la capacidad de la serie anterior a la hora de trabajar realizando cálculos complejos (FP64) precisamente para dejar a Tesla como la gran beneficiada a la hora de trabajar empleando mayor número de transistores y dedicando sus mejores recursos para marcar aún más la diferencia.
Conversión libre basada en el artículo: http://www.chw.net/2012/03/kepler-a-...computo-gpgpu/