1 puntos por GN⁺ 2023-12-26 | 1 comentarios | Compartir por WhatsApp
  • Tomando como referencia la Cray 1, una supercomputadora de 1978, se compara cuánto la superan la Raspberry Pi, dispositivos Android y PC en los benchmarks Livermore Loops, Linpack y Whetstone
  • El valor de referencia es el rendimiento de hardware de la Cray 1 de 80MHz y un máximo de 160MFLOPS, pero para la comparación real se usan 11.9MFLOPS de media geométrica en Livermore Loops, 27MFLOPS en Linpack y 6MFLOPS estimados en Whetstone
  • La Raspberry Pi 1 de 2012 fue 4.6 veces más rápida que la Cray 1 según la media geométrica de Livermore Loops, y la Raspberry Pi 400 de 2020 llegó hasta 78.8, 49.5 y 95.5 veces en los tres benchmarks respectivamente
  • El CPU Kryo 570 de un teléfono Android de gama media de 2021 logró 123, 74 y 151 veces más en un solo núcleo, mientras que una laptop con Core i5 1135G7 registró 359, 337 y 226 veces al compilar con AVX-512
  • Al usar SIMD y multihilo la diferencia crece aún más, pero las operaciones fusionadas de AVX-512 pueden producir resultados numéricos distintos a los valores esperados en algunos benchmarks

Los benchmarks usados como referencia y la Cray 1

  • El eje principal de la comparación es Livermore Loops, es decir, los program kernels del Lawrence Livermore Laboratory usados para validar el rendimiento de la primera Cray 1
    • Los resultados usan una versión convertida a código C en la década de 1990
    • Livermore Loops entrega MFLOPS por cada loop y calcula mínimo, máximo y varios promedios; el promedio oficial es la media geométrica
  • Como comparación auxiliar se usan Linpack 100 y Whetstone
    • Linpack se basa en linpack-pc.c, una versión adaptada para PC e incorporada a Netlib
    • Whetstone fue ampliado por quien asumió la responsabilidad de diseño después de su autor original, Harold Curnow, y la versión 100% vectorizada tomó como objetivo inicial el primer sistema Cray 1 instalado en el Reino Unido
  • Los principales valores de referencia de la Cray 1 son los siguientes
    • Se sabe que el rendimiento máximo posible de hardware de la Cray 1 de 80MHz es de 160MFLOPS, produciendo dos resultados por ciclo con linked multiply and add
    • Los resultados de Livermore Loops son un máximo de 82.1MFLOPS, una media geométrica de 11.9MFLOPS y un mínimo de 1.2MFLOPS
    • Linpack da 27MFLOPS y Whetstone se estima en 6MFLOPS con base en resultados de la Cray XMP

El punto en que la Raspberry Pi superó a la Cray 1

  • En 2013 se ejecutó en la primera Raspberry Pi un programa esencialmente igual a los benchmarks de PC para Linux
  • En ese momento, la comparación decía que la Cray 1 de 1978 costaba 7 millones de dólares, pesaba 10,500 libras y requería una fuente de alimentación de 115kW, mientras que la Raspberry Pi costaba unos 70 dólares, pesaba apenas unas onzas, usaba una fuente de 5W y era más de 4.5 veces más rápida que la Cray 1
    • Esta comparación se basa en la media geométrica oficial de Livermore Loops
  • Las tres mediciones principales de la Pi 1 son 55MFLOPS en Livermore Loops, 42MFLOPS en Linpack y 94MFLOPS en Whetstone
    • La frecuencia de CPU es 8.8 veces la de la Cray 1
    • Frente a la Cray 1, los MFLOPS son 4.6, 1.6 y 15.7 veces mayores respectivamente
  • La Raspberry Pi 400 de 2020 entrega, a 1800MHz y en 32 bits, 819MFLOPS en Livermore Loops, 1147MFLOPS en Linpack y 498MFLOPS en Whetstone
  • Los resultados compilados en 64 bits con SIMD de la Pi 400 equivalen a 78.8, 49.5 y 95.5 veces la Cray 1

Resultados de CPU ARM en Android

  • En 2012 el benchmark se adaptó para ejecutarse en Android como código ARM nativo, y fue necesario un programa frontend en Java
  • Algunas tablets Android iniciales carecían de hardware o software suficiente para soportar cálculos de punto flotante rápidos
  • Los resultados de un ARM Cortex-A9 de 800MHz en 2012 son 20MFLOPS en Livermore Loops, 11MFLOPS en Linpack y 22MFLOPS en Whetstone
    • La frecuencia del CPU era 10 veces la de la Cray 1, pero el multiplicador en MFLOPS se quedó en 1.7, 0.4 y 3.7 veces respectivamente
  • Más adelante, el V7-A9 de 800MHz mejoró a 115MFLOPS, 101MFLOPS y 155MFLOPS
    • Eso equivale a 9.7, 3.7 y 25.8 veces la Cray 1
  • En 2021, el CPU Kryo 570 de un teléfono de gama media registró a 2000MHz 1468MFLOPS en Livermore Loops, 1986MFLOPS en Linpack y 905MFLOPS en Whetstone
    • Frente a la Cray 1: 123, 74 y 151 veces
    • La frecuencia del CPU es 25 veces la de la Cray 1

Rendimiento de un solo núcleo en PC con Windows y Linux

  • Desde la década de 1990 se desarrollaron benchmarks para CPU Intel en DOS, OS/2, Windows y Linux
  • El primer PC que alcanzó la puntuación promedio de Livermore Loops de la Cray 1 fue un Pentium de 100MHz en 1994
    • 12MFLOPS en Livermore Loops, 12MFLOPS en Linpack y 16MFLOPS en Whetstone
    • Frente a la Cray 1, la frecuencia de CPU y las tres comparaciones de MFLOPS fueron de aproximadamente 1.3, 1.0, 0.44 y 2.6 veces
  • El Pentium Pro de 200MHz de 1995 logró 34MFLOPS en Livermore Loops, 49MFLOPS en Linpack y 41MFLOPS en Whetstone
    • Eso equivale a 2.9, 1.8 y 6.8 veces la Cray 1
  • En 2007, un solo núcleo de Core 2 a 1820MHz registró 413MFLOPS, 998MFLOPS y 374MFLOPS
    • Frente a la Cray 1: 35, 37 y 62 veces
  • En 2021, una laptop con Core i5 1135G7 entregó a 4150MHz 1387MFLOPS, 3541MFLOPS y 802MFLOPS
    • Frente a la Cray 1: 117, 131 y 134 veces

Efecto de compilar con SIMD

  • También se comparan resultados compilados con opciones SIMD SSE, AVX y AVX-512
    • SSE usa registros vectoriales de 128 bits, AVX de 256 bits y AVX-512 de 512 bits
    • En precisión simple procesan simultáneamente 4, 8 y 16 números, y en doble precisión 2, 4 y 8 respectivamente
  • Si se usa FMA, el rendimiento máximo esperado puede duplicarse, aunque la precisión del resultado puede cambiar ligeramente
    • El benchmark reporta esas diferencias como errores
  • En resultados SIMD en Windows, el Core i5 registró 238 veces la Cray 1 en Livermore Loops, 190 veces en Linpack y 182 veces en Whetstone
  • En Linux, compilado con gcc 9.3.0 y Ubuntu, los resultados fueron aún mayores
    • Con AVX: 300, 259 y 179 veces la Cray 1
    • Con AVX-512: 359, 337 y 226 veces
  • Si un ejecutable AVX-512 se corre en un CPU anterior sin esa opción, se reporta fallo del programa

Vector Whetstone y comparación con supercomputadoras antiguas

  • Vector Whetstone ejecuta la misma función que Whetstone escalar, pero sobre posiciones contiguas de memoria definidas por un parámetro de longitud vectorial
  • La Cray 1 alcanzaba su rendimiento máximo con longitudes vectoriales de 64 palabras o más, mostrando un patrón tipo diente de sierra
  • La tabla incluye resultados escalares y vectoriales de Whetstone para 13 supercomputadoras entre 1978 y 1991
    • La Cray Y-MP aparece con aproximadamente el doble de reloj y de MFLOPS escalares que la Cray 1, y 4 veces los MFLOPS vectoriales
    • La Cray Y-MP es un sistema con dos unidades vectoriales
  • Los resultados AVX-512 del Core i5 en Vector Whetstone son 28,303MFLOPS promedio en precisión simple y 20,346MFLOPS promedio en doble precisión
    • Frente a la Cray 1: 602 y 433 veces
    • La velocidad máxima en precisión simple es 75.1GFLOPS
  • En la Raspberry Pi 400, Vector Whetstone da 2131MFLOPS promedio en precisión simple y 1184MFLOPS en doble precisión
    • Eso equivale a 45 y 25 veces la Cray 1

Whetstone multihilo y MP MFLOPS

  • MP Whetstone ejecuta varias copias del código Whetstone estándar dentro de un solo programa con 1, 2, 4 y 8 hilos
    • Se usa para mostrar el rendimiento multinúcleo frente a un solo núcleo de CPU
  • En la laptop Core i5, el Performance Monitor mostró funcionamiento cercano a 4150MHz con 1 y 2 hilos, y cerca de 3800MHz con 4 y 8 hilos
  • Los resultados de MP Whetstone con 8 hilos son los siguientes
    • La laptop Core i5 con AVX-512: 1521 veces la Cray 1
    • El teléfono Android con Kryo 570: 757 veces
    • La Raspberry Pi 400: 400 veces
  • MP MFLOPS es un benchmark diseñado para acercarse al rendimiento máximo ejecutando combinaciones de multiplicación y suma en punto flotante
    • Ejecuta 2, 8 y 32 floating point operations por palabra de datos
    • El valor por defecto es 8 hilos, pero al ejecutarlo se puede indicar hasta 64 hilos mediante parámetro
  • Los mejores resultados de MP MFLOPS en la laptop Core i5 son los siguientes
    • Precisión simple: 325,915MFLOPS, 2671 veces la Cray 1
    • Doble precisión: 160,641MFLOPS, 1317 veces la Cray 1
    • Teléfono Android en precisión simple: 35,686MFLOPS, 293 veces la Cray 1
    • Raspberry Pi 400 en precisión simple: 30,150MFLOPS, 247 veces la Cray 1

Precisión numérica y resultados más rápidos de lo esperado

  • En Livermore Loops con AVX-512 hubo casos en que la precisión de algunos checksums bajó de 15 a 16 dígitos a 12 a 13 dígitos
    • Parece que las operaciones fusionadas redondean solo una vez, en lugar de redondear en cada instrucción por separado
  • En Linpack AVX-512 y también en Whetstone SSE se registraron en la laptop Core i5 sumcheck no estándar o diferencias en resultados
  • Algunos resultados con SSE y AVX salieron por encima del máximo esperado documentado de MFLOPS/MHz
    • Un ejemplo SSE de Livermore Loops en el Core i5 alcanza 3.56MFLOPS/MHz, un nivel que se considera imposible sin FMA
    • Un ejemplo con AVX llega a 4.86MFLOPS/MHz, 21.5% por encima del máximo esperado
  • Al revisar el código desensamblado, esos ejemplos de SSE y AVX no contenían instrucciones de tipo fused multiply and add
  • El código desensamblado de MP MFLOPS con AVX-512 sí incluye instrucciones fused multiply/add/subtract
    • Hay 21 instrucciones vectoriales aritméticas y el mínimo para una forma totalmente FMA es 16, por lo que la velocidad alcanzable se calcula como 76.19% de una FMA completa
    • Con ese ajuste, la estimación de velocidad máxima de la Cray 1 para ejecutar esa función baja de 160MFLOPS a 122MFLOPS

Una brecha que cambia según el tipo de trabajo

  • Los multiplicadores representativos frente a la Cray 1 para el Core i5 con AVX-512, el teléfono Android y la Raspberry Pi 400 cambian mucho según el tipo de tarea
  • En comparaciones de una sola familia de núcleo, el Core i5 con AVX-512 logra 359 veces en promedio en Livermore Loops, 337 veces en Linpack y 226 veces en Whetstone
  • El teléfono Android registra 123 veces en promedio en Livermore Loops, 74 veces en Linpack y 151 veces en Whetstone
  • La Raspberry Pi 400 se ubica alrededor de 79 veces en promedio en Livermore Loops, 50 veces en Linpack y 96 veces en Whetstone
  • En trabajos que aprovechan multiprogramación, multihilo y SIMD, la diferencia es mucho mayor que en una simple comparación de un solo núcleo, y el rendimiento multinúcleo se vuelve más difícil de predecir por la cantidad de núcleos, la reducción de reloj y la configuración big/LITTLE de los CPU modernos

1 comentarios

 
GN⁺ 2023-12-26
Opiniones en Hacker News
  • Cuando veo comparaciones así, antes que los benchmarks me da curiosidad cuál habrá sido el cálculo real más “heroico” que probablemente se ejecutó en una Cray-1 en esa época, y cómo podría reproducirse hoy en un equipo como una Raspberry Pi.
    Podría haber sido un modelo meteorológico o climático, o hidrodinámica de radiación. Comparado con el software moderno de análisis de elementos finitos, casi con seguridad tendría una precisión muy baja, pero el intento en sí suena divertido.

    • Es muy probable que hayan sido simulaciones de armas nucleares.
      La primera máquina fue a Los Alamos.
      https://www.theatlantic.com/technology/archive/2014/01/these...
    • Uno de los primeros clientes fue el European Centre for Medium-Range Weather Forecasts, así que probablemente la usaron para pronósticos meteorológicos de mediano plazo.
    • No fue una Cray-1, pero unos años después la Marina hizo cálculos de dinámica de fluidos computacional en una Cray 90 para modelar el flujo alrededor de cascos, y el código estaba escrito en Fortran.
      Sería genial poder volver a acceder al código que se escribió entonces. Lo que en una Cray tardaba minutos u horas ahora posiblemente corra en segundos en una Raspberry Pi.
    • Se podría empezar corriendo Spec ‘06. Incluye microkernels de esas cargas de trabajo “heroicas”.
    • Alrededor de 1979 hice una visita a las instalaciones de NCAR en Boulder y llegué a sentarme en el asiento de su Cray-1.
      Así que sí, se usaba para cálculos meteorológicos y climáticos.
  • Conocía a alguien que trabajaba en un laboratorio nacional que tenía su propia supercomputadora Cray-1; estaba en una sala de máquinas con una gran ventana de observación para que los visitantes pudieran admirarla.
    Justo antes de que llegara un gran grupo de VIP en tour que él conocía, se escondió dentro de la Cray-1 y esperó. Cuando llegó el grupo, salió caminando desde dentro de la Cray-1 subiendo el cierre de sus jeans, con una expresión avergonzada y de alivio; luego fingió sorpresa al ver al grupo mirándolo boquiabierto al otro lado de la ventana y desapareció a toda prisa.

  • Más allá de los benchmarks, me pregunto si existe software que permita sentir esa velocidad de forma tan clara.
    El software que uso hoy —GUI, IDE, compiladores, ofimática— se siente como versiones más avanzadas de lo que corría en un 386. El software que hoy usa el Met seguramente fue diseñado asumiendo computadoras millones de veces más rápidas, pero debe de existir en algún lado software de la época que necesitaba una Cray.

    • No. La Cray-1 ejecutaba trabajos por lotes, en su mayoría simulaciones científicas que tardaban horas o días.
      Tenía una interfaz de terminal y no se usaba para aplicaciones interactivas en tiempo real.
    • Un viejo código de física en Fortran parece lo más probable.
      Por ejemplo, calcular secciones eficaces de dispersión a partir de elementos de matriz, o tareas con mucho álgebra lineal vectorizable.
    • Muchas tareas que entonces tardaban horas ahora podrían tardar menos de un segundo.
      Pensando en ingeniería mecánica, en aquella época quizá simulaban cómo se deformaba un auto en un choque. Hoy se pueden ejecutar simulaciones parecidas en tiempo real en videojuegos, solo por diversión. Entiendo que en los juegos casi no se hace porque no se necesita realmente un modelo físicamente exacto, pero es posible.
      Con el renderizado pasa lo mismo. En la época de Toy Story, cada cuadro tardaba horas en renderizarse; ahora, aunque pueda debatirse, generamos gráficos mejores en tiempo real.
  • Estoy esperando el video de seguimiento de Jeff Geerling metiendo una Raspberry Pi dentro de un gabinete de Cray-1.

    • Sería genial que saliera un gabinete de PC con forma de Cray-1.
      Uno más pequeño para Raspberry Pi también sería muy bueno.
    • O conectarlas en red y meter tantas como sea posible.
  • Tendría más sentido compararla con RISC-V con soporte para Vector 1.0, porque la Cray-1 era una máquina vectorial.

    • ¿Alguna CPU RISC-V con soporte vectorial por hardware llegó alguna vez a un chip real?
    • O también se podría comparar con una GPU o TPU.
  • A diferencia de la Cray-1, la Raspberry Pi no ofrece mucho espacio para sentarse.

    • Alguien hizo un clúster de Pi Zero con temática Cray; si fueras un ratón, quizá cumpliría el requisito: https://www.clustered-pi.com/blog/clustered-pi-zero.html
    • Con el precio de una Cray, incluso sin ajustar por inflación, podrías comprar una cantidad decente de sillas.
      Y más todavía si consideras el ahorro en electricidad.
    • Sí, los gabinetes para Pi han sido decepcionantes.
      Casi ninguno enfría bien. flirc es bueno, y los que tienen ventilador simplemente molestan.
      Me gustaría que hubiera un gabinete para Pi con protoboard integrada.
      O también un gabinete en el que uno pudiera sentarse cómodamente.
    • En cuanto a diseño minimalista, tampoco tienen tanto estilo como la Cray-1.
  • En 2013 compré el CPU Intel x86 más nuevo y caro y armé una PC nueva.
    Mi esposa entró a la oficina, vio los gráficos en la pantalla y dijo: “No parece que estés trabajando, pero no estoy segura de qué estás haciendo”.
    Le respondí: “Estoy calculando en qué momento mi PC habría sido la computadora más rápida del planeta. Por lo que veo, en 1992 habría calculado mejor que una supercomputadora de última generación del Departamento de Defensa, de 90 millones de dólares y que ocupaba una sala entera. ¿Lo puedes creer?”.
    Ella contestó: “Qué bien. ¿Y eso cómo ayuda a pagar nuestra tarjeta?”.
    Bromas aparte, hay bastantes datos para hacer este tipo de cálculos. Por ejemplo, aquí: https://en.wikipedia.org/wiki/TOP500
    Si extrapolaba hacia atrás o buscaba datos antiguos, mis cálculos llevaban a conclusiones absurdas, como que si llevara esta PC a 1981 sería más rápida que todas las computadoras de la Tierra juntas.

    • Una de mis máquinas favoritas del Top500 es SystemX.
      https://www.top500.org/system/173736/
      Cuando se introdujo en 2004, este arreglo de 1100 sistemas Apple PowerPC 970 era la séptima computadora más potente de la lista.
      Su rendimiento en Linpack era de 12,250.00 GFlop/s.
    • Otra cosa divertida es buscar el año más reciente en que mi teléfono habría podido entrar en la parte baja de la lista Top500.
  • La Cray-1 tiene un sofá mucho mejor.

    • El asiento acolchado de la Cray-1 cubre las fuentes de alimentación.
      Me dio tristeza ver que la Cray-1 del Computer Museum en Mountain View se usaba en eventos del lobby como lugar para guardar suministros de catering.
    • Hay que revivir los asientos en las computadoras.
  • En resumen, hace 10 años la Raspberry Pi y los teléfonos Android ya eran varias veces más rápidos, y ahora son aproximadamente 100 veces más rápidos.
    Considerando que caben en un bolsillo, es bastante impresionante.

    • Menos mal que tenemos sistemas operativos modernos para volverlos más lentos /s
  • Hace unos años comparé una SPARCstation 20 Model 60 con Raspbian en la Raspberry Pi. Esa SPARCstation es el sistema de referencia del BYTE UNIX Benchmark: https://news.ycombinator.com/item?id=10795324
    Según el benchmark, la Raspberry Pi original era entre 6 y 7 veces más rápida que la SPARCstation 20.