Warum Algorithmen scheiße sind und analogen Computern die Zukunft gehört
Ich weiß, die Überschrift dieses Artikels mag etwas provokant klingen, aber sie ist wahr: Algorithmisches Rechnen lässt sich nicht gut skalieren, wenn es um Probleme geht, die immense Mengen an Rechenleistung erfordern.
Schauen Sie sich einfach die aktuelle Top500-Liste der Hochleistungsrechner an. Der derzeit leistungsfähigste Supercomputer ist der Sunway TaihuLight im National Supercomputing Center in Wuxi, China. Dieses Ungetüm liefert satte 93 Petaflops (ein Petaflop entspricht einer Billiarde Gleitkommaoperationen pro Sekunde), was wirklich unfassbar ist.
Supercomputer und Energieverbrauch
Eine solch enorme Rechenleistung hat jedoch ihren Preis. In diesem Fall werden 10.649.600 Recheneinheiten, so genannte Kerne, benötigt, die 15.371 Megawatt verbrauchen – eine Strommenge, mit der man eine Kleinstadt von etwa 16.000 Einwohnern versorgen könnte, wenn man von einem durchschnittlichen Energieverbrauch ausgeht, der dem von San Francisco entspricht.
Wenn wir unsere Aufmerksamkeit von den leistungsstärksten Supercomputern abwenden und uns stattdessen auf die energieeffizientesten konzentrieren, finden wir das System TSUBAME3.0 am Tokyo Institute of Technology an der Spitze der Green500-Liste. Es liefert 14,11 Gigaflops/Watt bei einer Gesamtleistungsaufnahme von „nur“ 142 Kilowatt, die von seinen 36288 Kernen benötigt wird. In Bezug auf die Energieeffizienz ist dies etwa 2 Mal besser als TaihuLight. Aber 142 Kilowatt sind immer noch verdammt viel Strom.
Aber gibt es denn keine Supercomputer, die nicht so viel Energie benötigen, um zu laufen? Die gibt es in der Tat: Das menschliche Gehirn ist ein gutes Beispiel – seine Rechenleistung wird auf etwa 38 Petaflops geschätzt, etwa zwei Fünftel der Leistung von TaihuLight. Aber alles, was es zum Betrieb braucht, sind etwa 20 Watt Energie. Watt, nicht Megawatt! Und doch erledigt er Aufgaben, die – zumindest bis jetzt – keine Maschine jemals ausführen konnte.
„Gibt es denn keine Supercomputer, die nicht so viel Energie benötigen, um zu laufen? Doch, die gibt es: Das menschliche Gehirn ist ein gutes Beispiel dafür.“
Woher kommt dieser Unterschied? Zunächst einmal ist das Gehirn sozusagen ein Spezialcomputer, während Systeme wie TaihuLight und TSUBAME3.0 viel allgemeinere Maschinen sind, die eine Vielzahl von Problemen lösen können.
Maschinen wie diese werden mit Hilfe eines Algorithmus, eines sogenannten Programms, programmiert. Im Grunde handelt es sich dabei um eine Folge von Anweisungen, die jeder Prozessor ausführt, indem er sie aus einem Speicher-Subsystem liest, Anweisungen dekodiert, Operanden abruft, die angeforderte Operation durchführt, die Ergebnisse speichert usw.
Ein wirtschaftlicher Supercomputer: Das menschliche Gehirn
Alle diese Speicheranforderungen erfordern eine beträchtliche Menge an Energie und verlangsamen die Arbeit erheblich. Hunderttausende von einzelnen Kernen zu haben, erfordert auch eine komplizierte Verbindungsstruktur, um Daten zwischen den Kernen auszutauschen, was ebenfalls die Zeit und den Stromverbrauch für eine Berechnung erhöht.
Ein Gehirn hingegen arbeitet mit einem völlig anderen Ansatz. Es gibt kein Programm, das in seine Arbeit involviert ist. Es wird einfach durch die Verbindungen zwischen seinen aktiven Komponenten, meist den so genannten Neuronen, „programmiert“.
Das Gehirn braucht keine Anweisungen oder Daten aus einem Speicher zu holen, Anweisungen zu entschlüsseln usw. Neuronen erhalten Eingangsdaten von anderen Neuronen, verarbeiten diese Daten und erzeugen Ausgangsdaten, die an die empfangenden Neuronen weitergeleitet werden. OK – das ist ein bisschen zu vereinfacht, aber es reicht aus, um uns zu folgenden Fragen zu bringen:
- 1. Gibt es kein elektronisches Äquivalent für eine solche Computerarchitektur?
- 2. Brauchen wir wirklich Allzweck-Supercomputer?
- 3. Könnte ein spezialisiertes System besser sein, um bestimmte Probleme zu lösen?
Die Antwort auf die erste Frage lautet: Ja, es gibt ein elektronisches Äquivalent für eine solche Architektur.
Es ist ein Analogcomputer.
Analogcomputer
„Analog“ leitet sich vom griechischen Wort „analogon“ ab, das „Modell“ bedeutet. Und genau das ist ein Analogrechner: Ein Modell für ein bestimmtes Problem, das dann dazu verwendet werden kann, eben dieses Problem durch Simulation zu lösen.
So genannte direkte Analoge – die auf dem gleichen Prinzip beruhen wie das untersuchte Problem – bilden die einfachste Klasse solcher analoger Methoden. Ein klassisches Beispiel hierfür sind Seifenblasen, die zur Erzeugung von Minimalflächen verwendet werden.
„Ein Analogrechner ist ein Modell für ein bestimmtes Problem, das dann dazu verwendet werden kann, eben dieses Problem durch Simulation zu lösen.“
Eine allgemeiner verwendbare Klasse enthält indirekte Analogien, die eine Abbildung zwischen dem Problem und dem Rechengebiet erfordern. Typischerweise basieren solche Analogien auf analogen elektronischen Schaltungen wie Summierern, Integratoren und Multiplizierern. Sie können aber auch mit digitalen Komponenten implementiert werden und werden dann als digitale Differenzialanalysatoren bezeichnet.
Beiden Ansätzen ist eines gemeinsam: Es gibt kein gespeichertes Programm, das den Betrieb eines solchen Rechners steuert. Stattdessen programmiert man ihn, indem man die Verbindung zwischen seinen vielen Rechenelementen verändert – ähnlich wie ein Gehirn.
Von analogen zu hybriden Computern
Betrachten Sie meinen eigenen analogen Computerprototyp, der ein Beispiel für einen klassischen analog-elektronischen Computer ist. Das Geflecht von Drähten kann als das Programm der Maschine beschrieben werden. In diesem Fall soll er die Luftströmung um ein sogenanntes Joukowsky-Tragflügelprofil simulieren – keine triviale Aufgabe.
Alle Rechenelemente der Maschine arbeiten vollständig parallel, ohne dass auf einen zentralen oder verteilten Speicher zugegriffen oder gewartet werden muss. Man programmiert den Computer, indem man die Verbindungskabel ein- und aussteckt. Das kann für einen einzelnen Forscher und für Lehrzwecke recht nützlich sein, aber für einen echten Allzweck-Analogrechner müsste man sich von dieser manuellen Steckprozedur befreien.
Glücklicherweise ist es mit der heutigen elektronischen Technologie möglich, integrierte Schaltkreise zu bauen, die nicht nur die grundlegenden Rechenelemente enthalten, sondern auch eine Kreuzschiene, die von einem angeschlossenen Digitalrechner aus programmiert werden kann, wodurch das Rattennest von Drähten ganz entfällt.
Solche Analogrechner erreichen für bestimmte Problemklassen extrem hohe Rechenleistungen. Unter anderem sind sie unübertroffen bei der Bewältigung von Problemen, die auf Differentialgleichungen und deren Systemen beruhen – was auf viele, wenn nicht sogar die meisten der heute wichtigsten Probleme in Wissenschaft und Technik zutrifft.
In einer Veröffentlichung aus dem Jahr 2005 beschrieb Glenn E. R. Cowan beispielsweise einen Very-Large-Scale-Integrated Analog Computer (VLSI), also sozusagen einen Analogrechner auf einem Chip. Dieser Chip lieferte satte 21 Gigaflops pro Watt für eine bestimmte Klasse von Differentialgleichungen, was besser ist als das derzeit energieeffizienteste System in der Green500-Liste.
Die analoge Zukunft des Rechnens
Analoges Rechnen, das bis in die 1970er Jahre die vorherrschende Form des Hochleistungsrechnens war, ist weitgehend in Vergessenheit geraten, seit die heutigen programmgesteuerten Digitalcomputer die Oberhand gewonnen haben. Doch die Zeit ist reif, dies zu ändern.
„Die Anwendungen von morgen erfordern eine höhere Rechenleistung bei wesentlich geringerem Energieverbrauch. Das können digitale Computer nicht leisten.“
Die Anwendungen von morgen erfordern eine höhere Rechenleistung bei einem viel geringeren Energieverbrauch. Aber das können digitale Computer nicht ohne weiteres leisten. Deshalb ist es an der Zeit, moderne analoge Co-Prozessoren zu entwickeln, die den traditionellen Computern die Last der Lösung komplexer Differentialgleichungen abnehmen. Das Ergebnis wären so genannte Hybridcomputer.
Diese Maschinen könnten bei vergleichbarem Energieverbrauch eine höhere Rechenleistung als die heutigen Supercomputer bieten oder in Bereichen eingesetzt werden, in denen nur winzige Energiemengen zur Verfügung stehen, wie z. B. bei implantierten Steuerungen in der Medizin und anderen eingebetteten Systemen.
Zukünftige Herausforderungen
Das analoge Rechnen birgt eindeutig große Chancen für die Zukunft. Eines der Hauptprobleme wird sein, dass sich die Programmierung von Analogrechnern völlig von dem unterscheidet, was Studenten heute an der Universität lernen.
In Analogrechnern gibt es keine Algorithmen, keine Schleifen, nichts, was man kennt. Stattdessen gibt es ein paar einfache, aber leistungsfähige Rechenelemente, die geschickt miteinander verbunden werden müssen, um ein elektronisches Analogon zu einem mathematisch beschriebenen Problem zu erstellen.
Technologische Herausforderungen wie leistungsfähige Verbindungen oder hochintegrierte, aber präzise Rechenelemente erscheinen im Vergleich zu dieser pädagogischen Herausforderung gering. Letztendlich wird die größte Hürde für die Zukunft des analogen Rechnens darin bestehen, die Art und Weise zu ändern, wie die Menschen über das Programmieren denken.