Bibliotheken

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 $+$     .    . 
$1*\mbox{LUBKSB}$ 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!

previous    contents     next

Peter Junglas 18.10.1993