Wohin geht die Reise bei den Supercomputern?
Obwohl der Begriff „Supercomputer“ nicht genau definiert ist, versteht man darunter meist einen Rechner, der erheblich schneller ist als der Großteil der auf dem Markt verfügbaren Geräte und zumindest früher auch nur auf die Verarbeitung nummerischer Aufgaben, also wissenschaftliche Berechnungen / Simulationen ausgelegt ist, nicht jedoch für Dinge wie sie in Betrieben öfters anfallen wie die Verwaltung von Datenbanken, das Entgegennehmen der Eingaben von vielen Mitarbeitern an Terminals etc.
Die ersten schuf Seymour Cray bei der Firma CDC Ende der sechziger Jahre. Später machte er sich selbstständig und gründete die Firma Cray Research. Unter diesem Namen erschienen dann auch über ein Jahrzehnt lang die schnellsten Rechner der Welt. Crays Rechner waren Vektorrechner. Dahinter steckt eine bestimmte Architektur: Jeder Befehl benötigt folgende Schritte:
- er muss aus dem Speicher geholt werden
- er muss dekodiert werden (das heißt man muss überhaupt wissen welcher Befehl auszuführen ist)
- er wird ausgeführt
- und es kann sein dass Ergebnisse zurück in den Speicher geschrieben werden.
Bei einer Rechenoperation fanden immer diese vier Schritte statt. Crays Architektur sah nun neben einfachen Rechenoperationen auch solche vor, die auf allen 64 Registern durchgeführt wurden. Dabei wurde pro Takt ein weiteres Register bearbeitet. Von den vier Schritten blieb so nur noch die Ausführung übrig und die Geschwindigkeit stieg um das dreifache bei einer Cay 1. Zwanzig Jahre später wurde dasselbe Prinzip unter der Bezeichnung SIMD (Single Instruction, Multiple Data) auch bei Intel/AMD eingeführt.
Die Vektorrechner waren lange Zeit dominierend. Ab Anfang der neunziger Jahre kam aber die Konkurrenz in Form von Rechnern mit Tausenden von PC Prozessoren auf. Der grundlegende Nachteil des Vektorprozessors ist, dass es keine Architektur von der Stange ist. Die Investitionskosten in jede neue Chipgeneration steigen aber an, weil die Strukturen immer kleiner werden. Bei nur wenigen verkauften Stück wurden so die speziellen Architekturen von Vektorrechnern immer teurer vergleichen mit den Rechenleistungen die sie boten. Der letzet Vektorrechner ist der Earth Simulator, doch auch er ist ein Einzelstück und ging schon vor vielen Jahren in Betrieb.
Rechner auf Basis von PC Prozessoren sind die heute am verbreitetesten Systeme. Auch hier gab es den Trend weg von speziellen Lösungen mit eigenen Bussen für die Verbindung oder gemeinsamen Speichern hin zu fast normalen Servern – jede Platine ein Prozessor mit eigenem Speicher, verbunden über schnelles Ethernet. Der Hauptnachteil ist dass heutige PC Prozessoren noch sehr viel Strom verbrauchen und mit den Kühlern auch viel Platz. Bei der Steigerung der Rechenleistung darf man auch nicht vergessen, dass die ersten Rechner von Cray ein Gerät waren, in etwa so große wie ein Schrank und heute Supercomputer eine ganze Halle belegen. Der Earth Simulator sogar ein zweigeschossiges eigens gebautes Haus (Eine Etage Rechner, eine Etage Klimaanlage) mit eigenem Kraftwerk.
Ein Ausweg könnten Embedded Prozessoren sein und Grafikhardware. Embedded Prozessoren wie sie in Handys, Satelliten Receivern etc. zu finden sind weitaus niedriger getaktet als PC Prozessoren, so benötigt man noch viel mehr davon. Aber im Vergleich MIPS/Watt sind sie erheblich besser. Schlussendlich kommt es aber auf die Summe an, d.h. den Gesamtstromverbrauch mit Speicher und Klimaanlage und natürlich auch die Packungsdichte die erreicht wird. Immerhin: Seit Jahren halten sich einige Systeme von IBM auf Basis von Embedded Varianten der PowerPC Prozessoren in den Spitzenplätzen der Top 500.
Der zweite Trend sind zweckentfremdende GPU, die Grafikprozessoren. Schon vor einigen Jahren gab es Projekte Playstations zu vernetzen und daraus einen Supercomputer zu kreieren. dann brachte IBM den Cell Prozessor nicht nur in einer Variante für die Playstation heraus sondern auch für Supercomputer. Er blieb aber IBM-typisch sehr teuer. Heute rüsten AMD und NVidea ihre GPU nach, dass sie auch doppelt genaue Berechnungen beherrschen, die bei wissenschaftlichen Fragestellungen ein Muss sind. Eine einzelne High-end Grafikkarte hat einige Hundert bis fast Tausend Recheneinheiten. Selbst bei niedrigerem Takt und langsamerer Ausführung eines Befehls ist sie bei optimaler Programmierung rund zehnmal schneller als die schnellste handelsübliche CPU. Das Problem ist die „optimale“ Programmierung, denn die Performance bricht ein wenn diese nicht vorliegt und bestimmte Dinge kann eine GPU nur langsam berechnen. Auch der Befehlssatz ist nicht mit dem eines „normalen“ Prozessor zu vergleichen.
Ich sehe noch eine zweite Möglichkeit die es geben könnte. Die Benutzung freier Kapazität bei normalen PCs Heute hat das Groß der neu gekauften PCs einen Mehrkernprozessor der meistens Däumchen dreht. Bald werden drei, fünf oder sieben Prozessoren Däumchen drehen. Diese Rechenleistung kann man nutzen. Das Problem ist nur die langsame Verbindung untereinander (über Internet) und die asynchrone Kommunikation (abhängig vom Nutzungsverhalten des Users). Heutige Projekte haben auch noch den Nachteil, dass es nur wenige Dinge gibt die man auf einem PC machen kann ohne gleich eine größere Anwendung zu installieren. Das zweite Problem ist eben die angesprochene Kommunikation. Bei einem Klimamodell wie auch anderen Simulationen ist es so, dass zwar man das Modell in kleine Zellen zerlegen kann, aber diese Zellen eben nach einem Berechnungszyklus Daten austauschen müssen – beim Wetter oder Klima wandern Wolken weiter, Der Luftdruck hängt vom Nachbarfeld ab ebenso die Luftfeuchtigkeit und Temperatur etc.. Wenn ein Rechner dann mehrere Tage offline ist geht an dieser Stelle nichts. auffangen könnte man dies durch Redundanzen (mehrere Rechner bekommen dasselbe Packet) und einen großen Speicher um die Daten zu sammeln bis das Modell fertig ist.
Es gibt allerdings einige Problemfälle bei denen das dezentrale Rechnen möglich ist. In der Pharmaforschung werden z.B. für einen Wirkstoff funktionelle gruppen verändert und dann simuliert ob er in die Reaktionszentren bekannter Moleküle passt. Jede Kombination Wirkstoff/Rezeptor kann separat berechnet werden. Es gibt schon Pharmahersteller bei denen nach Büroschluss auf den Arbeitsplatzrechnern derartige Simulationen laufen – bei einigen Hundert Arbeitsplatz PC ersetzt das schon mal einen Großrechner. Idealerweise wäre es wenn die Software vorinstalliert wäre und von PC Herstellern ausgeliefert werden würde. Wenn man das dem Benutzer gut verkaufen würde „Ihr Rechner trägt dazu bei ein neues Mittel gegen Darmkrebs zu finden“ oder „Sie tragen dazu bei die Auswirkungen der Klimaerwärmung zu bestimmen“. Eventuell könnte man sogar Wahlmöglichkeiten vorsehen. Voraussetzung wäre, dass der Benutzer keine Nachteile hätte, also die Software wie der Leerlaufprozess ganz niedrige Priorität hat und auch die Speicherplatzanforderungen gering sind (letzteres wäre wohl eher das Problem).
Auf der anderen Seite sind die Möglichkeiten enorm: Der derzeit schnellste Rechner setzt 224.192 Opteron Prozessoren ein. Es werden rund 200 Millionen PC pro Jahr verkauft. Wenn nur die Hälfte mit der Software ausgerüstet wird und jeder Rechner 1/10 der Rechenleistung eines Opteron liefert (bedingt durch die kurzzeitige Nutzung und andere Software, so ist die Leistung immer noch 50 mal höher als beim größten Rechner weltweit (oder 2000 mal schneller als der letzte Computer auf der Top 500 Liste).
Hi,
diesel Artikel ist mal wieder sehr interessant, hat allerdings nicht das geringste mit Raumfahrt zu tun, wo er laut Blogsoftware gerade eingeordnet ist.
Das der Earthsimulator der letzte Vektorrechner ist, der gebaut wurde, ist interessant. Was die Benutzung der freien Kapazitäten angeht, so wird das nicht nur in der Pharmaindustrie praktiziert, sondern einige Enthusiasten vom Seti-Projekt nutzen es doch auch schon seit Jahren, Stichwort: Seti@home.
Hans
Moin,
wohin geht die Reise ? Ich denke von Supercomputer zum Desktop.
Es gibt im Prinzip drei Architekturen:
– Symetrischse Multiprocessing: Heute hat ein normaler Desktop 2 bis 8 CPU Cores.
– Single Instruction Multiple Data: Heute in jeder Graphikkarte vorhanden.
– Shared Nothing Cluster: Heute hat jeder Computer Internet und koennte in der Cloud rechnen.
Leider sind Supercomputer ein Softwareproblem. PVM, MPI, OpenMP, OpenCL, CUDA sind jeweils Kruecken um mit normalen Programmiersprachen einen Supercomputer zu Programmieren. Dabei geht ein grossteil der erhofften Performance durch Bloatware verloren. Was fehlt ist eine neues Programmierparadigma und fuer Supercomputer passende Programmiersprachen.
ciao,Michael
@Michael K.: So wie ich Deinen Kommentar verstehe, scheinst Du mit Supercomputern und der Softwareentwicklung auf selbigen vertraut zu sein. Deshalb schlage ich vor, Du schreibst mal einen Gastblockbeitrag über gängige Programmierparadigmen auf Desktopsystemen und deren Grenzen bei Supercomputern. Wobei die Grenzen der Paradigmen dann auch die Überleitung zu den Problemen darstellen können, die man bei parallelen Architekturen sowieso immer hat, Stichwort „Parallelisierbarkeit“ von Programmen oder Algorithmen.
Denn was die Programmierung angeht, so findet man im Bereich der theoretischen Physik oder der Teilchenphysik auch in aktuellen, d.h. neuen Lehrbüchern hin und wieder Programme zur Berechnung der Probleme, die in Fortran geschrieben sind. Und diese Sprache ist ja bekanntermassen die älteste höhere Programmiersprache überhaupt…
Oder eine Erläuterung, warum PVM, MPI, OpenMP, OpenCL, CUDA jeweils Kruecken sind wäre auch nicht schlecht.
Hans
Das gibt es nicht nur bei Seti@home (bin selber seit fast 10 Jahren dabei), über BOINC läuft eine große Zahl anderer Projekte. Das geht von Quantenphysik über Proteinstrukturen bis hin zur Astophysik.
Eine aktuelle Übersicht der laufenden Projekte gibt es auf http://www.rechenkraft.net/