Die bestmögliche Ausnutzung der Rechner-Architektur im Rahmen eines
vorgegebenen Algorithmus ist ein sehr kompliziertes Problem und von einem
Anwender in endlicher Zeit nicht zu leisten. Daher wird für Vektorrechner
i.a. eine große Bibliothek mitgeliefert, die für die wichtigsten
numerischen Probleme handoptimierte, oft in Assembler geschriebene Routinen
zur Verfügung stellt. Eine solche Bibliothek für die Convex ist die
Veclib, die mit -lveclib angebunden werden kann. Sind zur Lösung eines
Problems geeignete Routinen in der Veclib vorhanden, sollte man diese
verwenden, statt sie selbst zu schreiben. Die dadurch erzielten
Geschwindigkeitsgewinne sind meistens dramatisch, wie das folgende Beispiel
zeigt:
Im Programm linalg werden die Rümpfe von LUDCMP, LUBKSB und LUINV durch
die entsprechenden Veclib-Routinen DGEFA, DGESL und DGEDI ersetzt, wobei
kleinere Parameter-Anpassungen vorzunehmen sind. Normalerweise würde man
sich einen Unterprogramm-Aufruf sparen und die Veclib-Routinen direkt
benutzen. Eine Messung der Laufzeiten ergibt für die betroffenen Routinen
folgendes Ergebnis:
Routine |
CPU-Zeit |
CPU-Zeit |
. | Zeitersparnis |
. | |
|
eigene Routine |
Veclib |
. | [%] |
. | |
|
|
. | |
LUDCMP |
0 |
. | 048 |
0 |
. | 012 |
75 |
. | 0 |
LUINV |
0 |
. | 081 |
0 |
. | 024 |
70 |
. | 4 |
LUDCMP |
|
|
. | |
|
. | |
LUINV |
|
|
. | |
|
. | |
|
0 |
. | 130 |
0 |
. | 036 |
72 |
. | 3 |
Dabei wurden diesmal die Zeiten incl. der von den Routinen aufgerufenen
Unterprogramme verglichen, da in den LU-Routinen selbst ja nichts mehr
passiert. Die dritte Zeile enthält den gesamten Anteil der LU-Routinen,
wobei zu berücksichtigen ist, daß von den 101 LUBKSB-Aufrufen der alten
Version nur einer mitgezählt werden darf, da die anderen im LUINV-Anteil
mitgerechnet werden.
Der Zeitgewinn ist beträchtlich: Gegenüber dem Faktor 3, der bei den
LU-Routinen beim automatischen Vektorisieren erzielt wurde, kann i.a. nicht
mehr als ein weiterer Faktor 2 durch geeignete Hand-Optimierung gewonnen
werden (d.h. ein Faktor 6 beim Vektorisieren ist fast optimal), hier wurde
aber ein Faktor 4 erreicht!
Peter Junglas 18.10.1993