Benchmarks wurden und werden entwickelt, um Programme und Computer nach
bestimmten Kriterien vergleichbar zu machen.
Insbesondere in der Kategorie Supercomputer ist die Rechenleistung
ein solches interessierendes Kriterium. Seit 1993 wird eine
Top500-Liste der weltweit größten Supercomputer geführt, initiiert
durch Hans Meuer (Mannheim) und Jack Dongarra (Tennessee).
Diese Rangliste beruht auf dem sogenannten HPL-Benchmark (High
Performance Linpack). Dabei besteht die Aufgabe darin, ein
vollbesetztes lineares Gleichungssystem mittels Gauß-Elimination
zu lösen, und das so schnell wie möglich für eine sehr große
Anzahl von Unbekannten.
Man kennt die Zahl der dafür notwendigen Rechenoperationen:
.
Dividiert man diese durch die gemessene Rechenzeit, so erhält man
die Gesamtleistung des Superrechners, die inzwischen nicht mehr in
Mflops, sondern in Gflops angegeben wird.
Es gibt eine Reihe von Faktoren, die diese Leistung beeinflussen, z.B.
die hinsichtlich Cache-Nutzung optimale Implementierung der
BLAS-Routinen, insbesondere derjenigen zur Matrixmultiplikation.
Bei Clustersystemen wie unserem CLiC spielt auch die
Kommunikationsleistung eine entscheidende Rolle. Der Rechenaufwand
lässt sich nur dann erfolgreich auf viele Prozessoren verteilen,
wenn diese ihre Teilergebnisse auch hinreichend schnell austauschen
können. Hardware (Netz, Switch) und Software (MPI-Bibliothek)
müssen mit einer so großen Anzahl von Prozessoren zurechtkommen.
Schließlich hat ein solches Benchmark-Programm zahlreiche Parameter,
mit denen durch noch zahlreichere Tests eine Konfiguration für
optimale Rechenleistung zu finden ist.
Was bringt uns dieser Benchmark außer einer enormen "Verschwendung"
von Rechenzeit?
| (Nov. 2000) | weltweit | in Europa |
|---|---|---|
| alle Supercomputer | 126 | 31 |
| Clustersysteme | 13 | 3 |
| "self-made" | 2 | 1 |
Ab Juni 2001 reichte diese Leistung noch für Platz 156. Aber durch
weitere Verbesserungen an Hard- und Software gelang vor wenigen Wochen
eine nochmalige Steigerung der Bestmarke auf etwa 222 Gflops.
Die dazugehörige Platzierung ist in diesen Tagen
wieder unter http://www.top500.org
verfügbar.
Bei diesem Test auf insgesamt 529 Prozessoren wurde ein System mit
176640 Unbekannten in 4 Stunden und 36 Minuten gelöst.
Allein für die Koeffizientenmatrix dieses Systems war dabei ein
Gesamtspeicher von 238050 MByte (=232 GByte) RAM erforderlich,
was sogar übliche Festplatten überfordert hätte.
|
Das Diagramm (Bild 1) zeigt einige bemerkenswerte Resultate, die während der umfangreichen Tests mit dem HPL-Benchmark-Programm erzielt wurden und eindrucksvoll die Leistungsfähigkeit des CLiC belegen:
Der Demonstration einer Super-Rechnung mit echtem wissenschaftlichen Interesse (Bsp. 3) stellen wir ein "akademisches Beispiel" voran. Dieses Beispiel steht gewissermaßen zwischen obigem Benchmark, der nur der Informationsgewinnung über die Maschine dient und einer richtigen Anwendung, wo natürlich die allerletzte Ausnutzung von Parallelität, ideale Balance zwischen den Prozessoren usw. zurücktreten muss zugunsten von Ergebniserlangung in realistischer Zeit (sowohl Zeit für die Programmerstellung als auch Rechenzeit).
Unser "akademisches Beispiel" ist so angelegt, dass der verwendete Algorithmus hinsichtlich Parallelisierung die typische Anwendung bei Aufgaben mit partiellen Differentialgleichungen repräsentiert. Untypisch ist aber hierbei, dass das Rechengebiet extrem einfach ist. Weiterhin wird eine völlig gleichmäßige Diskretisierung gewählt. Dies hat zur Folge, dass man garantieren kann, dass die Parallelisierungsidee "DD-domain decomposition" (also Zerlegung des Gebiets in p Teilgebiete bei p Prozessoren) eine exakt gleiche Rechen- und Datenlast in allen Prozessoren erzeugt. Auch der Kommunikationsaufwand ist ideal parallelisiert. Das einzig beeindruckende an diesem Beispiel ist die Möglichkeit durch fortgesetztes Halbieren aller Kanten in einem Startnetz (Vierteln aller Dreiecke) beliebig hohe Dimensionen des zu lösenden Gleichungssystems zu erzeugen - solange der Speicherplatz pro Prozessor dies zulässt.
Der wesentliche Unterschied zum Benchmark in Beispiel 1 besteht darin,
dass die bei der FEM entstehenden Matrizen hier schwach besetzt sind,
also nur
Nichtnullelemente für diese Matrizen
(in besonderen Listen) gespeichert werden müssen.
Weiterhin kommt zum Lösen der Gleichungssysteme ein modernes
Iterationsverfahren (hier das Verfahren der konjugierten Gradienten mit
hierarchischer Vorkonditionierung) zum Einsatz. Deshalb ist die Anzahl
der notwendigen Operationen (und der Speicherplatz) proportional zur
Anzahl der Unbekannten N, weshalb Unbekannten-Zahlen von fast
100 Millionen hier ohne
weiteres möglich sind und noch Rechenzeiten unterhalb einer Minute
ermöglichen. Das Testbeispiel repräsentiert die Lösung einer
Diffusionsgleichung in einem quadratischen zweidimensionalen Gebiet
(s. Bild 2/3), was zum Beispiel eine Wärmeverteilung in einem Blech
oder die Schadstoffausbreitung in einer Erdschicht (oder vieles
anderes mehr) sein könnte.
Für alle diese praxisrelevanten Simulationsrechnungen würde man niemals diese extrem feine Vernetzung in viele Millionen Gitterpunkte benötigen, aber man kann hiermit eindrucksvoll die Möglichkeiten von CLiC aufzeigen:
|
|
Wir wollen durch Erhöhung der Prozessoranzahl immer schneller rechnen
können. Dies zeigt die Tabelle 1 in beeindruckendem Maße:
Das Ausgangsnetz mit 128
Grobdreiecken wurde 5- bis 9-mal fortgesetzt geteilt, so dass die in
Spalte 2 angegebenen Unbekanntenzahlen entstehen, die man auf wenigen
Prozessoren unmöglich bearbeiten kann.
Unser Löser berechnet die jeweilige Lösung (unabhängig von der
Prozessoranzahl) in 34..36 Iterationen.
(Die Konstanz dieser Zahl ist notwendig für obige
Aussage: Zeit
).
Nutzt man nun zwischen 16 und 128 Prozessoren des
CLiC, so ergeben sich die angegebenen Zeiten (in Sekunden!).
Zum Beispiel in
der Zeile L=8 kann man wunschgemäß Zeitverhältnisse wie fast
ablesen, (exakt steht 1 : 0.503 : 0.244 : 0.131).
In Klammern sind die durchschnittlichen Anteile an Kommunikationszeiten aller Prozessoren angegeben, die immer dann unter 5% kommen, wenn die Gesamtdatenlast pro Prozessor groß genug ist. (Bemerkung: Von Level zu Level wächst theoretisch der Arithmetikaufwand um den Faktor 4, der Kommunikationsaufwand nur auf das Doppelte, so dass eine Halbierung dieser Prozentzahlen in allen Spalten die Güte unserer Inter-Prozessor-Kommunikation ausweist.)
| L | N | #It | 16 | 32 | 64 | 128 | ||||
|---|---|---|---|---|---|---|---|---|---|---|
| 5 | 263 169 | 34 | 0.80 | (30%) | 6.4 | (50%) | 0.30 | (70%) | 0.30 | (90%) |
| 6 | 1 050 625 | 35 | 3.12 | (10%) | 1.6 | (17%) | 1.04 | (40%) | 0.57 | (50%) |
| 7 | 4 198 401 | 36 | 12.6 | (5%) | 6.4 | (8%) | 3.27 | (10%) | 1.77 | (25%) |
| 8 | 16 785 409 | 36 | 49.5 | (2%) | 24.9 | (4%) | 12.1 | (5%) | 6.51 | (12%) |
| 9 | 67 125 249 | 36 | - | - | 48.6 | (4%) | 24.9 | (6%) | ||
Um zu zeigen, dass solche Rechenleistungen für einige wissenschaftlich technische Berechnungen unabdingbar sind, soll dieses dritte Beispiel angeführt werden. Es handelt sich um den "Deutschen Strömungsbenchmark", der vor einigen Jahren von Heidelberger Wissenschaftlern ausgerufen (und ausgewertet) wurde, um die vielen Strömungscodes in Deutschland hinsichtlich Ergebnisqualität zu bewerten. Dabei hatten sich recht viele Arbeitsgruppen mit 2D-Benchmarkrechnungen beteiligt, aber bei der echt 3-dimensionalen Strömungssimulation waren nur so wenige Ergebnisse vorhanden, dass man eigentlich keine Aussagen treffen konnte. Auch vom SFB 393 wurden damals 3D-Beiträge (Rechnung auf GC Power Plus-128) eingereicht, die aber nur unzureichende Diskretisierungsfeinheit aufweisen mussten (wegen des viel zu kleinen Speicherausbaus dieser Maschine).
Auf CLIC kann man jetzt in neue Größenordnungen vorstoßen und
folgende Vernetzungen bewältigen:
Das Strömungsgebiet ist hier ein langer Kanal, in dem (senkrecht)
ein zylinderförmiges Hindernis umströmt wird. Die
Anströmgeschwindigkeit ist so hoch, dass eine instationäre
Strömung entsteht, die über einige Sekunden zu verfolgen ist, um
typische Parameter (Abtrieb des Zylinders, der neben der Mitte
liegt, und Wirbelfrequenz) zu erkennen. Ein Startnetz aus 700
Hexaedern wurde hierzu 3-mal verfeinert (ergibt das 83-fache
an Elementen und etwa 12 Millionen Freiheitsgrade). Dies ist damit
eine typische Rechnung bei 3-dimensionalen Aufgabenstellungen, die,
ab der hier benutzten Netzfeinheit, die Chance auf realistische
Ergebnisse bietet. Der enorme Zeitaufwand für solche Simulationen
resultiert hauptsächlich aus dem zeitabhängigen Charakter der
Lösung. Deshalb muss man die Zeitachse in kleine Schritte
diskretisieren und je eine Rechnung vom Typ wie in Beispiel 2 für
den Übergang von Zeitpunkt tk zum Zeitpunkt
tk+1
durchführen. Um die Strömung etwa 10 s (Realzeit) zu verfolgen,
werden so mindestens 1000 solche Zeitschritte nötig. Auf CLiC kann man
immerhin einen solchen Zeitschritt in etwa 30 s bewältigen,
so dass für die gesamte Simulation schon 8 Stunden reine
Rechenzeit entstehen. Dies reicht bei weitem nicht aus, da hier
zusätzlich ein beträchtlicher Aufwand für die Ergebnisdarstellung
nötig ist
(z.B. Speichern des Strömungsfeldes als 1 Bild pro Zeitschritt,
woraus am Ende ein filmischer Ablauf rekonstruiert werden kann).
Deshalb wurden für eine vollständige Simulation fast 24
Stunden benötigt. Das Bild 4 gibt somit einen Schnappschuss
der Strömung wieder, die filmischen Abläufe stehen im Web unter
http://www.tu-chemnitz.de/sfb393/software/cfd-exmpls.html
bzw.
http://www.tu-chemnitz.de/sfb393/qt/bm-xyzp_20-31s_small.mov
|
|
|
| Prof. Dr. Arnd Meyer, Dr. Matthias Pester, Fakultät für Mathematik, November 2001 |