Bei Vektorrechnern ist alles viel komplizierter:

Kopfrechnen hilft bei Problemlösung

17.04.1987

MÜNCHEN (CW) - Die Bewertung und der Vergleich von Supercomputern gehört zu den schwierigsten Aufgaben, denen sich ein potentieller Anwender eines solchen Systems gegenübersieht. Es gibt eine ganze Reihe von Einflußgroßen, die dabei zu berücksichtigen sind.

Bei den "normalen" skalaren Großrechnern sagt die Mips-Zahl (Millionen Instruktionen pro Sekunde) schon einiges aus, doch auch bei Skalarrechnern sind Mips nicht unbedingt Mips. So kann ein Rechner mit niedriger Mips-Zahldurchaus einen mit höherer auf dem Gebiet der arithmetischen Operationen schlagen, wenn ersterer eine sehr schnelle Arithmetikeinheit besitzt. Schon an diesem Beispiel sieht man, daß das Messen und Vergleichen von Leistungen mit sehr viel Aufwand, Sorgfalt und einer gewissen Herstellerunabhängigkeit betrieben werden muß.

Auf den ersten Blick scheint es völlig uninteressant zu sein, nach der Skalargeschwindigkeit eines Supercomputers zu fragen. Da aber ein Vektorrechner auch einen gewissen skalaren Anteil hat, ist diese Größe von Bedeutung. Dieser Zusammenhang wird im Amdahlschen Gesetz ausgedrückt und soll an einem hypothetischen Beispiel verdeutlicht werden.

Skalaranteil zieht Gesamtleistung herunter

Bei einem Job mit 85 Prozent vektoriellem und 15 Prozent skalarem Anteil erreicht ein Rechner mit einer maximalen Skalargeschwindigkeit von 2,5 MFlops und einer maximalen Vektorgeschwindigkeit von 300 MFlops eine effektive Geschwindigkeit von nur 16 MFlops. Verdoppelt man nun die skalare Leistung auf 5 MFlop und halbiert die vektorielle, so steigt bei diesem Job die Gesamtleistung auf 28 MFlops. Der 15prozentige skalare Anteil zieht also die Gesamtleistung deutlich herunter.

Ein weiterer wichtiger Gesichtspunkt ist die sogenannte "Start-up"-Zeit, die zur Vorbereitung einer Vektoroperation benötigt wird. Da einem unbedarften Anwender die Zahl der Takte wenig sagt, wurde hier nach der Vektorlänge gefragt, bei der es sich lohnt, die Vektoreinheit zu nutzen. Diese Zahl ist sehr wichtig und je niedriger, desto besser. Man kann dann nämlich schon bei sehr kurzer Vektorlänge die Vektoreinheit gewinnbringend einsetzen. Die Werte finden sich normalerweise nur in internen Benchmark-Untersuchungen oder in fachspezifischen Veröffentlichungen.

In Fachkreisen bekannt - für viele Anwender wahrscheinlich neu - sind die sogenannten Hockney-Zahlen, nämlich n(unendlich) und n1/2. Der englische Professor Hockney hat sie schon 1981 zur zweidimensionalen Klassifizierung von Vektorrechnern benutzt. Inzwischen wurden weitere Parameter wie der Synchronisierungsaufwand für die Parallelrechnersysteme hinzugefügt. Die üblichen Angaben der Hersteller, wie beispielsweise die Maximalleistung, reichen eben nicht für eine sinnvolle Einordnung aus.

Spitzenleistung wird in der Praxis nie erreicht

Diese Spitzenleistung (die Geschwindigkeit für unendlich lange Vektoren) läßt Hockney mit eingehen. Da diese Leistung in der Praxis jedoch nie erreicht wird, wählte Hockney als zweites Maß die Vektorlänge, bei der ein Rechner die halbe Spitzenleistung erreicht. Auch dieser Wert kann nicht theoretisch bestimmt werden, sondern muß durch Programmkerne vom Anwender gemessen werden.

Nun ist bei Vektorrechnern alles viel komplizierter als in der normalen Datenverarbeitung. Es gibt nämlich nicht nur eine Vektorlänge, bei der diese Leistung erreicht wird. Je nach Rechnertyp ist dann noch zwischen Speicher- und Registeroperationen und sogar noch nach arithmetischen Operationen zu unterscheiden, ob beispielsweise nur zwei Vektoren (dyadische Operation) oder gar drei (triadische Operation; Addition und Multiplikation gekoppelt) verknüpft werden.

Die Herstellerwerte sind als grobe Richtschnur zu sehen und geben dem Nutzer eines solchen Systems ein Gefühl für die wahre Leistung. Wäre beispielsweise beim Hersteller X n 1/2 = 1000 und n = 1000 MFlops, würde man erst bei einer Vektorlänge von 1000 etwa 500 MFlops erreichen. Dieser Rechner ist dann für kurze Vektorlängen gar nicht geeignet. Alle Probleme müssen mehr als 1000 Zahlenelemente groß sein.

Dieses kleine Beispiel zeigt, daß die Maximalleistung wenig aussagekräftig ist. Zieht man nun auch noch die Skalargeschwindigkeit in Betracht (Amdahlsches Gesetz), so entpuppt sich die Bewertung als ein multidimensionale Problem.

Maximalleistung ist wenig aussagekräftig

Eine zusätzliche Einflußgröße ist die Rechengenauigkeit. Bei vielen Herstellern wird standardmäßig mit 64-Bit-Worten (8 Byte) gerechnet, also auf etwa 14 bis 16 Stellen genau. In technisch-wissenschaftlichen Anwendungen ist das normalerweise erforderlich. Bei manchen Herstellern sind die Rechner so konstruiert, daß sie bei unterschiedlicher Genauigkeit eine andere Leistung zeigen. Wird nur noch die halbe Genauigkeit gewählt, kann man die Leistung verdoppeln .

Neben diesen mehr technischen Daten spielen aber auch Architektureigenschaften eine große Rolle. Dazu gehören einmal die Anzahl und Art der Pipelines in der Vektoreinheit, die arithmetischen Einheiten wie üblicherweise Additions-, Multiplikations- und Divisionseinheit und Masken-Pipelines - zur Vektorisierung von IF-Abfragen - sowie die Pipelines zwischen Haupt- und Registerspeicher. Die Möglichkeiten des parallelen Arbeitens dieser Pipelines beeinflußt natürlich die Gesamtleistung des Systems. Muß beispielsweise auf eine Speicheroperation gewartet werden, drückt dieser Mangel die Leistung nach unten.

Großer Hauptspeicher zwingend erforderlich

Für technisch-wissenschaftliche Problemklassen ist oft ein großer Hauptspeicher zwingend erforderlich. Ist er zu klein, werden statt Rechenoperationen nur Ein- und Ausgaben zwischen Haupt- und Plattenspeicher durchgeführt, die Rechenleistung nicht genutzt. Unter anderem aus diesem Grunde hat Cray den SSD (Solid Storage Device), einen schnellen Zwischenspeicher zwischen Haupt- und Plattenspeicher eingeführt, der direkt adressierbar ist. So können auch große Probleme relativ effektiv gelöst werden. Interessant ist, welche Hersteller sich inzwischen dieser Konzeption angeschlossen haben.

Ein weiterer Speicher zwischen dem Hauptspeicher und den arithmetischen Einheiten - der Registerspeicher - erlaubt das sehr schnelle Ablegen von Zwischenergebnissen, die oft nicht mehr in den Hauptspeicher gebracht werden müssen. Wichtig hierfür ist die Speichergröße, die maximale Vektorlänge, die dort gespeichert werden kann, und die Möglichkeit, die Register an die aktuelle Vektorlänge des Problems anzupassen. Als Beispiel sei hier noch die Sägezahnkurve bei der Cray 1/X-MP genannt: Nach 64 Elementen muß wieder nachgeladen werden.

Oft ein Firmengeheimnis sind die Übertragungsraten zwischen den Speicherhierarchien. Wenn die Daten nicht rechtzeitig in die Rechenwerke geliefert werden, nutzen die besten MFlop-Raten nichts. Aus diesen Übertragungsraten kann man nämlich bei einiger Kenntnis der Architektur die maximale Leistung aufgrund der Datenanlieferungen berechnen.

Autovektorisierung ist von hoher Bedeutung

Hat beispielsweise der Datenbus zwischen Haupt- und Registerspeicher eine Übertragungsrate von 800 MB, so kann der Rechner bei 64-Bit-Arithmetik (8 Byte) und einer Rechenoperation mit drei Speicherzugriffen zur gleichen Zeit nur 100 Millionen Zahlen übertragen. Bei zwei Lade- und einem Speichervorgang kommt man dann auf maximal 33 MFlops (100 Zahlen und 3 Speicherzugriffe), unabhängig von der Geschwindigkeit der Vektoreinheit (wenn sie größer als 33 MFlops ist). Dieser "Flaschenhals" bestimmt damit die gesamte Rechnerleistung. Manchmal hilft schon einfaches Kopfrechnen, um Probleme zu erkennen.

Neben den Hardware-Architektureigenschaften eines Vektorrechners bestimmen natürlich die System- und die Anwendersoftware die Akzeptanz des Anwenders. Von hervorragender Bedeutung ist dabei die Autovektorisierungsleistung des Compilers. Darunter ist die Fähigkeit des Compilers zu verstehen, sehr komplizierte Konstruktionen zu vektorisieren. Hier ist inzwischen der Stand der Technik bei allen großen Herstellern vergleichbar. Alle Hersteller verfügen über Vektorisierungshilfsmittel für den Anwender und bieten noch zusätzliche Unterstützung bei der Handvektorisierung.

Ein weiterer Fragenkomplex hätte den Rahmen dieser Schwerpunkt-Berichterstattung gesprengt, nämlich Ergebnisse nach dem Linpack- oder dem Livermore-Benchmark. Dies wird in eines späteren Ausgabe aufbereitet und kommentiert.