- Verglichen wird, wie weit Raspberry Pi, Android-Geräte und PCs in den Benchmarks Livermore Loops, Linpack und Whetstone dem Cray 1, einem Supercomputer von 1978, voraus waren
- Als Referenz dienen die 80-MHz-Hardwareleistung und maximal 160 MFLOPS des Cray 1; für den eigentlichen Vergleich werden 11,9 MFLOPS als geometrisches Mittel der Livermore Loops, 27 MFLOPS bei Linpack und geschätzte 6 MFLOPS bei Whetstone verwendet
- Der Raspberry Pi 1 von 2012 war nach dem geometrischen Mittel der Livermore Loops 4,6-mal schneller als der Cray 1; der Raspberry Pi 400 von 2020 kam in den drei Benchmarks auf das 78,8-, 49,5- bzw. 95,5-Fache
- Die Kryo-570-CPU eines Mittelklasse-Android-Smartphones von 2021 erreichte pro Single-Core das 123-, 74- und 151-Fache; ein Core-i5-1135G7-Laptop kam mit AVX-512-Kompilierung auf das 359-, 337- und 226-Fache
- Mit SIMD und Multithreading wächst der Abstand weiter, doch die fused-Operationen von AVX-512 können in manchen Benchmarks zu anderen numerischen Ergebnissen führen als bisher erwartet
Benchmarks als Vergleichsbasis und der Cray 1
- Im Zentrum des Vergleichs stehen die Lawrence Livermore Laboratory program kernels, also Livermore Loops, die zur frühen Leistungsvalidierung des Cray 1 verwendet wurden
- Für die Ergebnisse wird eine in den 1990er-Jahren nach C portierte Version genutzt
- Livermore Loops liefert MFLOPS je Schleife sowie Minimum, Maximum und mehrere Mittelwerte; der offizielle Mittelwert ist das geometrische Mittel
- Für ergänzende Vergleiche werden Linpack 100 und Whetstone verwendet
- Linpack basiert auf
linpack-pc.c, das für PCs portiert und in Netlib aufgenommen wurde - Whetstone wurde nach dem ursprünglichen Autor Harold Curnow von dessen Nachfolger in der Designverantwortung erweitert und variiert; die zu 100 % vektorisierte Version zielte anfangs auf das erste in Großbritannien eingeführte Cray-1-System
- Linpack basiert auf
- Die wichtigsten Referenzwerte des Cray 1 sind:
- Die maximal mögliche Hardwareleistung des 80-MHz-Cray-1 gilt mit linked multiply and add, also zwei Ergebnissen pro Takt, als 160 MFLOPS
- Die Livermore-Loops-Ergebnisse liegen bei maximal 82,1 MFLOPS, einem geometrischen Mittel von 11,9 MFLOPS und einem Minimum von 1,2 MFLOPS
- Linpack erreicht 27 MFLOPS; Whetstone wird auf Basis von Cray-XMP-Ergebnissen auf 6 MFLOPS geschätzt
Wann der Raspberry Pi den Cray 1 überholte
- 2013 wurden auf dem ersten Raspberry Pi im Wesentlichen dieselben Programme ausgeführt wie bei den PC-Benchmarks für Linux
- Der damalige Vergleich lautete, dass der Cray 1 von 1978 7 Millionen Dollar kostete, 10.500 Pfund wog und eine Stromversorgung mit 115 kW benötigte, während der Raspberry Pi etwa 70 Dollar kostete, nur wenige Unzen wog, eine 5-W-Stromversorgung nutzte und mehr als 4,5-mal schneller war als der Cray 1
- Dieser Vergleich bezieht sich auf das offizielle geometrische Mittel der Livermore Loops
- Die drei wichtigsten Messwerte des Pi 1 sind 55 MFLOPS bei Livermore Loops, 42 MFLOPS bei Linpack und 94 MFLOPS bei Whetstone
- Gegenüber dem Cray 1 liegt der CPU-Takt beim 8,8-Fachen
- Die MFLOPS-Werte entsprechen dem 4,6-, 1,6- bzw. 15,7-Fachen des Cray 1
- Der Raspberry Pi 400 von 2020 erreicht bei 1800 MHz in 32 Bit 819 MFLOPS bei Livermore Loops, 1147 MFLOPS bei Linpack und 498 MFLOPS bei Whetstone
- Die 64-Bit-SIMD-Kompilierung des Pi 400 ergibt gegenüber dem Cray 1 das 78,8-, 49,5- und 95,5-Fache
Ergebnisse von Android-ARM-CPUs
- 2012 wurden die Benchmarks so portiert, dass sie unter Android als nativer ARM-Code laufen; dafür war ein Java-Frontend-Programm erforderlich
- Frühen Android-Tablets fehlte mitunter Hardware oder Software für schnelle Gleitkommaberechnungen
- Ein ARM Cortex-A9 mit 800 MHz erzielte 2012 20 MFLOPS bei Livermore Loops, 11 MFLOPS bei Linpack und 22 MFLOPS bei Whetstone
- Der CPU-Takt lag zwar beim 10-Fachen des Cray 1, die MFLOPS-Faktoren betrugen jedoch nur 1,7, 0,4 und 3,7
- Später verbesserte sich ein 800-MHz-V7-A9 auf 115 MFLOPS, 101 MFLOPS und 155 MFLOPS
- Das entspricht dem 9,7-, 3,7- und 25,8-Fachen des Cray 1
- Die Kryo 570-CPU eines Mittelklasse-Smartphones von 2021 erreichte bei 2000 MHz 1468 MFLOPS bei Livermore Loops, 1986 MFLOPS bei Linpack und 905 MFLOPS bei Whetstone
- Gegenüber dem Cray 1 entspricht das dem 123-, 74- und 151-Fachen
- Der CPU-Takt liegt beim 25-Fachen des Cray 1
Single-Core-Leistung von Windows- und Linux-PCs
- Seit den 1990er-Jahren wurden Benchmarks für Intel-CPUs unter DOS, OS/2, Windows und Linux entwickelt
- Der erste PC, der den durchschnittlichen Cray-1-Wert bei Livermore Loops erreichte, war 1994 ein 100-MHz-Pentium
- 12 MFLOPS bei Livermore Loops, 12 MFLOPS bei Linpack und 16 MFLOPS bei Whetstone
- Gegenüber dem Cray 1 liegen CPU-Takt und die drei MFLOPS-Vergleiche bei etwa 1,3-, 1,0-, 0,44- und 2,6-fach
- Ein Pentium Pro 200 MHz von 1995 erreichte 34 MFLOPS bei Livermore Loops, 49 MFLOPS bei Linpack und 41 MFLOPS bei Whetstone
- Gegenüber dem Cray 1 entspricht das dem 2,9-, 1,8- und 6,8-Fachen
- Ein Core 2 mit 1820 MHz erreichte 2007 auf einem einzelnen Kern 413 MFLOPS, 998 MFLOPS und 374 MFLOPS
- Das entspricht dem 35-, 37- und 62-Fachen des Cray 1
- Ein Core-i5-1135G7-Laptop von 2021 liefert bei 4150 MHz 1387 MFLOPS, 3541 MFLOPS und 802 MFLOPS
- Gegenüber dem Cray 1 entspricht das dem 117-, 131- und 134-Fachen
Einfluss der SIMD-Kompilierung
- Verglichen werden auch Ergebnisse, die mit den SIMD-Optionen SSE, AVX und AVX-512 kompiliert wurden
- SSE nutzt 128-Bit-, AVX 256-Bit- und AVX-512 512-Bit-Vektorregister
- Bei einfacher Genauigkeit werden jeweils 4, 8 bzw. 16 Zahlen gleichzeitig verarbeitet, bei doppelter Genauigkeit 2, 4 bzw. 8 Zahlen
- Wird FMA genutzt, kann sich die maximal erwartete Leistung verdoppeln, allerdings kann die Genauigkeit der Berechnungsergebnisse leicht abweichen
- Der Benchmark meldet solche Abweichungen als Fehler
- In den Windows-SIMD-Ergebnissen erreicht der Core i5 gegenüber dem Cray 1 das 238-Fache bei Livermore Loops, das 190-Fache bei Linpack und das 182-Fache bei Whetstone
- Unter Linux, kompiliert mit gcc 9.3.0 in einer Ubuntu-Umgebung, fielen die Ergebnisse höher aus
- AVX-Ergebnisse gegenüber dem Cray 1: 300-, 259- und 179-fach
- AVX-512-Ergebnisse: 359-, 337- und 226-fach
- Wird eine AVX-512-Binary auf älteren CPUs ohne diese Option ausgeführt, meldet das Programm einen Fehler
Vector Whetstone und Vergleich mit früheren Supercomputern
- Vector Whetstone führt dieselben Funktionen wie der skalare Whetstone aus, arbeitet aber auf zusammenhängenden Speicherpositionen, die durch einen Vektorlängen-Parameter bestimmt werden
- Der Cray 1 erreichte bei Vektorlängen ab 64 Wörtern seine maximale Leistung und zeigte ein Sägezahnmuster
- Die Tabelle enthält skalare und vektorielle Whetstone-Ergebnisse von 13 Supercomputern aus den Jahren 1978 bis 1991
- Der Cray Y-MP wird gegenüber dem Cray 1 mit etwa doppeltem Takt und doppelter skalarer MFLOPS-Leistung sowie vierfacher Vektor-MFLOPS-Leistung angegeben
- Der Cray Y-MP ist ein System mit zwei Vektoreinheiten
- Die Core-i5-AVX-512-Ergebnisse bei Vector Whetstone liegen im Mittel bei 28.303 MFLOPS mit einfacher Genauigkeit und 20.346 MFLOPS mit doppelter Genauigkeit
- Gegenüber dem Cray 1 entspricht das dem 602- und 433-Fachen
- Die maximale Geschwindigkeit mit einfacher Genauigkeit beträgt 75,1 GFLOPS
- Vector Whetstone auf dem Raspberry Pi 400 erreicht im Mittel 2131 MFLOPS mit einfacher Genauigkeit und 1184 MFLOPS mit doppelter Genauigkeit
- Gegenüber dem Cray 1 entspricht das dem 45- und 25-Fachen
Multithreaded Whetstone und MP MFLOPS
- MP Whetstone führt mehrere Instanzen des Standard-Whetstone-Codes in einem einzigen Programm mit 1, 2, 4 oder 8 Threads aus
- Verwendet wird dies, um den Multi-Core-Durchsatz im Vergleich zu einem einzelnen CPU-Kern zu zeigen
- Laut Performance Monitor lief der Core-i5-Laptop mit etwa 4150 MHz bei 1 und 2 Threads sowie etwa 3800 MHz bei 4 und 8 Threads
- Die MP-Whetstone-Ergebnisse mit 8 Threads lauten:
- Core-i5-Laptop mit AVX-512: 1521-fach gegenüber dem Cray 1
- Android-Smartphone mit Kryo 570: 757-fach
- Raspberry Pi 400: 400-fach
- MP MFLOPS ist ein Benchmark, der Kombinationen aus Gleitkomma-Multiplikationen und -Additionen ausführt und so nahezu maximale Leistung sichtbar machen soll
- Er führt 2, 8 oder 32 floating point operations per data word aus
- Standardmäßig nutzt er 8 Threads, kann aber beim Start per Parameter auf bis zu 64 Threads gesetzt werden
- Die besten MP-MFLOPS-Ergebnisse des Core-i5-Laptops sind:
- Einfache Genauigkeit: 325.915 MFLOPS, 2671-fach gegenüber dem Cray 1
- Doppelte Genauigkeit: 160.641 MFLOPS, 1317-fach gegenüber dem Cray 1
- Android-Smartphone mit einfacher Genauigkeit: 35.686 MFLOPS, 293-fach gegenüber dem Cray 1
- Raspberry Pi 400 mit einfacher Genauigkeit: 30.150 MFLOPS, 247-fach gegenüber dem Cray 1
Numerische Genauigkeit und schneller als erwartete Ergebnisse
- Bei Livermore Loops mit AVX-512 gab es Fälle, in denen manche Prüfsummen nur noch 12 bis 13 statt zuvor 15 bis 16 Stellen genau waren
- Fused-Operationen scheinen nur einmal zu runden, statt nach jeder einzelnen Anweisung
- Auch bei Linpack mit AVX-512 und Whetstone mit SSE wurden auf dem Core-i5-Laptop nicht standardkonforme Sumchecks oder Ergebnisabweichungen verzeichnet
- Einige SSE- und AVX-Ergebnisse liegen über den in der Dokumentation erwarteten maximalen MFLOPS/MHz-Werten
- Das Core-i5-SSE-Beispiel bei Livermore Loops liegt bei 3,56 MFLOPS/MHz, was ohne FMA als nicht erreichbar gilt
- Das AVX-Beispiel liegt bei 4,86 MFLOPS/MHz und damit 21,5 % über dem erwarteten Maximum
- Eine Prüfung des disassemblierten Codes ergab, dass diese SSE- und AVX-Beispiele keine Anweisungen im fused multiply and add-Format enthielten
- Der disassemblierte AVX-512-MP-MFLOPS-Code enthält fused multiply/add/subtract-Anweisungen
- Es gibt 21 arithmetische Vektorbefehle; die minimale Befehlszahl in vollständiger FMA-Form beträgt 16, sodass die erreichbare Geschwindigkeit mit 76,19 % gegenüber vollständigem FMA berechnet wird
- Durch diese Anpassung sinkt die geschätzte Cray-1-Maximalgeschwindigkeit für die Ausführung dieser Funktion von 160 MFLOPS auf 122 MFLOPS
Je nach Arbeitslast unterschiedliche Abstände
- Die repräsentativen Faktoren gegenüber dem Cray 1 für Core i5 mit AVX-512, Android-Smartphone und Raspberry Pi 400 unterscheiden sich je nach Arbeitslast stark
- Beim Single-Core-Vergleich erreicht der Core i5 mit AVX-512 im Mittel 359-fach bei Livermore Loops, 337-fach bei Linpack und 226-fach bei Whetstone
- Das Android-Smartphone erreicht im Mittel 123-fach bei Livermore Loops, 74-fach bei Linpack und 151-fach bei Whetstone
- Der Raspberry Pi 400 liegt ungefähr bei 79-fach bei Livermore Loops, 50-fach bei Linpack und 96-fach bei Whetstone
- Bei Workloads, die Multiprogramming, Multithreading und SIMD nutzen, fallen die Unterschiede deutlich größer aus als bei einem einfachen Single-Core-Vergleich; wegen Kernzahl, Taktabsenkung und big/LITTLE-Konfiguration moderner CPUs ist Multi-Core-Leistung zudem schwerer vorherzusagen
1 Kommentare
Meinungen auf Hacker News
Bei solchen Vergleichen frage ich mich noch vor den Benchmarks, was wohl die „heroischste“ reale Berechnung war, die damals auf einer Cray-1 gelaufen sein dürfte, und wie man sie heute auf Hardware wie einem Raspberry Pi nachstellen könnte.
Es könnte ein Wetter- oder Klimamodell gewesen sein, oder Strahlungs-Hydrodynamik. Verglichen mit moderner Finite-Elemente-Software wäre die Genauigkeit fast sicher sehr gering, aber der Versuch an sich wäre interessant.
Die erste Maschine ging nach Los Alamos.
https://www.theatlantic.com/technology/archive/2014/01/these...
Es wäre schön, wieder Zugriff auf den damals geschriebenen Code zu bekommen. Was auf der Cray Minuten oder Stunden dauerte, könnte heute auf einem Raspberry Pi in wenigen Sekunden laufen.
Also ja, sie wurde für Wetter- und Klimaberechnungen genutzt.
Ich kannte jemanden, der in einem nationalen Labor mit einem eigenen Cray-1-Supercomputer arbeitete; er stand in einem Maschinenraum mit einem großen Beobachtungsfenster, damit Besucher ihn bewundern konnten.
Kurz bevor eine große VIP-Führungsgruppe kam, versteckte er sich in der Cray-1 und wartete. Als die Gruppe ankam, trat er aus der Cray-1 heraus, zog den Reißverschluss seiner Jeans hoch und machte ein erleichtertes, verlegenes Gesicht. Dann tat er so, als sei er überrascht, die ihn durch das Fenster anstarrende Gruppe zu sehen, und verschwand hastig.
Abgesehen von Benchmarks frage ich mich, ob es Software gibt, die einem ein solches Geschwindigkeitsgefühl vermitteln würde.
Die GUI-, IDE-, Compiler- und Office-Software, die ich heute nutze, fühlt sich wie weiterentwickelte Versionen dessen an, was auf einem 386 lief. Die Software, die heute beim Met verwendet wird, ist sicher für millionenfach schnellere Computer entworfen, aber irgendwo müsste es doch Software geben, für die damals eine Cray nötig war.
Sie hatte eine Terminaloberfläche und wurde nicht für interaktive Echtzeit-Anwendungen genutzt.
Zum Beispiel die Berechnung von Streuquerschnitten aus Matrixelementen oder Workloads mit viel vektorisierbarer linearer Algebra.
Wenn man an Maschinenbau denkt, könnten damals Simulationen gelaufen sein, wie sich ein Auto bei einem Aufprall verformt. Heute kann man ähnliche Simulationen in Videospielen zum Spaß in Echtzeit ausführen. Soweit ich weiß, wird das in Spielen kaum gemacht, weil sie kein physikalisch exaktes Modell brauchen, aber möglich wäre es.
Beim Rendering ist es ähnlich. Damals brauchte jedes Einzelbild von Toy Story Stunden zum Rendern; heute erzeugen wir, darüber kann man streiten, bessere Grafik in Echtzeit.
Ich warte auf Jeff Geerlings Folgevideo, in dem er einen Raspberry Pi in ein Cray-1-Gehäuse steckt.
Eine kleinere Version für den Raspberry Pi wäre auch cool.
Ein Vergleich mit RISC-V mit Unterstützung für Vector 1.0 ergäbe mehr Sinn.
Schließlich war die Cray-1 eine Vektormaschine.
Anders als die Cray-1 bietet der Raspberry Pi nicht genügend Platz zum Sitzen.
Noch mehr, wenn man die eingesparten Stromkosten bedenkt.
Kaum eines davon kühlt ordentlich. Das flirc ist gut, und die mit Lüfter nerven einfach.
Ich hätte gern ein Pi-Gehäuse mit integriertem Breadboard.
Oder eins, auf dem man bequem sitzen kann.
2013 kaufte ich mir die neueste und teuerste Intel-x86-CPU und baute einen neuen PC zusammen.
Meine Frau kam ins Büro, sah die Diagramme auf dem Bildschirm und sagte: „Nach Arbeit sieht das nicht aus, aber ich weiß auch nicht so recht, was du da machst?“
Ich antwortete: „Ich berechne, wann mein PC der schnellste Computer der Welt gewesen wäre. Sieht so aus, als hätte er 1992 besser gerechnet als ein brandneuer 90-Millionen-Dollar-Supercomputer des Verteidigungsministeriums, der einen ganzen Raum füllte. Kannst du das glauben?“
Darauf kam zurück: „Schön. Und wie hilft uns das, unsere Kreditkartenrechnung zu bezahlen?“
Spaß beiseite: Für solche Berechnungen gibt es ziemlich viele Daten, zum Beispiel hier: https://en.wikipedia.org/wiki/TOP500
Wenn man in die Vergangenheit extrapoliert oder alte Daten sucht, kam ich in meinen Berechnungen zu absurden Ergebnissen wie: Würde man diesen PC ins Jahr 1981 bringen, wäre er schneller als alle Computer der Erde zusammen.
https://www.top500.org/system/173736/
Als es 2004 eingeführt wurde, war dieses Array aus 1100 Apple-PowerPC-970-Systemen der siebtstärkste Computer der Liste.
Die Linpack-Leistung betrug 12.250,00 GFlop/s.
Die Cray-1 hat ein viel besseres Sofa.
Es machte mich traurig zu sehen, dass die Cray-1 im Computer Museum in Mountain View bei Lobby-Veranstaltungen als Lagerfläche für Catering-Material genutzt wurde.
Zusammengefasst: Vor 10 Jahren waren Raspberry Pi und Android-Handys um ein Mehrfaches schneller, und heute sind sie ungefähr 100-mal schneller.
Wenn man bedenkt, dass sie in die Hosentasche passen, ist das ziemlich beeindruckend.
Vor ein paar Jahren habe ich eine SPARCstation 20 Model 60 mit Raspbian auf dem Raspberry Pi verglichen. Diese SPARCstation ist das Referenzsystem des BYTE UNIX Benchmark: https://news.ycombinator.com/item?id=10795324
Dem Benchmark zufolge war der ursprüngliche Raspberry Pi 6- bis 7-mal so schnell wie die SPARCstation 20.