Comparaison des performances entre le Cray-1 et le Raspberry Pi
(roylongbottom.org.uk)- En prenant comme référence le Cray 1, superordinateur de 1978, l’article compare à quel point des Raspberry Pi, appareils Android et PC l’ont dépassé dans les benchmarks Livermore Loops, Linpack et Whetstone
- Les valeurs de référence sont les performances matérielles du Cray 1 à 80 MHz, avec un maximum de 160 MFLOPS ; pour la comparaison réelle, on utilise une moyenne géométrique de 11,9 MFLOPS pour Livermore Loops, 27 MFLOPS pour Linpack et une estimation de 6 MFLOPS pour Whetstone
- Le Raspberry Pi 1 de 2012 était 4,6 fois plus rapide que le Cray 1 selon la moyenne géométrique de Livermore Loops, et en 2020 le Raspberry Pi 400 atteignait respectivement 78,8x, 49,5x et 95,5x sur les trois benchmarks
- En 2021, le CPU Kryo 570 d’un smartphone Android de milieu de gamme atteignait 123x, 74x et 151x en mono-cœur, tandis qu’un portable équipé d’un Core i5 1135G7 obtenait 359x, 337x et 226x avec une compilation AVX-512
- L’écart devient encore plus grand avec le SIMD et le multithreading, mais les opérations fusionnées d’AVX-512 peuvent produire sur certains benchmarks des résultats différents des valeurs attendues jusqu’ici
Les benchmarks de référence et le Cray 1
- Le cœur de la comparaison repose sur les Lawrence Livermore Laboratory program kernels utilisés pour valider les performances du Cray 1 à ses débuts, autrement dit Livermore Loops
- Les résultats utilisent une version convertie en code C dans les années 1990
- Livermore Loops fournit des MFLOPS par boucle ainsi qu’un minimum, un maximum et plusieurs moyennes, la moyenne officielle étant la moyenne géométrique
- Les comparaisons complémentaires s’appuient sur Linpack 100 et Whetstone
- Linpack repose sur
linpack-pc.c, une version adaptée au PC puis intégrée à Netlib - Après Harold Curnow, auteur d’origine de Whetstone, la responsabilité de la conception a été reprise pour créer des variantes étendues, et la version 100 % vectorisée visait au départ le premier système Cray 1 installé au Royaume-Uni
- Linpack repose sur
- Les principales valeurs de référence du Cray 1 sont les suivantes
- Le Cray 1 à 80 MHz est réputé pouvoir atteindre au maximum 160 MFLOPS grâce au linked multiply and add produisant deux résultats par cycle d’horloge
- Les résultats Livermore Loops vont jusqu’à 82,1 MFLOPS, avec une moyenne géométrique de 11,9 MFLOPS et un minimum de 1,2 MFLOPS
- Linpack est à 27 MFLOPS, et Whetstone est estimé à 6 MFLOPS sur la base des résultats du Cray XMP
Le moment où le Raspberry Pi a dépassé le Cray 1
- En 2013, les mêmes programmes, essentiellement identiques aux benchmarks PC sous Linux, ont été exécutés sur le premier Raspberry Pi
- La formule de comparaison de l’époque indiquait que le Cray 1 de 1978 coûtait 7 millions de dollars, pesait 10 500 livres et nécessitait une alimentation de 115 kW, alors que le Raspberry Pi coûtait environ 70 dollars, pesait quelques onces et utilisait une alimentation de 5 W, tout en étant plus de 4,5 fois plus rapide que le Cray 1
- Cette comparaison repose sur la moyenne géométrique officielle de Livermore Loops
- Les trois principales mesures du Pi 1 sont de 55 MFLOPS sur Livermore Loops, 42 MFLOPS sur Linpack et 94 MFLOPS sur Whetstone
- La fréquence CPU est 8,8 fois supérieure à celle du Cray 1
- Les rapports de performance en MFLOPS par rapport au Cray 1 sont respectivement de 4,6x, 1,6x et 15,7x
- En 2020, le Raspberry Pi 400 délivrait à 1800 MHz, en 32 bits, 819 MFLOPS sur Livermore Loops, 1147 MFLOPS sur Linpack et 498 MFLOPS sur Whetstone
- En compilation SIMD 64 bits, le Pi 400 atteint 78,8x, 49,5x et 95,5x les performances du Cray 1
Résultats des CPU ARM sous Android
- En 2012, le benchmark a été adapté pour s’exécuter sous Android en code ARM natif, avec un programme frontal en Java
- Certaines premières tablettes Android manquaient de support matériel ou logiciel pour des calculs en virgule flottante rapides
- En 2012, un ARM Cortex-A9 à 800 MHz obtenait 20 MFLOPS sur Livermore Loops, 11 MFLOPS sur Linpack et 22 MFLOPS sur Whetstone
- La fréquence CPU était 10 fois supérieure à celle du Cray 1, mais les multiplicateurs en MFLOPS n’étaient que de 1,7x, 0,4x et 3,7x
- Plus tard, un V7-A9 à 800 MHz progressait à 115 MFLOPS, 101 MFLOPS et 155 MFLOPS
- Soit 9,7x, 3,7x et 25,8x le Cray 1
- En 2021, le CPU Kryo 570 d’un smartphone de milieu de gamme atteignait à 2000 MHz 1468 MFLOPS sur Livermore Loops, 1986 MFLOPS sur Linpack et 905 MFLOPS sur Whetstone
- Soit 123x, 74x et 151x le Cray 1
- La fréquence CPU était 25 fois supérieure à celle du Cray 1
Performances mono-cœur des PC Windows et Linux
- Depuis les années 1990, des benchmarks pour CPU Intel ont été développés pour DOS, OS/2, Windows et Linux
- Le premier PC à atteindre la moyenne Livermore Loops du Cray 1 fut en 1994 un Pentium 100 MHz
- 12 MFLOPS sur Livermore Loops, 12 MFLOPS sur Linpack et 16 MFLOPS sur Whetstone
- Par rapport au Cray 1, la fréquence CPU et les trois comparaisons MFLOPS sont d’environ 1,3x, 1,0x, 0,44x et 2,6x
- En 1995, le Pentium Pro 200 MHz atteignait 34 MFLOPS sur Livermore Loops, 49 MFLOPS sur Linpack et 41 MFLOPS sur Whetstone
- Soit 2,9x, 1,8x et 6,8x le Cray 1
- En 2007, un Core 2 à 1820 MHz en mono-cœur affichait 413 MFLOPS, 998 MFLOPS et 374 MFLOPS
- Soit 35x, 37x et 62x le Cray 1
- En 2021, un portable Core i5 1135G7 à 4150 MHz obtenait 1387 MFLOPS, 3541 MFLOPS et 802 MFLOPS
- Soit 117x, 131x et 134x le Cray 1
L’effet de la compilation SIMD
- Les résultats compilés avec les options SIMD SSE, AVX et AVX-512 sont également comparés
- SSE utilise des registres vectoriels 128 bits, AVX des registres 256 bits et AVX-512 des registres 512 bits
- En simple précision, ils traitent respectivement 4, 8 et 16 nombres à la fois ; en double précision, 2, 4 et 8
- Avec FMA, les performances maximales théoriques peuvent doubler, mais la précision des résultats peut légèrement varier
- Le benchmark signale ces écarts comme des erreurs
- Dans les résultats SIMD sous Windows, le Core i5 atteint 238x le Cray 1 sur Livermore Loops, 190x sur Linpack et 182x sur Whetstone
- Sous Linux, les résultats compilés avec gcc 9.3.0 et Ubuntu sont encore plus élevés
- Les résultats AVX atteignent 300x, 259x et 179x le Cray 1
- Les résultats AVX-512 montent à 359x, 337x et 226x
- Un exécutable AVX-512 lancé sur un ancien CPU ne prenant pas en charge cette option provoque un échec du programme
Vector Whetstone et comparaison avec les superordinateurs historiques
- Vector Whetstone exécute les mêmes fonctions que Whetstone scalaire, mais sur des emplacements mémoire contigus définis par un paramètre de longueur de vecteur
- Le Cray 1 atteignait ses performances maximales pour des longueurs de vecteur d’au moins 64 mots et présentait un motif en dents de scie
- Le tableau inclut les résultats Whetstone scalaire et vectoriel de 13 superordinateurs entre 1978 et 1991
- Le Cray Y-MP y est présenté avec une fréquence et des MFLOPS scalaires environ deux fois supérieurs à ceux du Cray 1, et des MFLOPS vectoriels quatre fois supérieurs
- Le Cray Y-MP est un système doté de deux unités vectorielles
- Avec AVX-512, le Core i5 obtient sur Vector Whetstone une moyenne de 28 303 MFLOPS en simple précision et de 20 346 MFLOPS en double précision
- Soit 602x et 433x le Cray 1
- La vitesse maximale en simple précision atteint 75,1 GFLOPS
- Le Vector Whetstone du Raspberry Pi 400 atteint une moyenne de 2131 MFLOPS en simple précision et 1184 MFLOPS en double précision
- Soit 45x et 25x le Cray 1
Whetstone multithread et MP MFLOPS
- MP Whetstone exécute plusieurs exemplaires du code Whetstone standard au sein d’un seul programme avec 1, 2, 4 et 8 threads
- Il sert à montrer le débit multi-cœur par rapport à un seul cœur CPU
- Le moniteur de performances indique que le portable Core i5 fonctionne à environ 4150 MHz avec 1 ou 2 threads, et à environ 3800 MHz avec 4 ou 8 threads
- Les résultats MP Whetstone à 8 threads sont les suivants
- Le portable Core i5 avec AVX-512 atteint 1521x le Cray 1
- Le smartphone Android Kryo 570 atteint 757x
- Le Raspberry Pi 400 atteint 400x
- MP MFLOPS est un benchmark conçu pour approcher les performances maximales en exécutant des combinaisons de multiplications et d’additions en virgule flottante
- Il exécute 2, 8 et 32 floating point operations per data word
- Il fonctionne par défaut avec 8 threads, mais peut être lancé avec un paramètre allant jusqu’à 64 threads
- Les meilleurs résultats MP MFLOPS du portable Core i5 sont les suivants
- 325 915 MFLOPS en simple précision, soit 2671x le Cray 1
- 160 641 MFLOPS en double précision, soit 1317x le Cray 1
- Le smartphone Android atteint 35 686 MFLOPS en simple précision, soit 293x le Cray 1
- Le Raspberry Pi 400 atteint 30 150 MFLOPS en simple précision, soit 247x le Cray 1
Précision numérique et résultats plus rapides que prévu
- Avec AVX-512 sur Livermore Loops, certains checksums ont vu leur précision passer de 15–16 chiffres à 12–13 chiffres
- Les opérations fusionnées semblent n’arrondir qu’une seule fois au lieu d’un arrondi par instruction distincte
- Avec Linpack AVX-512 et Whetstone SSE, le portable Core i5 a aussi enregistré un
sumchecknon standard ou des écarts dans les résultats - Certains résultats SSE et AVX dépassent les MFLOPS/MHz maximums attendus d’après la documentation
- Dans l’exemple SSE du Core i5 sur Livermore Loops, on atteint 3,56 MFLOPS/MHz, un niveau considéré comme impossible sans FMA
- L’exemple AVX atteint 4,86 MFLOPS/MHz, soit 21,5 % au-dessus du maximum attendu
- L’examen du code désassemblé montre pourtant que les exemples SSE et AVX concernés ne contiennent pas d’instructions de type fused multiply and add
- Le code désassemblé de MP MFLOPS en AVX-512 contient en revanche des instructions fused multiply/add/subtract
- Il comporte 21 instructions vectorielles arithmétiques, alors que le nombre minimal d’instructions pour une forme FMA complète est de 16, ce qui ramène la vitesse atteignable à 76,19 % d’une implémentation FMA complète
- Avec cet ajustement, l’estimation de la vitesse maximale du Cray 1 pour cette fonction descend de 160 MFLOPS à 122 MFLOPS
Des écarts qui varient selon le type de charge
- Les multiplicateurs représentatifs par rapport au Cray 1 pour le Core i5 AVX-512, le smartphone Android et le Raspberry Pi 400 varient fortement selon le type de tâche
- En comparaison mono-cœur, le Core i5 AVX-512 atteint en moyenne 359x sur Livermore Loops, 337x sur Linpack et 226x sur Whetstone
- Le smartphone Android enregistre 123x sur Livermore Loops, 74x sur Linpack et 151x sur Whetstone
- Le Raspberry Pi 400 se situe autour de 79x sur Livermore Loops, 50x sur Linpack et 96x sur Whetstone
- Sur des charges exploitant des programmes multiples, le multithreading et le SIMD, l’écart devient bien plus important que dans une simple comparaison mono-cœur, et les performances multi-cœurs sont encore plus difficiles à prévoir à cause du nombre de cœurs des CPU modernes, de la baisse de fréquence et des architectures big.LITTLE
1 commentaires
Commentaires sur Hacker News
En voyant ce genre de comparaison, je me demande moins quels sont les benchmarks que quel était le calcul réel le plus « héroïque » qu’on faisait probablement tourner sur le Cray-1 à l’époque, et comment on pourrait le reproduire aujourd’hui sur une machine comme un Raspberry Pi
Ça pouvait être de la modélisation météo ou climatique, ou de la radiative hydrodynamics. Comparé à des logiciels modernes d’analyse par éléments finis, la précision serait presque certainement très faible, mais l’expérience serait amusante
Le premier exemplaire est parti à Los Alamos
https://www.theatlantic.com/technology/archive/2014/01/these...
J’aimerais pouvoir remettre la main sur ce code. Un travail qui prenait alors quelques minutes ou quelques heures sur un Cray tournerait probablement aujourd’hui en quelques secondes sur un Raspberry Pi
Donc oui, il servait aux calculs météo et climat
Je connaissais quelqu’un qui travaillait dans un laboratoire national possédant son propre supercalculateur Cray-1, installé dans une salle des machines avec une grande baie vitrée pour que les visiteurs puissent l’admirer
Juste avant l’arrivée d’un grand groupe VIP en visite, il s’est caché à l’intérieur du Cray-1, puis quand le groupe est arrivé, il en est sorti en remontant la fermeture éclair de son jean, avec un air gêné mais soulagé, avant d’apercevoir le groupe figé derrière la vitre en train de le regarder, faire semblant d’être surpris et disparaître précipitamment
Au-delà des benchmarks, je me demande s’il existe des logiciels qui donneraient réellement cette impression de vitesse
Les GUI, IDE, compilateurs et suites bureautiques qu’on utilise aujourd’hui ressemblent à des versions plus évoluées de ce qu’on faisait tourner sur un 386. Les logiciels utilisés aujourd’hui au Met ont sûrement été conçus en supposant des ordinateurs des millions de fois plus rapides, mais j’ai l’impression que les logiciels qui nécessitaient vraiment un Cray à l’époque existent quelque part
Il y avait une interface terminal, mais il n’était pas utilisé pour des applications interactives en temps réel
Par exemple des calculs de sections efficaces de diffusion à partir d’éléments de matrice, ou des tâches avec beaucoup d’algèbre linéaire vectorisable
Si on pense au génie mécanique, on simulait peut-être alors la déformation d’une voiture lors d’un crash. Aujourd’hui, on peut faire un type de simulation comparable en temps réel dans des jeux vidéo, juste pour le plaisir. Je crois que les jeux le font rarement, car ils n’ont pas réellement besoin d’un modèle physiquement exact, mais c’est possible
Même chose pour le rendu. À l’époque, chaque image de Toy Story demandait des heures de rendu, alors qu’aujourd’hui on produit en temps réel des graphismes meilleurs, même si ça peut se discuter
J’attends la vidéo de suivi de Jeff Geerling où il met un Raspberry Pi dans un boîtier de Cray-1
Une version plus petite pour Raspberry Pi serait aussi superbe
Il serait plus pertinent de comparer avec du RISC-V prenant en charge Vector 1.0
Parce que le Cray-1 était une machine vectorielle
Le Raspberry Pi, contrairement au Cray-1, n’offre pas vraiment beaucoup de place pour s’asseoir
Et encore plus si on ajoute les économies d’électricité
Il y en a très peu qui refroidissent correctement. flirc est bien, et ceux avec ventilateur sont juste pénibles
J’aimerais un boîtier Pi avec une breadboard intégrée
Ou un boîtier dans lequel on peut s’asseoir confortablement
En 2013, j’ai acheté le CPU Intel x86 le plus récent et le plus cher pour monter un nouveau PC
Ma femme est entrée dans le bureau, a regardé les graphiques à l’écran et a dit : « On dirait pas que tu travailles, mais je ne vois pas bien ce que tu fais. »
J’ai répondu : « Je calcule à quelle époque mon PC aurait été l’ordinateur le plus rapide de la planète. Apparemment, en 1992 il aurait déjà mieux calculé que le dernier supercalculateur à 90 millions de dollars du département de la Défense, qui remplissait une pièce entière. Tu te rends compte ? »
Réponse : « Super. Et ça nous aide comment à payer la carte de crédit ? »
Blague à part, il existe pas mal de données pour ce genre de calcul. Par exemple ici : https://en.wikipedia.org/wiki/TOP500
En extrapolant vers le passé ou en retrouvant d’anciennes données, j’arrivais à des conclusions absurdes du genre : si j’envoyais ce PC en 1981, il serait plus rapide que tous les ordinateurs de la planète réunis
https://www.top500.org/system/173736/
Lors de sa mise en service en 2004, cet ensemble de 1 100 systèmes Apple PowerPC 970 était le 7e ordinateur le plus puissant de la liste
Sa performance Linpack était de 12,250.00 GFlop/s
Le Cray-1 a un canapé bien meilleur
J’ai été attristé de voir le Cray-1 du Computer Museum de Mountain View utilisé comme espace de stockage pour le catering des événements du hall
En résumé, il y a dix ans les Raspberry Pi et les téléphones Android étaient déjà plusieurs fois plus rapides, et aujourd’hui ils sont environ 100 fois plus rapides
C’est assez impressionnant quand on pense que ça tient dans une poche
Il y a quelques années, j’ai comparé un SPARCstation 20 Model 60 et Raspbian sur Raspberry Pi. Ce SPARCstation est le système de référence du BYTE UNIX Benchmark : https://news.ycombinator.com/item?id=10795324
D’après les benchmarks, le Raspberry Pi d’origine offrait environ 6 à 7 fois les performances d’un SPARCstation 20