Supercomputer immer größer und langsamer
Auf meinen heutigen Blog kam ich durch einen Artikel in der Computerzeitschrift ct’ (26/2021, S- 134) in der das Deutsche Klimarechenzentrum anlässlich der Nobelpreisverleihung an Klaus Hasselmann gewürdigt wird und in der auch die Simulationen dort und Computerausstattung gewürdigt wird.
Fangen wir mal an mit einer Definition: Was ist ein Supercomputer? Heute hat man es leicht. Es gibt seit rund zwei Jahrzehnten die TOP 500 Liste, die vierteljährlich aktualisiert wird und welche die 500 schnellsten Rechner weltweit enthält. Man könnte es sich auch einfach machen und einfach sagen: ein Supercomputer ist einer der schnellsten Computer, die es derzeit gibt.
Doch so einfach mache ich es mir nicht. Der Begriff tauchte erstmals auf mit der Cyber CDC 6600, dem ersten von Seymour Cray entworfenen Computer. Er war gleich um einige Male schneller als die vorher führenden Modelle von IBM, die als Antwort sogar extra ein neues Modell ihrer IBM 360 Serie ankündigten. Ein Supercomputer im engeren Sinn ist ein Rechner der besonders schnell Fließkommaoperationen durchführen kann. Sie bilden die Basis von physikalischen Simulationen, die sowohl in der Naturwissenschaft, Technik, wie auch Militär vorkommen. Die Abarbeitung von Befehlen oder die Verarbeitung von Daten ist dagegen weniger stark gefordert. Genau das war aber die Stärke von normalen Rechnern, die in den Sechzigern in Versicherungen oder Banken standen.
Lange Zeit wurden Supercomputer wie andere Rechner auch aus vielen Bausteinen zusammengesetzt. Alleine die CPU belegte mehrere Platinen mit Hunderten von Chips, bzw. bei der CDC 6600 waren es noch einzelne Transistoren. Doch schon vor einigen Jahrzehnten wirkte sich die Physik aus, in Form der Lichtgeschwindigkeit als Konstante. Schneller als das Licht konnte kein Signal sich ausbreiten. In Kabeln aus gut leitenden Metallen können sich Elektronen fast mit Lichtgeschwindigkeit bewegen, in Halbleitern deutlich langsamer. Licht bewegt sich in 1 ns knapp 30 cm weit. In einem Computer kann man mit Verzögerungen beim Übergang auf Platinen und dem anderen Faktoren der nicht optimalen Leitung mit 20 cm rechnen. Die Cyber CDC 6600 lief mit 10 MHz, das sind 100 ns Zeit für einen Takt, in dem ein Signal alle Bauteile durchlaufen haben musste, egal ob dies nur eine Leitung oder mehrere Gatter waren. Passierte es keinen Chip so dürfte die Leitung immerhin 20 m lang sein. Für die CDC reichte es die vier Schränke, aus denen der Rechner bestand in Kreuzform aufzustellen. Nebeneinander sie zu positionieren, wäre allerdings schon nicht gegangen.
Beim Nachfolgemodell Cyber CDC 7600, mit der selben Architektur aber einem Takt von 36,4 MHz ging die Kreuzform schon nicht mehr. Die Schränke wurden nun zu einem „U“ zusammengerückt. Danach machte Seymour Cray sich selbstständig und gründete eine neue Firma. Der Erstling Cray 1 hatte nun einen Takt von 80 MHz. Der ganze Rechner musste noch kompakter werden und sah nun aus wie eine Säure mit einer Sitzbank. Der Durchmesser betrug nur noch 2,6 m, bei einer Höhe von etwa 2 m. Man sollte sich aber nicht täuschen: Der stylische Rechner wog 5 t und als das Max-Planck-Institut in Garching eine Cray 1 erwarb, musste man die Geschossdecke im Stockwerk darunter mit zusätzlichen Säulen stabilisieren.
Mit steigendem Takt wurden die Rechner von Cray dann immer kleiner. Sie mussten es werden, weil die Signallaufzeit immer kürzer wurde und immer noch die CPU aus etlichen Platinen bestand, die alle im Takt arbeiten mussten. Die Cray 2 schrumpfte auf 1,34 m Durchmesser und 1,14 m Höhe, war also in jeder Dimension zweimal kleiner als eine Cray 1. Ihr Takt war auch auf 240 MHz gestiegen und bei Crays letztem Rechner, der Cray 3 setzte er sogar auf dreidimensional vernetzte Module, um die Leitungslängen zu reduzieren. Sie war mit 127 cm Höhe und 107 cm Durchmesser noch etwas kompakter und arbeitet mit 500 MHz Takt. Trotzdem wog der Rechner über 5 t. Vor allem wegen der Kühlung welche die Abwärme abführen musste, das ging bei einem Gesamtstromverbrauch von 180 kW nur durch eine Kühlflüssigkeit.
Aber der technische Fortschritt zwischen Cray 1 und 3 war klein. An der Architektur hatte sich in fast zwanzig Jahren zwischen Cray 1 und 3 kaum etwas geändert. Der Takt war von 80 auf 500 MHz gestiegen und anstatt einem gab es nun 16 Prozessoren. Demgegenüber legte der Takt von Mikroprozessoren von 2,5 auf 150 MHz im gleichen Zeitraum zu und ihre Verarbeitungsbreite stieg von 8 auf 64 Bit – genauso viel wie bei einer Cray. Seymour Crays ehemalige Firma (er hatte für die Entwicklung der Cray 3 eine neue gegründet) produzierte ab 1993 Massiv Parallele Rechner aus anfangs 128 oder 256 Alpha Prozessoren. Andere Firmen hatten schon vorher Mikroprozessoren dafür genutzt. So gab es schon Anfang der Achtziger Jahre die Idee 8086 Prozessoren einzusetzen.
Anders als die Vektorrechner konnte man die Rechner relativ einfach skalieren und so wurden aus einigen Hundert Prozessoren pro Rechner bald einige Tausend. Mit dem ASCI Red übernahm erstmals ein Rechner mit Intel Prozessoren den Spitzenplatz in der Top 500 Liste.
Doch langfristig hatten auch die Mikroprozessoren das gleiche Problem wie Crays Rechner aus vielen Chips – der Takt war nicht beliebig steigerbar. Nur lag der Maximaltakt ,da alle Wege innerhalb des Dies lagen höher. 2003 erreichten die ersten Prozessoren einen Takt von 3 GHz – zehn Jahre zuvor waren es noch 150 MHz gewesen. Von nun an fielen die Sprünge aber kleiner aus. Heute, wiederum fast zwanzig Jahre später, ist man bei dem doppelten, knapp unter 6 GHz angekommen.
Eine Zeitlang sah es so aus, als würde man dies durch mehr Kerne pro Chip ausgleichen können. Die Algorithmen, die in den Simulationen eingesetzt werden, sind gut parallelisierbar. Sehr oft wird eine Rechenoperation an einem Array oder zwei Arrays durchgeführt. Schon bei vielen Prozessoren wies man einfach jedem Prozessor einen Teil eines Arrays zu und so geht das natürlich auch bei mehr Kernen. Intel kündigte auch den Xeon Phi mit 256 Kernen an, kam jedoch bald in Fertigungsprobleme. Der Prozessor verspätete sich und hatte schließlich nur 50 Kerne. Das grundlegende Problem: Anders als bei Tausenden von Prozessoren auf verschiedenen Boards teilen sich alle Kerne einen Speicherbus. Dessen Bandbreite (Transferierte Bytes pro Sekunde) reichte aber nicht aus, Hunderte von Kernen zu versorgen, allenfalls wenige bis vielleicht ein Dutzend. Man konnte das Problem durch immer größer werdende lokale Caches verringern, aber es blieb. Daher konnte Intel auch das 2004 gegebene Versprechen, dass sich jede Generation (alle zwei Jahre) die Zahl der Kerne verdoppelt würde nicht halten. Wäre dem so, so hätten wir heute 512 Kerne pro Prozessor.
Intel schuf sogar eine Architekturerweiterung, die vor allem Supercomputer nutzt: AVX. Bei AVX sind die Fließkommaregister und die entsprechenden Einheiten im Prozessor 256, bei der neuen Generation sogar 512 Bit breit. Eine Instruktion bearbeitet dann immer diese Breite die aber vier bzw. acht 64 Bit Zahlen entspricht und wenn man eine besondere Instruktion nimmt (Fused Multiply Add FMADD) die gleichzeitig eine Multiplikation und Addition durchführt, dann sind es sogar zwei Instruktionen pro Takt. Das ist aber auch bei Supercomputern nicht anders. Der unten erwähnte Fugaku Supercomputer erzielt im praxisnäheren HPCG – High Performance Conjugate Gradient) Benchmark nur noch 13,4 anstatt 442 Pflops, also 2 Gflop pro Kern.
AVX funktioniert aber nur wenn man Intels Bibliothek für Arrayoperationen nutzt, ansonsten scheinen Compiler die Instruktion nicht zu nutzen wie schon vor Jahren die ct’ herausfand. Der Abfall ist dann drastisch. Mein C-Compiler liefert bei meinem Rechner knapp über 800 MFlops pro Kern, ein AVX-Benchmark von Intel bescheinigt ihm dagegen 25,6 Gflops pro Kern, also das 32-fache. Der Unterschied kommt aus 2 Operationen FMADD pro Takt, 4 Werte pro Instruktion und 1 Takt pro Instruktion gegenüber 4 bei normalen Fließkommaoperationen zustande. Immerhin. AVX lieferte nochmals einen Boost bei Supercomputern.
Das letzte war die Hinzunahme von Grafikkaarten-GPUs als Beschleuniger. Diese enthalten Tausende von Recheneinheiten einzelne jede langsamer als ein CPU-Kern, aber die Summe machts. Sie können diese auch besser mit Daten versorgen, da ihre Speicherbusse nicht 64 sondern 512 oder 1024 Bit breit sind und schnelleres GDDR-RAM eingesetzt wird. Das hat aber ihre Grenzen, denn das eigentliche Programm läuft noch auf der CPU ab und nun wird deren normale Leistung bei Nicht-Fliekommabefehlen zum Flaschenhals.
Eines haben aber alle MPP Architekturen gemeinsam – die Rechner brauchen viel mehr Platz. Schon ein Kabinett einer Cray 3T, dem ersten MPP-Rechner von Cray, war größer als eine Cray 2 oder 3 aus der gleichen Zeit. Dabei enthielt dieser Schrank nur maximal 256 Prozessoren. Der aktuelle Spitzenreiter der November 2021 Top 500 Liste, der Fugaku Supercomputer hat 7,630,848 Kerne die eine Spitzenleistung von 442 Pflops schaffen (oder pro Kern 5,7-mal schneller als ein Kern der Cray 3), jeder mit 2,2 GHz getaktet (4,4-mal höher als ein Kern der Cray 3) und er hat einen Strombedarf von 30 MW (Cray 3: 180 kW). Vor allem aber brauchen die vielen Prozessoren sie erheblich mehr Platz. Das Bild zeigt einen Ausschnitt des Fugaku Supercomputers. Insgesamt besteht er aus 432 Racks, die eine ganze Halle füllen, anstatt weniger als 2 m² Fläche wie eine Cray 2 oder 3 einzunehmen.
Die Supercomputer haben heute das gleiche Problem, das auch der PC Benutzer hat – die Rechenleistung steigt immer langsamer an. Der Übergang zu Mikroprozessoren führte dazu, dass man für einen bestimmten Betrag viel mehr Rechenleistung bekam, da diese Bauteile in großen Massen und damit viel billiger als Spezialbauteile für Supercomputer zu haben waren. Seitdem hat sich aber nicht viel getan. Ein PC kostet heute auch genauso viel wie vor zehn Jahren, ja derzeit eher mehr. Entsprechend profitierten Benutzer mit einem festen Budget vor allem durch die Verbesserungen die es in der Architektur gab, also von 1993 bis 2003 rapide ansteigendem Arbeitstakt, seit 2004 von mehreren Kernen pro Chip. Seit 2011 ist AVX einsetzbar und seit 2015 werden GPU hinzugenommen. So betrug die Steigerung bei den letzten Generation des DKRZ:
- 1994 Cray C-916: 16 GFlops
- 2002 „Hurrican“ (NEC SX-16): 1,5 Tflops
- 2009 „Blizzard“ mit 8448 Power-6: 158 Tflops
- 2013 „Mistral“ mit 100.000 Kernen: 3 Pflops
- 2022 „Levante“ mit 350.000 AMD Kernen + GPU: 16 Pflops
Der Gewinn zwischen jeder Generation wurde immer kleiner: Um den Faktor 94 beim Übergang auf den Hurrican, 105 beim Übergang auf „Blizzard“, aber trotz 12-mal mehr Kernen nur noch Faktor 18 beim Übergang auf „Mistral“, und „Levante“ bringt nur noch Faktor 5,3 trotz 3,5-mal mehr Kernen und Grafik-GPUs.
Ja, neue Supercomputer werden nur langsam schneller.
Und das Problem ist nicht die CPU, sondern die Anbindung des Speichers.
Die von Cray designten Supercomputer waren darauf ausgelegt eine 64 Bit Flieskomma Matrixmultiplikation aus dem kompletten RAM zu machen. Damit hatte man eine universelle Maschine für wissentschaftliches Rechnen und Simulationen.
Alle Supercomputer, die aus Mikroprozessoren bestehen, haben das Problem, daß die Bandbreite zum RAM nicht ausreicht. Damit funktionieren Algorithmen, die fast ausschließlich lokale Daten benutzen sehr gut (z.B. Bilderkennung, bestimmte Crash-/Verformungsberechnungen) aber je mehr Informationen aus anderen Zellen benötigt werden, desto mehr bremst dieser Datenzugriff das System aus.
Ein anderes Problem ist die Kommunikation zwischen den einzelnen Prozessoren. Je mehr Daten ausgetauscht werden müssen, desto langsamer wird das Gesamtsystem.