Die schnellsten Supercomputer

Supercomputer-Benchmarks

21.07.2006 von Matthias Bolten
Auf der TOP500-Liste sind die schnellsten Supercomputer der Welt zu finden. Als Benchmark für die Rangordnung wird seit vielen Jahren der inzwischen umstrittene Linpack Benchmark verwendet. Was misst dieser Benchmark eigentlich und welche Alternativen gibt es für Supercomputer?

Zwei Mal im Jahr, im Sommer auf der International Supercomputing Conference in Deutschland und im Winter auf der US-amerikanischen Supercomputing Conference, erscheint die TOP500-Liste der schnellsten Computersysteme. Sie wird von Hans Meuer (Universität Mannheim), Erich Strohmaier (National Energy Research Scientific Computing Center und Lawrence Berkeley National Laboratory), Jack Dongarra (University of Tennessee, Knoxville) sowie von Horst Simon (National Energy Research Scientific Computing Center und Lawrence Berkeley National Laboratory) gemeinsam herausgegeben.

Die Top10 der Supercomputer im Sommer 2006. (Quelle: Top500.org)

Rang

Besitzer

Computer

Prozessoren

Baujahr

R-max

R-peak

1

DOE/NNSA/LLNL (USA)

BlueGene/L - eServer Blue Gene Solution (IBM)

131.072

2005

280.600

367.000

2

IBM Thomas J. Watson Research Center (USA)

BGW - eServer Blue Gene Solution (IBM)

40.960

2005

91.290

114.688

3

DOE/NNSA/LLNL (USA)

ASC Purple - eServer pSeries p5 575 1.9 GHz (IBM)

12.208

2006

75.760

92.781

4

NASA/Ames Research Center/NAS (USA)

Columbia - SGI Altix 1.5 GHz, Voltaire Infiniband (SGI)

10.160

2004

51.870

60.960

5

Commissariat à l'Energie Atomique (CEA) (Frankreich)

Tera-10 - NovaScale 5160, Itanium2 1.6 GHz, Quadrics (Bull SA)

8704

2006

42.900

55.706

6

Sandia National Laboratories (USA)

Thunderbird - PowerEdge 1850, 3.6 GHz, Infiniband (Dell)

9024

2006

38.270

64.973

7

GSIC Center, Tokyo Institute of Technology (Japan)

TSUBAME Grid Cluster - Sun Fire X64 Cluster, Opteron 2.4/2.6 GHz, Infiniband (NEC/Sun)

10.368

2006

38.180

49.869

8

Forschungszentrum Jülich (FZJ) (Deutschland)

JUBL - eServer Blue Gene Solution (IBM)

16.384

2006

37.330

45.875

9

Sandia National Laboratories (USA)

Red Storm Cray XT3, 2.0 GHz (Cray Inc.)

10.880

2005

36.190

43.520

10

The Earth Simulator Center (Japan)

Earth-Simulator (NEC)

5120

2002

35.860

40.960

Als Geschwindigkeitskriterium wird seit der ersten Liste von 1993 ausschließlich der Linpack Benchmark verwendet. Dieser ist jedoch umstritten, da er die Gleitkommaleistung der Supercomputer bei einem in der Praxis selten vorkommenden Problem misst. Aber es gibt auch eine Reihe von weiteren Benchmarks, die andere Aspekte der Systemleistung, die Leistung bei real vorkommenden Problemen oder eine Kombination aus Einzeltests bewerten.

Sinn und Unsinn von Benchmarks

Die theoretische maximale Gleitkommaleistung eines Systems, die "Peak Performance", kann sehr leicht berechnet werden, indem man die theoretisch mögliche Anzahl der Gleitkommaoperationen der CPU pro Takt mit dem Takt und der Anzahl der Prozessoren multipliziert. Diese Angabe wird von den Herstellern gerne verwendet, um die Leistungsfähigkeit ihres Systems zu demonstrieren.

Dieser Wert bietet aber wenig Aussagekraft für die Geschwindigkeit realer Anwendungen. Die Leistung eines Systems hängt in der Praxis nicht nur von der reinen CPU-Leistung ab, sondern auch von anderen Eigenschaften wie der Speicherbandbreite und -latenz. Daher ist es notwendig, mit einem Benchmark die realistische Performance eines Systems zu messen.

Natürlich hängt dabei die gemessene Performance wiederum stark von den verwendeten Algorithmen ab, da jeder Algorithmus andere Anforderungen an ein System stellt. So wird ein Problem, das sich gut parallelisieren lässt und viel mit lokalen Daten arbeitet, mit der Anzahl der Prozessoren skalieren. Systeme mit zehntausenden von Prozessoren erhalten dadurch ein Ranking, das sie in der Praxis nicht erreichen.

Benchmarks für Supercomputer sind daher nicht weniger umstritten als für Desktop-Systeme oder Server. Es ist generell sehr schwierig, die Leistung eines Systems zu messen, da unterschiedliche Anwendungen auch sehr unterschiedliche Anforderungen an ein System stellen. Daher ist schon die Aussagekraft von Benchmarks für normale Arbeitsplatzrechner zweifelhaft.

Die objektive Leistungsmessung von Supercomputern gestaltet sich noch schwieriger, da die dort eingesetzten Applikationen, wie etwa Partikelsimulationen oder Rechnungen aus der Quantenchemie, vollkommen unterschiedliche Anforderungen an den Rechner stellen. Ein Benchmark bevorzugt daher, je nachdem welche Komponenten besonders beansprucht werden, die eine oder die andere Systemarchitektur.

Der Linpack Benchmark

Der Linpack Benchmark stammt von Jack Dongarra, einem der Macher der TOP500-Liste. Er ist eher als Nebenprodukt entstanden. Eine erste Vorläuferversion dieses Benchmarks war im Anhang des Linpack User's Guide, der 1979 erschienenen Dokumentation zu den Linpack-Routinen, zu finden. Das Linear System Package ist eine Fortran-Library zur Lösung linearer Gleichungssysteme. Sie gilt inzwischen als völlig veraltet und ist durch LAPACK (Linear Algebra Package) abgelöst, das weitaus effektiver auf Shared-Memory- und Vektor-Supercomputern läuft.

Der Linpack-Test sollte den Nutzern der Library zunächst nur helfen, die Laufzeit ihrer Anwendungen auf verschiedenen Systemen einzuschätzen. Die Ergebnisse werden auch heute noch regelmäßig von Jack Dongarra im Report Performance of Various Computers Using Standard Linear Equations Software veröffentlicht. Seit 1993 dient der Linpack als Messlatte für die offizielle TOP500-Rangliste.

Der Linpack Benchmark besteht aus drei Teilen:

Fortran n = 100 Benchmark

Hier wird die Zeit gemessen, die ein Rechner benötigt, um eine voll besetzte 100x100-Matrix zu faktorisieren und ein Gleichungssystem mit Hilfe der Zerlegung zu lösen. Bei diesem Benchmark darf das vorgegebene Programm nicht verändert werden, selbst die Kommentarzeilen müssen so erhalten bleiben, wie sie sind. Nur der Einsatz von Compiler-Optionen ist erlaubt.

Linpack n = 1000 Benchmark (TPP, Best effort)

Der zweite Benchmark dient dazu, die maximale Leistung eines Systems zu bestimmen. Hierbei ist analog zum ersten Test ein Gleichungssystem zu lösen, im Unterschied zum ersten Benchmark ist die Dimension des Problems jedoch 1000 x 1000. Außerdem kann der Lösungsalgorithmus frei gewählt und in einer beliebigen Sprache implementiert werden.

Einzige Bedingung für diesen Test ist, dass die Lösung die vorgeschriebene Genauigkeit hat. Das Kürzel TPP steht in diesem Zusammenhang für "Toward Peak Performance".

Linpack’s Highly Parallel Computing Benchmark

Bei diesem Benchmark sind die Bedingungen am lockersten, da hier nicht nur der Lösungsalgorithmus und die Sprache, in der er implementiert ist, frei gewählt werden können. Auch die Dimension des voll besetzten Gleichungssystems ist beliebig. Bedingung ist wiederum nur, dass eine gültige Lösung mit der vorgegebenen Genauigkeit ermittelt wird.

Linpack für die TOP500

Für die TOP500-Rangliste sind die Regeln leicht modifiziert. Das Framework des parallelisierten Linpack und der Algorithmus werden von TOP500.org vorgegeben. Der High-Performance Linpack Benchmark ruft dabei maschinenspezifische Bibliotheken zur Verteilung der Daten und zur Berechnung auf. Die verwendeten Libraries MPI (Message Passing Interface), BLAS (Basic Linear Algebra Subprograms) und VSIPL (Vector Signal Image Processing Library) finden sich auf jedem Supercomputer in einer für den Rechner hoch optimierten Form.

Die Größe der Matrix kann für die TOP500 frei gewählt und auf den jeweiligen Rechner optimiert werden. Da der Algorithmus fest steht, ergibt sich die Anzahl der Rechenoperationen in Abhängigkeit zur Matrixgröße n zu 2/3 n^3 + O(n^2).

Bei den derzeit führenden Systemen der TOP500 mit ihren 10.000 bis 100.000 Prozessoren kommen Matrizen mit einer Größenordnung von einer Million zum Einsatz. Sie enthalten somit 10^12 Zahlen, ihre Lösung benötigt 7 x10^17 Rechenoperationen. Um die eine Million Gleichungen mit ihren einer Million Unbekannten zu lösen, sind die Hochleistungsrechner etliche Stunden voll ausgelastet.

Kritik am Linpack Benchmark

Der Linpack Benchmark bewertet Systeme nur an Hand der erzielten Geschwindigkeit beim Lösen von linearen Gleichungssystemen. Obwohl das Lösen eines linearen Gleichungssystems häufig in wissenschaftlichen und technischen Anwendungen auftritt, repräsentiert der Linpack Benchmark eine untypische Anwendung.

Beim Linpack Benchmark werden voll besetzte („dense“) Gleichungssysteme gelöst. Dabei sind die meisten Einträge der Matrix von Null verschieden. Die Anzahl der benötigten Operationen bei einem Gleichungssystem mit N Unbekannten und N Gleichungen liegt dabei in der Größenordnung von N^3.

Bei den meisten realen Anwendungen müssen jedoch dünn besetzte („sparse“) Gleichungssysteme, bei denen die meisten Einträge gleich Null sind, gelöst werden. Dazu existieren Verfahren, bei denen die Anzahl der benötigten Operationen deutlich langsamer wächst, zum Beispiel quadratisch oder sogar nur linear.

Dadurch müssen die CPUs zwar weniger rechnen, der Aufwand zum Abgleich der Daten bleibt aber gleich. Daher bestimmt die Geschwindigkeit des Speicherzugriffs die zum Lösen benötigte Zeit bei einer sparse Matrix wesentlich stärker als bei voll besetzten Systemen. Ein Beispiel für einen Benchmark, der dies berücksichtigt, ist der von Jack Dongarra und Henk van der Vorst entwickelte SparseBench, mit dem die Leistung eines Systems bei der Lösung eines dünn besetzten linearen Gleichungssystems mit einem so genannten Krylov-Unterraumverfahren bewertet wird.

Alternativen zum Linpack Benchmark

Neben der voll besetzten Matrix kann man gegen den Linpack Benchmark anführen, dass er unausgewogen nur die Leistung bei dieser einen Aufgabe bewertet, die im Wesentlichen von der CPU-Leistung abhängt. Reale Anwendungen erreichen eine Performance, die weit unter der im Linpack Benchmark gemessenen liegt.

Es gibt eine Reihe von alternativen Benchmarks, die speziell für Supercomputer entwickelt wurden. Diese Benchmarks lassen sich in zwei Gruppen unterteilen. Zum einen gibt es Benchmark-Suiten, die aus einer Reihe von Einzeltests bestehen, die jeweils einen Aspekt der Systemleistung messen. So gibt es etwa Tests für die Gleitkommaleistung bei der Matrixmultiplikation oder die Speicherbandbreite. Beispiele dafür sind der HPC Challenge Benchmark oder die PMaC HPC Benchmark Suite. Auch das immer wieder zu findende IDC Balanced HPC Rating gehört hierzu, wobei hier ein Gesamt-Rating durch Gewichtung der einzelnen Untertests erstellt wird.

Die zweite Gruppe von Benchmarks misst nicht einzelne Teile der Systemleistung, sondern ermittelt die Systemleistung durch Testläufe mit Applikationen, die exemplarisch für realistische Anwendungen sind. Vertreter dieser Kategorie sind die NAS Parallel Benchmarks und der SPEChpc2002.

Suiten aus Einzel-Benchmarks vs. Applikations-Benchmarks

Sowohl Suiten aus Einzel-Benchmarks als auch Applikations-Benchmarks haben ihre jeweiligen Vor- und Nachteile. Bei einer Benchmark-Sammlung aus Tests der verschiedenen Systemkomponenten bleibt das Problem der Gewichtung der Einzeltests.

Die Einzeltests kann man jedoch auch für verschiedene Maschinen in einem Kiviat-Diagramm auftragen und so sehr gut beurteilen, welche Maschine am besten für die eigene Applikation geeignet ist. Dies setzt natürlich eine gute Kenntnis der eingesetzten Applikation voraus. Da im High Performance Computing sehr oft eigener Code eingesetzt oder Software genutzt wird, die im Quellcode vorliegt, ist diese Kenntnis jedoch meist vorhanden.

Applikations-Benchmarks ermöglichen auch bei weniger guter Kenntnis des eingesetzten Programms, etwa bei der Verwendung von kommerziellen Applikationen, Rückschlüsse auf die Eignung für den eigenen Einsatzzweck. Die Benchmarks besitzen damit auch für industrielle Anwendungen und die mit der Beschaffung verbundenen Entscheidungsprozesse eine gute Grundlage. Nachteil ist jedoch, dass ein aussagekräftiger Applikations-Benchmark schwierig zu entwerfen ist. Dabei muss man sich sehr viel mehr auf die Entwickler des Benchmarks verlassen, als dies bei Einzeltests nötig ist.

Um die Eignung eines Systems für eine bestimmte Anwendung zu beurteilen, muss daher immer die eigene Anwendung in einem Testlauf auf dem System analysiert werden. Dies ist zum Beispiel bei der Beantragung von Rechenzeit in einem nationalen Hochleistungsrechenzentrum, wie dem Forschungszentrum Jülich, üblich.

Suiten aus Einzel-Benchmarks

HPC Challenge Benchmark

Der HPC Challenge Benchmark stammt unter anderem von Jack Dongarra und besteht aus sieben Einzeltests:

  1. Linpack's Highly Parallel Computing Benchmark

  2. DGEMM (Gleitkommaleistung bei Matrix-Matrix-Multiplikation)

  3. STREAM (Speicherbandbreite)

  4. PTRANS (Leistung des Kommunikationsnetzes bei der parallelen Transposition einer Matrix)

  5. RandomAccess (Änderung des Speichers in zufälliger Reihenfolge)

  6. FFTE (Gleitkommaleistung bei komplexer diskreter Fourier Transformation doppelter Genauigkeit)

  7. Kommunikationsbandbreite und Latenz (basierend auf dem Effective Bandwidth Benchmark b_eff)

An Hand der in diesen Tests erzielten Resultate ist es, sofern die Charakteristika der eigenen Applikation gut bekannt sind, leichter möglich, das optimale System für den entsprechenden Einsatz zu finden.

PMaC HPC Benchmark

Der vom San Diego Supercomputing Center (SDSC) stammende Performance Modelling and Characterization Benchmark besteht aus sechs einzelnen Tests, die jeweils einen unabhängigen Aspekt des Systems bewerten, und ist damit "orthogonal". Die einzelnen Tests sind:

  1. EFF_BW (Effektive Bandbreite des Kommunikationsnetzes)

  2. I/O Bench (Datenrate beim Festplattenzugriff)

  3. MAPS (Speicherbandbreite)

  4. MAPS_CG (Netzwerkbandbreite kollektiver Operationen)

  5. MAPS_Ping (Netzwerkbandbreite und -latenz von Punkt-zu-Punkt-Operationen)

  6. Peak (Gleitkommaleistung)

Applikations-Benchmarks

NAS Parallel Benchmarks

Die NAS Parallel Benchmarks wurden am NASA Ames Research Center im Rahmen des Numerical Aerodynamic Simulation Program entwickelt, um verschiedene Architekturen im Hinblick auf ihre Eignung für „Computational Fluid Dynamics“- (CFD) -Anwendungen zu testen. Die Benchmark Suite besteht aus drei Applikations-Benchmarks und fünf Kernel-Benchmarks, die wesentliche Teile von Anwendungen aus diesem Gebiet testen:

  1. EP (Embarrassingly Parallel - Ermittlung der Gleitkommaleistung mit sehr wenig Kommunikation)

  2. MG (MultiGrid - ein einfacher Multigrid-Algorithmus, der insbesondere von der Kommunikation abhängt)

  3. CG (Conjugate Gradient - Eigenwertberechnung, die typisch für Anwendungen mit unstrukturierten Gittern ist)

  4. FT (Fourier Transform - Lösung einer partiellen Differenzialgleichung mit Hilfe der 3D-Fourier-Transformation)

  5. IS (Integer Sort - Sortierung einer großen Anzahl von Zahlen, wie zum Beispiel bei Partikelsimulationen)

Obwohl die NAS Parallel Benchmarks auf das sehr spezielle CFD-Problem getrimmt sind, besitzen sie eine große Aussagekraft für die Supercomputer-Entwickler: Bei der kommerziell wichtigen Flugzeug- und Automobilindustrie sind die CFD-Simulationen eine der Hauptanwendungen für die Höchstleistungsrechner. Durch die Kernel-Benchmarks gewinnt man aber auch Anhaltspunkte für andere Applikationen.

SPEChpc2002

Die HPC 2002 Benchmarks der Standard Performance Evaluation Corporation messen die Leistung bei drei typischen Anwendungen von Supercomputern. Im Einzelnen sind dies:

  1. SPECchem2002 (Quantenchemie-Anwendung)

  2. SPECenv2002 (Klimaforschung und Wettervorhersage)

  3. SPECseis2002 (Anwendung aus dem Bereich der Seismik)

Die schnellsten publizierten Ergebnisse für den SPECenv2002 Benchmark (Stand Juli 2006)

Tester

Computer

Prozessoren

Threads

SPECenvM2002

Hewlett-Packard Company

HP Cluster Platform 4000 w/XC (DL145 G2) (HP)

192

192

845.04

Hewlett-Packard Company

HP Cluster Platform 4000 w/XC (DL145 G2) (HP)

160

160

817.68

Hewlett-Packard Company

HP Cluster Platform 4000 w/XC (DL145 G2) (HP)

128

128

769.06

Hewlett-Packard Company

HP Cluster Platform 4000 w/XC (DL145 G2) (HP)

96

96

669.48

Hewlett-Packard Company

HP Server RX2600 Cluster (1500MHz Itanium2) (HP)

76

76

545.47

Hewlett-Packard Company

HP Cluster Platform 4000 w/XC (DL145 G2) (HP)

64

64

487.79

IBM Corporation

eServer 325 Cluster (IBM)

128

128

455.01

IBM Corporation

eServer 325 Cluster (IBM)

120

120

432.29

IBM Corporation

eServer 325 Cluster (IBM)

112

112

423.22

Hewlett-Packard Company

HP Cluster Platform 4000 w/XC (DL145 G2)

48

48

417.53

Bei den SPEC Benchmarks wird ein weiteres Feld an Applikationen abgedeckt als bei den NAS Parallel Benchmarks. Nachteilig ist, dass, im Gegensatz zu anderen SPEC Benchmarks, nur eine geringe Zahl von Ergebnissen auf der SPEC-Website veröffentlicht ist.

Fazit

Benchmarking von Supercomputern ist, wie Benchmarking im Allgemeinen, eine schwierige Aufgabe. Der Linpack Benchmark testet die System-Performance sicherlich sehr einseitig. Damit eignet er sich nicht als Entscheidungsgrundlage für die Anschaffung eines Supercomputers.

Er hat aber zwei große Vorteile: Zum einen besitzt dieser Benchmark eine lange Historie, was Vergleiche zwischen Rechnern von 1993 bis heute möglich macht. Dies leistet in dieser Form kein anderer Benchmark. Zum anderen handelt es sich beim Linpack um den kleinsten gemeinsamen Nenner beim Supercomputing, da die Lösung von linearen Gleichungssystemen in vielen Anwendungen die entscheidende Rolle spielt. Selbst wenn dabei andere Algorithmen zum Einsatz kommen und die Systeme eine andere Struktur aufweisen, sind die Ergebnisse doch bedingt übertragbar.

Ein weiterer Vorteil für die meist öffentlich finanzierten Supercomputer ist, dass man auch Laien die Kenngröße Gleitkommaberechnungen pro Sekunde (Flop/s) gut erklären kann. Dies fällt den PR-Abteilungen bei Speicherbandbreite und -latenz oder gar bei mehrdimensionalen Benchmark-Ergebnissen deutlich schwerer.

Sicherlich wären Suiten aus verschiedenen Einzeltests oder Applikations-Benchmarks realitätsnäher als dieser Einzeltest. Allerdings gibt es ein weites Einsatzgebiet für Supercomputer. Es ist daher sehr unwahrscheinlich, dass sich die heterogene Community auf eine Gewichtung der Einzeltests für das Ranking einigt oder gar eine einzelne Applikation auswählt, die zukünftig zur Leistungsmessung im HPC-Bereich verwendet wird. (ala)