Los FLOPS y sus múltiplos, como los TeraFLOPS, se han venido usando para medir el rendimiento de las unidades de procesamiento, como la CPU o la GPU. Sin embargo, no es la mejor opción en todos los casos, ya que puede dar una falsa impresión, como es el caso de las tarjetas gráficas, donde más no siempre es mejor…
Índice de contenidos
¿Qué es un FLOPS?
Los FLOPS (Floating Point Operations Per Second), es una unidad de media de rendimiento, concretamente mide el rendimiento en operaciones de coma flotante que se pueden procesar en cada segundo por una máquina, especialmente para medir los rendimientos de unidades de procesamiento como la CPU o la GPU, como he comentado anteriormente.
También te puede interesar conocer cuáles son las CPUs y las GPUs más potentes del mercado.
Los FLOPS también pueden aparecer como FLOP/s, aunque raramente aparecen así. Sea como sea, primero hay que entender qué es el coma flotante, pero si quieres una definición rápida, IBM lo hace muy bien:
Un método para codificar números reales dentro de los límites de precisión finita disponibles en las computadoras.
Es decir, las computadoras pueden procesar datos de punto fijo o enteros, que son números como puede ser -1, +2, 9009, 10, 0, -20, etc., mientras que también puede usar números reales en notación científica (con una mantisa, un exponente y una base o raíz), que son los de coma flotante. Como comprenderás, estos datos en coma flotante necesitan de mayores recursos para ser procesados, y suelen tardar más ciclos de reloj.
La codificación de coma flotante para el exponente se definió en base a dos para máquinas como las míticas Cray o las Digital Equipment Corp. VAX. Por otro lado, IBM empleó una base 16 o hexadecimal para su IBM Floating Point Architecture. Sin embargo, para estandarizar esto, se creó el estándar ANSI/IEEE STD 754-1985 que empleaba base diez. Actualmente, la inmensa mayoría de procesadores emplean este estándar para 32-bit (precisión simple) y 64-bit (precisión doble), más allá de eso (precisión extendida), o también los de 16-bit (precisión media), etc. Así mismo, los puedes identificar como FP64, FP32, FP16, FP8, etc.
Los datos en coma flotante son comunes a la hora de ejecutar software científico o multimedia, como los gráficos. Por esto son importantes especialmente en campos como el HPC y también para las tarjetas gráficas.
Actualmente, especialmente en ciertos campos donde priman las cargas de trabajo donde el coma flotante es esencial, se ha dado mayor relevancia a los FLOPS, aunque también los MIPS siguen siendo una medida de rendimiento para otros casos. En ambos casos se mide el rendimiento, solo que en el caso de los MIPS es más adecuado para otras cargas de trabajo, como bbdd, procesamiento de textos, hojas de cálculo, etc.
MIPS son las siglas de Millions Instructions Per Second o millones de instrucciones por segundo. Pero no hay que confundir IPS con IPC, ya que IPC es la cantidad de instrucciones ejecutadas por ciclo de reloj. Por otro lado, hay que decir que también existe la unidad IOPS (Integer Operations Per Seconds), que es el equivalente de los FLOPS para enteros, es decir, números enteros tanto con signo como sin él.
Frank H. McMahon, mientras trabajaba en el National Lawrence Livermore Lab, ideó la idea de usar la magnitud de los FLOPS para poder comparar el rendimiento de varias supercomputadoras. De esa forma, se pudo dejar de usar MIPS que era más adecuado para comparar PCs como has podido deducir de los párrafos anteriores.
Múltiplos y el TeraFLOPS
Pero en este artículo vamos a tratar los TeraFLOPS. Si te preguntas qué son, simplemente hay que decir que son un múltiplo de los FLOPS, ya que cuando McMahon ideó esta métrica, las máquinas de aquella época procesaban solo unas pocas operaciones de coma flotante por segundo y no eran necesarios otros múltiplos. En cambio, ahora son necesarias medidas mucho mayores para el enorme rendimiento de las unidades de procesamiento actuales o las supercomputadoras.
Prefijo del múltiplo | Abreviación | Orden de magnitud | Nombre completo |
---|---|---|---|
giga- | G | 109 | gigaFLOPS (GFLOPS) |
tera- | T | 1012 | teraFLOPS (TFLOPS) |
peta- | P | 1015 | petaFLOPS (PFLOPS) |
exa- | E | 1018 | exaFLOPS (EFLOPS) |
zetta- | Z | 1021 | zettaFLOPS (ZFLOPS) |
yotta- | Y | 1024 | yottaFLOPS (YFLOPS) |
En un principio también se usaron otros múltiplos más pequeños, como los MFLOPS o MegaFLOPS, pero ahora es absurdo usar esta unidad para la mayoría de las unidades de procesamiento actuales.
Ejemplos
A lo largo de la historia, se han ido registrando los rendimientos que han conseguido algunas de las CPUs y GPUs más populares, además de las máquinas más potentes del mundo. Y se pueden sacar grandes conclusiones de esto. Por ejemplo, que las CPUs tienen un rendimiento de cómputo bastante inferior a una GPU, de ahí que se prefiera usar la GPGPU como acelerador de cargas científicas o para IA.
Por ejemplo:
- Intel Core i5-9600K @ 3.7 Ghz pudo conseguir una marca de 37.73 GFLOPS, es decir, unos 0.03773 TeraFLOPS.
- Apple M1 puede desarrollar 154 GFLOPS, o 0.154 TeraFLOPS.
- Un procesador ARM de una Raspberry Pi 4B podría llegar a los 6.69 GFLOPS, o unos 0.006 TeraFLOPS.
- En 2008 se pone en marcha uno de los supercomputadores más potentes del mundo en aquel momento, encabezando la lista Top500. Era el IBM Roadrunner. Podía alcanzar 1 PetaFLOPS o 1000 TeraFLOPS. Puedes pensar que es mucho, pero solo una única tarjeta gráfica de la época, como la AMD Radeon HD 4800 fue una de las primeras en alcanzar un TeraFLOPS, y en agosto de ese mismo año lanzaron la AMD Radeon HD 4870X2 con dos GPUs Radeon R770 que llegaban a 2.4 TeraFLOPS.
Como vemos, las tarjetas gráficas o GPU tienen un potencial muy superior al a CPU, como se puede observar de estos datos.
¿Es realmente una medida adecuada para las tarjetas gráficas?
Ahora bien, uno de los motivos por los que estamos escribiendo este artículo es por la popularidad que está alcanzando esta unidad, el TeraFLOPS, para medir el rendimiento también de las tarjetas gráficas de última generación para gaming. Sin embargo, la pregunta que habría que hacerse es si realmente los TeraFLOPS importan tanto como parece para los videojuegos.
Ya te adelanto que los FLOPS solo son positivos para aplicaciones científicas o para HPC, donde sí que es importante esto para las cargas de trabajo que se usan. Además, lo es especialmente cuando se emplea como una GPGPU, para procesamiento genérico, como un acelerador. Pero no para gaming… ¿Quieres demostración? Vamos a ello.
Momento de reflexionar sobre los TeraFLOPS
Por ejemplo, observa esta tabla:
GPU | FP32 TeraFLOPS | FP64 TeraFLOPS | Ratio |
GeForce RTX 3090 | 35,580 | 0,556 | FP64 = 1/64 FP32 |
GeForce RTX 3080 | 29,770 | 0,465 | FP64 = 1/64 FP32 |
Radeon RX 6900 XT | 23,040 | 1,440 | FP64 = 1/16 FP32 |
Radeon RX 6800 XT | 20,740 | 1,296 | FP64 = 1/16 FP32 |
Como podemos ver, una AMD Radeon RX 6900 XT puede llegar a 1,4 TeraFLOPS de rendimiento de cómputo en coma flotante, mientras que la NVIDIA GeForce RTX 3090 puede llegar a aproximadamente 0,5 TeraFLOPS cuando hablamos de coma flotante de precisión doble (FP64). Para hacerte una idea, la nueva GeForce RTX 4090 puede llegar a los 83 TeraFLOPS en FP32, es decir, casi dobla a la RTX 3090 y casi cuatriplica a la Radeon RX 6900 XT. Para FP64, tenemos que la RTX 4090 puede alcanzar 1,29 TeraFLOPS. Por otro lado, para que te hagas una idea, la AMD Radeon RX 7900 XTX puede desarrollar 61,42 TeraFLOPS en FP32 y 1,91 TeraFLOPS en FP64.
Y ahora te pregunto, fijándose en estas cifras, para hacerte reflexionar:
- ¿Es la GeForce RTX 3090 un 35% superior a la Radeon RX 6900 XT como indican los datos en FP32?
- ¿Es la GeForce RTX 3090 la mitad de potente que la Radeon RX 6800 XT como indican los datos de FP54?
- ¿Es la nueva RTX 4090 más del doble de potente que una RTX 3090 como indican los datos de coma flotante?
- ¿Es la Radeon RX 7900 XTX mucho más potente que la RXT 4090 como indican los datos de FP64? ¿O es la RTX 4090 muy superior a la RX 7900 XTX como indican los datos de FP32?
Pues la verdad es que la respuesta a todas estas preguntas es negativa. No, los datos de TeraFLOPS no determinar el rendimiento que se consiguen en las pruebas de videojuegos. Solo son una medida apropiada para determinar el rendimiento de cálculo en coma flotante que tienen las GPUs, y que dependerá en gran medida de la cantidad de FPUs y la arquitectura de las mismas.
¿Entonces? ¿Qué es mejor para medir el rendimiento de la GPU?
Para terminar, veamos otros tres ejemplos que nos ayudarán a contestar esta otra cuestión sobre qué usar para medir el rendimiento en gaming mejor que los TeraFLOPS. Vamos a coger tres modelos actuales:
TeraFLOPS FP32 | TeraFLOPS FP64 | Pixel Rate () | Texture Rate | |
NVIDIA GeForce RTX 4090 | 82,58 | 1,29 | 443,5 | 1290 |
AMD Radeon RX 7900 XTX | 61,42 | 1,91 | 479,8 | 959,6 |
Intel Arc A770 | 19,66 | 1 | 307,2 | 614,4 |
Si atendemos a las pruebas de rendimiento realizadas en videojuegos, el orden de rendimiento de estas tarjetas gráficas sería el siguiente:
- NVIDIA GeForce RTX 4090
- AMD Radeon RX 7900 XTX
- Intel Arc A770
En principio podría parecer que están ordenadas según el rendimiento en FP32, pero las enormes diferencias entre una y otra no refleja las diferencias de rendimiento en videojuegos. Además, si nos pasamos a la columna de FP64, la AMD debería de ser la más potente de las tres, y esto tampoco se plasma en gaming.
¿Y qué es pixel rate y texture rate? Pues como sus propios nombres indican, es la tasa de pixeles y la tasa de texturas que una GPU puede crear respectivamente. ¿Estas son mejores unidades para medir el rendimiento? Quizás sean mejores para determinar el rendimiento gráfico generando píxeles y texturas.
- Por un lado, la tasa de píxeles se mide en GPixel/s, es decir, 1.000.000.000 de píxeles por segundo que puede generar la GPU.
- En cuanto a la tasa de texturas, se mide en GTexel/s, es decir, la cantidad 1.000.000.000 de texturas que puede generar por cada segundo.
Si nos fijamos en estas imágenes, solo habría un dato que desentonaría, el de GPixel/s de la AMD Radeon, que está en segunda posición del ranking y sin embargo sería la que más rápida es generando píxeles. El resto de valores estarían realmente ordenados en función con el rendimiento que tienen estas gráficas realmente en videojuegos. Es decir, que serían algo más fiables para medir y comparar el rendimiento.
Conclusión
En definitiva, los TeraFLOPS pueden ser una buena media para cargas de trabajo en HPC o para GPGPU. Sin embargo, si queremos medir el rendimiento en gaming, se trata de una unidad que no es nada fiable. Quizás algunos fabricantes usen estas métricas, pero no te dejes engañar, lo hacen por pura cuestión de marketing si ven que destacan frente a la competencia…
¡No olvides dejar tus comentarios!