Ich ziehe meinen Hut – Part 1
Während...
… ich die Software und diesen Artikel schrieb, ging mir ein Absatz aus dem Wikipedia-Artikel zu den Brüdern Chudnovsky nicht aus dem Kopf. Dort heißt es
Bekannt wurden sie für mehrere Rekorde bei der Berechnung von Pi, die sie teilweise auf in ihrer Wohnung selbstgebauten Supercomputern („M zero“ genannt, er erreichte bis 2 Gigaflop Rechenleistung) Anfang der 1990er Jahre erzielten. Mitte 1991 berechneten sie Pi auf 2 Milliarden 260 Millionen Ziffern und stellten die Rechnungen vorerst ein.
Kurz zusammengefasst…
- Anfang der 1990er Jahre
- Pi auf 2,6 Milliarden Nachkommastellen berechnet
- Mit selbst gebauten „Supercomputern“
Oder zur besseren Einordnung.
Auf der vorigen Seite habe ich beschrieben, dass es äußerst effizient ist, die Fakultäten für die iterativen Berechnungen von Pi, vorzuberechnen da sie mehrfach verwendet werden. Ursprünglich wollte ich die Fakultäten in einem InMemory-Cache ablegen damit ich schnell auf die vorberechneten Daten zugreifen kann.
Das Problem hierbei verdeutlicht die folgende Grafik.
Wie bereits im Vorfeld erklärt, ist die effizienteste Art der Speicherung der Fakultäten, die Speicherung als Binary.
Die Grafik zeigt auf der X-Achse die jeweilige Fakultät x und auf der Y-Achse den Speicherbedarf der Fakultät. Startwert ist 1, Endewert ist 1.000.000.
Für die ersten 5 Fakultäten ist es noch einfach, das passt alles in 1 Byte rein. Jede Iteration in Richtung 1.000.000 benötigt bereits 2 Byte zusätzlich. Die Grafik zeigt ein offensichtlich lineares Wachstum an Datenmenge, was jedoch nicht stimmt. Das Wachstum nennt man überexponentiell.
Wachstum der Datenmenge:
Wenn man die Fakultäten speichert, wächst die Datenmenge entsprechend der Anzahl der Dezimalstellen. Somit folgt die Datenmenge ungefähr:

Das ist kein lineares Wachstum, da die Funktion
schneller wächst als n , aber sie ist auch langsamer als quadratisches Wachstum (
) oder exponentielles Wachstum (
).
Das Wachstum der Datenmenge für die Speicherung der Fakultäten von 1 bis n ist daher quasilinear mit logarithmischer Verstärkung:
.
Die Fakultät von 1.000.000 werden 2.311.106 Bytes benötigt. In Summe benötigen die Fakultäten von 1 bis 1.000.000 genau 1110468855028 Bytes oder 1.1 Terabyte Speicherplatz.
Und davor ziehe ich meinen Hut!
Im Jahr 2024 mit all ihren Tools, Clouds und vielen Möglichkeiten, ist es fast schon einfach sich das Beste auszusuchen und in relativ überschaubarer Zeit das Ergebnis zu erhalten.
Anfang der 1990er begannen die Herausforderungen an ganz anderer Stelle.
“M zero” war ein modular aufgebauter Supercomputer, der aus, damals handelsüblichen PC-Komponenten bestand. Die Brüder hatten nicht die finanziellen Mittel, um einen kommerziellen Supercomputer zu kaufen, und bauten deshalb ihre eigene Maschine in ihrer Wohnung in New York City.
“M zero” beeindruckte durch seine Leistungsfähigkeit, gerade weil er aus einer Mischung aus handelsüblichen Komponenten und technischer Improvisation bestand.
Aufgrund der enormen Hitzeentwicklung des Computers mussten sie spezielle Kühlsysteme einsetzen, um die Maschine vor Überhitzung zu schützen. Es wird berichtet, dass die Klimaanlage ihrer Wohnung kontinuierlich lief, um die Temperaturen zu kontrollieren.
Die Entwicklung und Wartung von “M zero” war sehr aufwändig. Neben den technischen Schwierigkeiten war auch die Rechenzeit ein Problem. Die Berechnungen dauerten Wochen, und jede Unterbrechung hätte den gesamten Prozess zunichte gemacht.
Aber keine Zeit für Sentimentalitäten und weiter gehts!