Suche nach neuen Algorithmen, die auf Vektorprinzip optimiert sind, lohnt:

Der Schritt zum superschnellen Computer

30.04.1982

Bisher hatten Physiker meistens Schwierigkeiten, Mammutprobleme einem Rechenzentrum

aufzugeben, da sie damit die herkömmlichen Maschinen vollstopfen. Mit der Erweiterung des Computer-

Horizonts ist es jetzt plötzlich möglich geworden, Aufgaben zu lösen, vor denen man noch vor einem Jahr

kapitulieren mußte. Die aufwendigen Berechnungen für langfristige Wetter und Klimavorhersagen, die auf

ständig sich ändernden Rohdaten beruhen, sind beispielsweise erst möglich, seit man die komplizierten

dynamischen Simulationsmodelle in Echtzeit durchrechnen kann - bekanntlich wartet das Wetter nicht auf

den Computer. Anwendungen für Supercomputer gibt es etwa auch in der Geologie. In der Reaktortechnik,

wo der Rechner die Analyse und Kontrollfunktionen des gesamten Reaktorkerns übernehmen kann, hält

diese neue Technik ebenfalls Einzug.

800 Millionen Operationen lassen sich auf einem Computer rechnen. Die neueste Maschine von

Control Data, die Cyber 205, schafft das im Idealfall in einer einzigen Sekunde. Konrad Zuses Z4, vor 40

Jahren einer der ersten programmierbaren Rechner überhaupt, hätte dafür mehr als acht Jahrzehnte

gebraucht! Ihre fast unvorstellbare Leistungsfähigkeit verdanken die schnellsten Großcomputer nicht nur

dem Schritt von der Mechanik zur Elektronik und der zunehmenden Dichte, mit der die Schaltungen auf

Silizium-Chips gepackt werden, sondern auch dem neuen Konzept des Vektorprozessors, der vielen

technisch-wissenschaftlichen Problemstellungen besser angepaßt ist als der konventionelle skalare

Prozessor, den es in diesen Supermaschinen natürlich auch noch gibt.

Vektoren sind aneinandergereihte Mengen von Datenelementen. Ein Beispiel dafür ist das

Zahlentrippel (2.5, 0.004, 735.28). Wenn man die drei Zahlen mit x(1), x(2) und x(3) bezeichnet, kann man

für den entsprechenden Vektor schreiben x = (x(1), x(2), x(3)). Ein großer Teil der aufwendigen

Rechnungen im technisch-wissenschaftlichen Bereich enthält mehrdimensionale Größen, welche in Form

von Vektoren dargestellt werden. Die neue Computerarchitektur ist solchen Anwendungen deshalb optimal

angepaßt.

An einem Beispiel läßt sich am einfachsten erklären, was den Vektor-Prozessor unterscheidet.

Mathematisch addiert man zwei Vektoren zueinander, indem man die entsprechenden Komponenten

addiert. Will man zwei Vektoren a und b, die aus je 500 Zahlen (a(1), . .., a(500)) und (b(1), ..., b(500))

bestehen, zueinander addieren, so machen das konventionelle Computer wie folgt (siehe Figur 1): Die

ersten beiden Zahlen a(1) und b(1) werden aus dem Speicher geholt, addiert und das Resultat anschließend

als c(1) = a(1) + b(1) wieder abgespeichert. Dann wird der Index von 1 auf 2 erhöht und das Ganze beginnt

von vorn mit den Zahlen a(2) und b(2). Solange der Index die Zahl 500 nicht überschreitet wird das Spiel

wiederholt. Es wird also folgende Programmschleife 500mal durchlaufen:

Während der Skalarprozessor also jede der 500 Rechnungen separat behandelt, werden im

Vektorprozessor aneinandergereihte Mengen von Datenelementen, wie es die Vektoren a und b sind, als

Ganzes verarbeitet. Von den verschiedenen Lösungsmöglichkeiten sei hier diejenige der Cyber-Maschine

stellvertretend erläutert.

Das Prinzip ist in Figur 2 dargestellt. Wir verwenden dasselbe Beispiel wie oben. Die 500

Zahlenpaare a(i) und b(i), die addiert werden sollen, werden laufend vom Speicher in einen Eingangspuffer

und von dort in eine sogenannte Pipeline geschickt, wo sie addiert werden. Die Ergebnisse gelangen dann

über einen Ausgangspuffer in den Speicher. Wichtig ist, daß alles gleichzeitig und kontinuierlich stattfindet.

Das Prinzip dieses "streaming" kann mit dem Betrieb eines Gartenschlauchs verglichen werden.

Wenn man die Ausführungszeiten vergleicht, die der skalare Prozessor und der Vektorprozessor

desselben Computers (selbst die neusten Großcomputer besitzen neben dem Vektorprozessor auch noch

einen traditionellen Skalarprozessor) für die oben beschriebene Vektoraddition brauchen, wird sofort klar,

was das neue Konzept an Geschwindigkeitszuwachs bringt. Die fünf Instruktionen, die der skalare

Prozessor bei jedem Schleifendurchgang ausführt, brauchen zusammen 21 Maschinenzyklen zu je 20

Nanosekunden. Die Addition der Vektoren a und b dauert also 500 x 21 Maschinenzyklen oder 0,21

Millisekunden.

Der Vektorprozessor braucht eine Vorbereitungszeit von ungefähr 50 Maschinenzyklen. Nach 14

weiteren Zyklen "Anlaufszeit" sind die ersten vier Resultate c(1), c(2), c(3), c(4) im Ausgangspuffer, c(5)

und c(6) bereits berechnet in der Pipeline, a(7) . . . a(10) und b(7) . . . b(10) ebenfalls in der Pipeline, und

a(11) . . . a(14) und b(11) . . . b(14) im Eingangspuffer (siehe Figur 2). Alle anderen Zahlen warten im

Speicher, bis sie an der Reihe sind. Jeder weitere Maschinenzyklus produziert ein neues Resultat, so daß

die Aufgabe nach ungefähr 565 Zyklen oder 0,01 Millisekunden gelöst ist.

Der Vektorprozessor ist also in unserem Beispiel fast 20mal schneller als der skalare. Nur bei

ganz kleinen Vektoren lohnt sich die Vorbereitungs- und Anlaufzeit von ungefähr 65 Zyklen nicht. Bei sehr

großen hingegen (in der Cyber-Maschine kann ein Vektor maximal 65535 Zahlen enthalten) fällt sie

überhaupt nicht mehr ins Gewicht. Der Computer liefert dann durchschnittlich bei jedem Maschinenzyklus

ein Resultat. Pro Sekunde sind das 50 Millionen Rechenergebnisse von Gleitkommazahlen (50 Magflops)

bei einer Genauigkeit von 64 Bit. Benötigt man nur 32 Bit Genauigkeit, verdoppelt sich dank einem

raffinierten Trick die Geschwindigkeit auf 100 Megaflops. Der neue Computer schafft aber nicht nur

Additionen so schnell, sondern er kann sogar gleichzeitig noch eine Multiplikation ausführen.

Solche Supermaschinen haben natürlich nur einen Sinn, wenn man ihre Möglichkeiten von

ausschöpfen kann. Anstatt einfach draufloszuprogrammieren oder herkömmliche Programme für den

Vektorprozessor umzuschreiben, sollte sich der Anwender eines solchen Computers schon ein paar

grundsätzliche Gedanken machen. Erstens einmal ist der Einsatz eines Vektorrechners nicht für alle

Probleme gleich gut geeignet - man schießt schließlich auch nicht mit Kanonen auf Spatzen. Zweitens sollte

der Programmierer, wenn er diesen brauchen will, dafür sorgen, daß der Vektorprozessor ungefähr gleich

stark ausgelastet ist wie der simultan laufende skalare. Unter Umständen lohnt es sich sogar, nach ganz

neuen Algorithmen zu suchen, die auf das Vektorkonzept optimiert sind. Die Ergebnisse, die man so

erzielen kann, sind erstaunlich. So erledigt der Cyber 205 zum Beispiel die Auflösung eines

Gleichungssystems von 1000 Gleichungen in 1000 Unbekannten in der extrem kurzen Zeit von 2,5

Sekunden.

*Felix Weber, 8044 Gockhausen, Schweiz.