BLAS, LAPACK, ScaLAPACK

Numerische lineare Algebra mit dichtbesetzten Matrizen

 

BLAS, LAPACK, ScaLAPACK - Ein Überblick

BLAS

BLAS steht für Basic Linear Algebra Routines, jeweils mit dichtbesetzen Matrizen und Vektoren, die in 3 Level unterteilt werden

  • Level 1: Vektor-Vektor-Operationen, z.B. Vektor-Addition, Skalarprodukt,
  • Level 2: Matrix-Vektor-Operationen, z.B. Matrix-Vektor-Multiplikation,
  • Level 3: Matrix-Matrix-Operationen, z.B. Matrizen-Multplikation.

Die Rechengeschwindigkeit der Level 1 Operationen wird von der Bandbreite des Datentransfers durch die Speicherhierarchie (RAM, Cachlevel) begrenzt, wie sie etwa vom bekannten STREAM-Benchmark gemessen wird. BLAS-Routinen verbessern die Geschwindigkeit i.d.R. nicht.

Sobald dichtbesetzte Matrizen ins Spiel kommen, haben die hardwarenah implementierten BLAS-Routinen einen Vorteil gegen¨ber selbst programmierten Schleifen, denn u.a. werden die Matrizen intern in Blöcke zerlegt, um die Caches möglichst optimal zu nutzen.

Fortran90-Programmierer können hoffen, dass der Compiler selbst geschriebene Schleifen durch BLAS-Routinen ersetzt. Zudem bieten Fortran90-Routinen wie MATMUL meist sehr gute Performance. Ob hier die entsprechende Blas-Routine (sgemm, dgemm) schneller ist, sollte an performancekritischen stellen ausprobiert werden.

LAPACK

Der Name LAPACK ist eine Abkürzung für Linear Algebra PACKage und umfasst Routinen zum Lösen linearer Gleichungssysteme und zur Bestimmung von Eigenwerten. LAPACK basiert auf BLAS-Routinen.

Implementierungen

  • Die meisten (jede?) Linux-Distributionen bieten vorkompilierte Lapack-und Blas-Pakete an, die einfach installiert werden können.
  • Die Quellen sind als Fortran77-Code nebst Doku frei verfügbar, z.B. von der Netlib: Blas, Lapack, Blacs, Scalapack.
  • Zudem gibt es weitere BLAS-Versionen (inkl. einiger Lapack-Routinen) im Quellcode, etwa Atlas (die automatisch für die Cachehierarchie des Installationsrechners optimiert wird) und GotoBlas (mit einem Optimierungsansatz, der auf TLB-Cache Misses zielt).
  • AMD bietet für seine Prozessoren optimierte Blas, Lapack in der ACML (AMD Core Math Library) zum kostenlosen Download für Windows und Linux an.
  • Intel hat mit der MKL, Math Kernel Library, ebenfalls eine optimierte Bibliothek im Angebot. Sie ist kostenpflichtig, aber das RZ der TU stellt TU-weite Floating Lizenzen zur kostenfreien Installation auf dem Arbeitsplatzrechner, Windows oder Linux, bereit.

Dokumentation

Manuals / Bücher

  • E. Anderson et al., LAPACK Users' Guide, SIAM 1992
  • J.J. Dongarra, C.B. Moler, J.R.Bunch, G.W. Stewart, LINPACK User's Guide, SIAM 1979
  • B.T. Smith et al., Matrix Eigensystem Routines, EISPACK User's Guide, Springer Verlag 1976
  • Garbow et al., Matrix Eigensystems Routines, EISPACK Guide Extension, Springer Verlag 1977

Diese Bücher können im RZTU (Raum 2006/SBS95) eingesehen werden.

Online-Informationen