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.
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:
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.
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.
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.
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 |
- ¿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?
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 |
- NVIDIA GeForce RTX 4090
- AMD Radeon RX 7900 XTX
- Intel Arc A770
- 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.