En la actualidad existen dos mercados distintos a los que van dirigidas las tarjetas gráficas. El más popular es el del gaming donde decenas millones de aficionados a los videojuegos en PC las utilizan para jugar a sus juegos con la mejor tasa de fotogramas posible y/o los mejores gráficos. El otro mercado es el de la computación de alto rendimiento o el de las GPU HPC. ¿En qué se diferencian ambos tipos de gráficas?
No hay duda de que las tarjetas gráficas han sufrido una enorme evolución en los últimos años. No solo ofrecen cada vez la capacidad de reproducir gráficos cada vez más fidedignos a la realidad, sino que su potencia de cálculo también se utiliza para aplicaciones científicas de todo tipo y esto les ha permitido llegar a más mercados que los videojuegos. Pero en diferentes mercados diferentes soluciones y como ya es conocido tanto NVIDIA como AMD tienen arquitecturas pensadas para lo que es la reproducción de videojuegos por un lado y por el otro lado para la computación científica.
A nivel general comparten una serie de elementos comunes, pero traen consigo una serie de elementos diferenciales que hace que sean criaturas distintas si comparamos una arquitectura de GPU HPC con una GPU Gaming. Es por ello que hemos decidido relataros cuáles son las diferencias entre ambos tipos de GPU.
Precisión de los datos, la diferencia principal en GPU HPC y Gaming
En un videojuego el hecho que un dato no sea del todo preciso no es un problema, desde el momento en que se suele trabajar con lo que matemáticamente llamamos aproximación. Lo cual consiste en utilizar cifras de menor precisión, pero con la suficiente para realizar una simulación cercana. Esto es debido a que la cantidad de bits que podemos asignar a los datos en las ALUs son limitados y a más bits por ALU más transistores y con ello mayor es el tamaño de los mismos. Dado que el presupuesto en transistores de una GPU comercial es limitado y la precisión de datos no es tan importante se acaba realizando este sacrificio.
Pero en la computación científica es distinto, la precisión de los datos es muy importante para realizar los cálculos. Una simple variación en los datos puede llevar a que el modelo con el que se está trabajando se desvíe demasiado o de resultados erróneos. Imaginaos el desastre que sería que se utilizará una GPU de poca precisión para calcular ciertos elementos a la hora de crear un nuevo fármaco y que por falta de precisión acabe ocurriendo un error que se traduzca en un desastre sanitario. De ahí a que muchas de las GPU pensadas para HPC hagan uso de ALUs de precisión de coma flotante en 64 bits. Las cuales no solemos ver las GPU utilizadas para gaming por un hecho muy obvió.
El uso de instrucciones de mayor precisión requiere la implementación de ALUs especializadas y con ello cambios en toda la unidad shader, no solamente de cara a la implementación de estas ALU, sino también de cara a los registros, el set de instrucciones y la intercomunicación.
La estructura de costes es distinta en una GPU HPC
En el mercado de consumo por ejemplo no es posible vender una GPU de gran tamaño, debido a que lo que pueden pagar los clientes es muy poco, tampoco se pueden utilizar tipos de memoria extremadamente caros como es el caso de las memorias HBM. Las cuales pese a ser mejor en dos de las tres variables (tamaño y consumo), pierden en cuanto a costes frente a la memoria GDDR6 que es mucho más barata.
La limitación del coste no ocurre en el caso de las GPU HPC, ya que están pensadas para un mercado donde los altos costes rentabilizan el uso de las memorias del tipo HBM. De ahí a que las GPU de este tipo suelen utilizar este tipo de memorias en vez de la GDDR6. Si tus clientes están dispuestos a pagar el coste por un tipo de memoria mejor entonces lo van a hacer.
El otro motivo es que los superordenadores y centros de datos que hacen uso de las GPU HPC es el hecho que suelen tener sus consumos energéticos ya previamente presupuestados donde cada vatio que se utiliza tiene que aprovecharse al máximo. Debido a que la memoria HBM tiene un consumo en pJ/bit mucho más bajo que la GDDR6 se ha acabado imponiendo en dicho mercado y esto ha hecho que todos los futuros diseños de GPU HPC se basen en el uso de este tipo de memoria, la cual requiere el uso de interposers y por tanto de estructuras 2.5DIC.
Mercados diferentes, necesidades diferentes
Las GPU para renderizar gráficos hacen uso de una serie de unidades a las que llamamos de función fija por el hecho que no son programables. ¿Su trabajo? Realizar ciertas funciones repetitivas y redundantes a la hora de generar los gráficos a tiempo real que vemos en pantalla. Las tarjetas gráficas HPC en cambio son diferentes, muchas de estas unidades no las necesitan y por tanto no hacen uso de las mismas.
Por lo general el cambio más simple para convertir una GPU Gaming en una GPU HPC empieza por cegar la salida de vídeo. Pero como hemos visto en las otras dos secciones las GPU HPC van más allá de eso. Lo que sí que es cierto es que los fabricantes suelen dejar ese tipo de unidades en sus GPU HPC. Lo cual es cuanto menos paradójico, en especial en el caso de las GPU utilizadas en las NVIDIA Tesla donde las diferentes unidades no se utilizan. AMD en cambio en sus AMD Instinct basadas en CDNA las han eliminado por completo de la ecuación.
¿Por qué unidades que no se utilizan siguen ahí? Pues por el hecho que ocupan poco espacio, están apagadas cuando no se utilizan y resulta un trabajo más grande quitarlas del medio y reconfigurar todo el diseño sin ellas que mantenerlas. Al fin y al cabo no son procesadores completos y ocupan muy poco espacio. El suficiente como para no molestar pese a estar ahí. Aunque el mayor cambio está en el procesador de comandos gráficos, la mayoría de GPU HPC tienen esa unidad desactivada y por tanto no pueden procesar la lista de pantalla creada por la CPU para generar los gráficos.
Fuente: HardZone