Benutzung von Bibliotheken

Wie wir bereits gesehen haben, führt die Verwendung von herstellereigenen, an die Maschine angepaßten Routinen für numerische Grundoperationen in der Regel zu erheblichen Geschwindigkeitsgewinnen. Andererseits sind solche Programme natürlich nicht mehr zwischen Rechnern verschiedener Hersteller transportabel. Um zumindest zwischen Convex- und Cray-Rechnern kompatibel zu sein - ein in der Praxis recht häufiger Fall -, gibt es auf der Convex die Bibliothek SCILIB, die die sogenannte ''Scientific Library'' von Cray in an die Convex angepaßter Weise implementiert. Routinen der Cray-Bibliothek, die in der VECLIB schon vorkommen, wurden nicht zusätzlich in die SCILIB integriert, so daß man meistens beide Bibliotheken mit ''-lscilib -lveclib'' hinzulinken muß. Die Veclib- und Scilib-Bibliotheken (und Lapack, s. u.) sind von Convex auch auf HP 900/700-Maschienen portiert. Sie wurden speziell angepaßt und sind sehr viel schneller als vergleichbare NAG-Routinen. Auf dem Convex/HP-Metacluster des RZ sind sie vorhanden.
Um das Kompatibilitätsproblem in allgemeiner Form zu lösen, wurde eine Bibliothek von grundlegenden Routinen definiert, die sogenannte BLAS (''Basic Linear Algebra Subprograms''), die von jedem Vektorrechner-Hersteller optimal implementiert werden sollte und die die Basis für eigene Numerik-Routinen bilden kann. Diese Idee wurde relativ rasch verwirklicht; bei Convex ist die BLAS ein Teil der VECLIB. Sie enthält elementare Operationen zwischen Vektoren (''BLAS Level 1''), zwischen Matrizen und Vektoren (''BLAS Level 2'') und zwischen Matrizen (''BLAS Level 3''). Die Hersteller von numerischen Bibliotheken (NAG, IMSL) haben inzwischen ihre Routinen auf BLAS-Routinen als unterstem Level aufgebaut, so daß sie ebenfalls von der schnellen BLAS-Implementierung profitieren.17
Wie sehr sich die Verwendung sogar der einfachen BLAS-Routinen auszahlt, zeigt der Vergleich: Für die Multiplikation einer NxK-Matrix mit einer KxN-Matrix ergaben sich folgende Zeiten:
N K eigene BLAS . 
    Routine (DGEMM) . 
1000 1000 21 .401 19 .452
1000 100 2 .214 1 .860
1000 10 0 .303 0 .204
1000 1 0 .093 0 .025


Die BLAS-Routine DGEMM ist für jede Kombination von Matrix-Dimensionen optimal, während die eigene Routine nur für große K gut abschneidet. Aber sogar dann ist die BLAS-Routine noch überlegen. Fazit: Selbst bei solch einfachen Problemen wie der Matrix-Multiplikation sollte man die VECLIB-Routinen eigenen Programmen vorziehen!
Aus einer anderen Richtung kommen die Bibliotheken LINPACK, EISPACK und LAPACK: Bei LINPACK und EISPACK war das Ziel, grundlegende Routinen aus der Linearen Algebra mit Sourcen zur Verfügung zu stellen. Allerdings sind diese Routinen noch nicht für Vektorrechner gedacht, dafür sind sie schon zu alt. Die Idee, diese Bibliotheken zu ''modernisieren'' und Routinen zu schreiben, die an Vektor-Architekturen angepaßt sind und auf die BLAS aufbauen, führte zur Entstehung der LAPACK-Bibliothek, deren Sourcen ebenfalls frei verfügbar sind. Eine Anpassung an Parallelrechner mit verteiltem Speicher ist in Vorbereitung. Die LINPACK- und EISPACK-Routinen sind Bestandteil der VECLIB, es wurden allerdings nicht alle Routinen an die Convex angepaßt. Die LAPACK wird inzwischen von Convex zusammen mit der VECLIB ausgeliefert.

previous    contents     next

Peter Junglas 18.10.1993