Home | Sitemap  | Impressum | KIT
BLAS
Ansprechpartner: Dienste:
Lizenztyp:

BLAS

Die Basic Linear Algebra Subprograms (BLAS) bestehen aus drei Gruppen:

Level 1 BLAS

Diese Routinen umfassen Vektoroperationen, z.B. entspricht die Routine SAXPY einer 'linked triad' V1 = V1 + s * V2. Diese BLAS-1 Routinen sind für den Gebrauch auf Skalarrechnern gedacht, wo z.T. optimierte Versionen existieren, die Unrolling benutzen oder im Assembler geschrieben sind. Auf Vektorrechnern können sie i.a. durch einen bzw. einige Vektorbefehle realisiert werden. Um den zusätzlichen Aufwand für einen Unterprogrammaufruf zu vermeiden, sollte für den VP stets versucht werden, diese Routinen im Quelltext zu expandieren.

Level-2 BLAS

Die BLAS-2 Routinen wurden definiert, um eine Möglichkeit zu schaffen, portable Software zu entwickeln, die auf einer Vielzahl von Vektorrechnern optimal abläuft. Die rechenzeitintensiven Programmteile (jedenfalls für den umfangreichen Bereich der Linearen Algebra) sind in wenigen, optimierten Routinen isoliert. Die BLAS-2 Programme implementieren Matrix-Vektor-Operationen, also typischerweise O(n**2) arithmetische Operationen.

Level-3 BLAS

Fuer neuere Rechnerarchitekturen (z.B. mehrere Prozessoren, hierarchische Speicherstrukturen) sind die BLAS-2 Routinen nur bedingt geeignet. Deshalb enthalten die Level-3 BLAS Matrix-Matrix-Operationen, die also O(n**3) arithmetische Operationen umfassen. BLAS-3 trägt auch zur besseren Nutzung der Vektorregister bei. Basierend auf BLAS-3 wurde z.B. LAPACK entwickelt, das den Leistungsumfang der bekannten Pakete EISPACK und LINPACK hat, also den Bereich der Linearen Algebra für dicht gespeicherte Matrizen abdeckt.

 

Hinweise zur Nutzung auf den am SCC installierten Clustern

Auf dem Xeon-basierten KIT-Parallelrechner HP XC3000 ist die BLAS-Bibliothek in die MKL von Intel integriert. Wie man die BLAS-Bibliothek in eigene Software integriert, findet man im Kapitel 10 des HP XC3000 User Guide

Auf dem Xeon-basierten InstitutsCluster II von Go Virtual ist die BLAS-Bibliothek in die MKL von Intel integriert. Wie man die BLAS-Bibliothek in eigene Software integriert, findet man im Kapitel 10 des InstitutsCluster II User Guide.

 

Public Domain Version der BLAS

Der Quelltext der BLAS kann von der e-Lib am Konrad-Zuse-Zentrum für Informationstechnik in Berlin bezogen werden.

Funktionsumfang der Routinen von BLAS-2

Die folgenden drei Arten von Matrix-Vektoroperationen werden von Level 2 BLAS durchgeführt.

Matrix-Vektor-Multiplikationen

y :=  alpha A x   + beta y  ,
t
y := alpha A x + beta y und
_t
y := alpha A x + beta y ,

wobei A eine Matrix, alpha und beta Skalare und x und y Vektoren sind,

x :=  T x      ,
t
x := T x und
_t
x := T x ,

wobei x ein Vektor und T eine obere oder untere Dreiecksmatrix ist.

Rank-one und rank-two updates

t
A := alpha x y + A ,
_t
A := alpha x y + A ,
_t
H := alpha x x + H und
_t _____ _t
H := alpha x y + alpha y x + H ,

wobei H eine Hermitesche Matrix ist.

Lösung von Gleichungssystemen mit Koeffizientenmatrix in Dreiecksgestalt

-1
x := T x ,
t -1
x := ( T ) x und
_t -1
x := ( T ) x ,

wobei T eine nicht-singuläre obere oder untere Dreiecksmatrix ist.
Diese Operationen werden soweit sinnvoll auf allgemeine rechteckige Matrizen, Bandmatrizen, Hermitesche Matrizen, Hermitesche Bandmatrizen, Dreiecksmatrizen und Dreiecksbandmatrizen in reeller und komplexer Arithmetik sowie in einfacher und doppelter Genauigkeit angewendet.

Namenskonventionen

Die Namen der Routinen bestehen aus max. 5 Zeichen mit folgender Bedeutung.

Das vierte und fünfte Zeichen beschreiben die Operation:
MV - Matrix-vector product
R - Rank-one update
R2 - Rank-two update
SV - Solve a system of linear equations


Die Zeichen zwei und drei bezeichnen die Art der Matrix:

GE General matrix
GB General band matrix
HE Hermitian matrix
SY Symmetric matrix
HP Hermitian matrix stored in packed form
SP Symmetric matrix stored in packed form
HB Hermitian band matrix
SB Symmetric band matrix
TR Triangular matrix
TP Triangular matrix in packed form
TB Triangular band matrix

Das erste Zeichen beschreibt den FORTRAN Datentyp:

S REAL
D DOUBLE PRECISION
C COMPLEX
Z COMPLEX*16

Alle Kombinationen sind in der folgenden Tabelle angegeben, wobei in der ersten Spalte noch C durch Z und in der zweiten Spalte S durch D ersetzt werden kann.

Datentyp         Operation
complex real MV R R2 SV
CGE SGE * *
CGB SGB *
CHE SSY * * *
CHP SSP * * *
CHB SSB *
CTR STR * *
CTP STP * *
CTB STB * *

Für die Operation 'rank-1 update' für allgemeine Matrizen (GER) gibt es zwei komplexe Versionen:

_t
CGERC für A := alpha x y + A und
t
CGERU für A := alpha x y + A .

Insgesamt umfasst BLAS-2 also 66 Routinen, die 16 verschiedene Operationen enthalten, die i.a. sowohl auf die übergebene Matrix als auch auf ihre Transponierte bzw. für komplexe Matrizen auch auf die transponierte und konjugiert komplexe Matrix angewendet werden können.

Funktionsumfang der Routinen von BLAS-3

Folgende vier Arten von Matrix-Vektoroperationen werden von Level-3 BLAS durchgeführt.

Matrix-Matrix-Multiplikationen

C :=  alpha A B   + beta C  ,
t
C := alpha A B + beta C ,
t
C := alpha A B + beta C und
t t
C := alpha A B + beta C ,

wobei A, B und C Matrizen und alpha und beta Skalare sind.

Rank-k und rank-2k updates für symmetrische Matrizen

t
C := alpha A A + beta C ,
t
C := alpha A A + beta C ,
t t
C := alpha A B + alpha B A + beta C ,
t t
C := alpha A B + alpha B A + beta C ,

 

Multiplikation einer Matrix mit einer Dreiecksmatrix

B := alpha T B
t
B := alpha T B
B := alpha B T
t
B := alpha B T

 

Lösung von mehreren Gleichungssystemen mit Koeffizientenmatrix in Dreiecksgestalt

-1
B := alpha T B
t -1
B := alpha ( T ) B
-1
B := alpha B T
t -1
B := alpha B ( T )

wobei T eine nicht-singuläre obere oder untere Dreiecksmatrix ist.

Diese Operationen werden soweit sinnvoll auf allgemeine rechteckige Matrizen, Bandmatrizen, Hermitesche Matrizen, Hermitesche Bandmatrizen, Dreicksmatrizen und Dreiecksbandmatrizen in reeller und komplexer Arithmetik sowie in einfacher und doppelter Genauigkeit angewendet. Im Falle komplexer Matrizen kann für AT (Transposition) auch AH (transponiert und konjugiert komplex) stehen, so dass in diesem Falle nicht vier sondern neun verschiedene Matrix-Matrix-Multiplikationen vorgesehen sind.

Namenskonventionen

Die Namen der Routinen bestehen aus max. 6 Zeichen mit folgender Bedeutung.

Das vierte bis sechste Zeichen beschreiben die Operation:

MM - Matrix-matrix product
RK - Rank-k update of a symmetric or Hermitian matrix
R2K - Rank-2k update of a symmetric or Hermitian matrix
SM - Solve a system of linear equations for a matrix of righthand sides


Die Zeichen zwei und drei bezeichnen die Art der Matrix:

GE General matrix
HE Hermitian matrix
SY Symmetric matrix
TR Triangular matrix


Das erste Zeichen beschreibt den FORTRAN Datentyp:

S REAL
D DOUBLE PRECISION
C COMPLEX
Z COMPLEX*16

Alle Kombinationen sind in der folgenden Tabelle angegeben, wobei in der ersten Spalte noch C durch Z und in der zweiten Spalte S durch D ersetzt werden kann.

Datentyp         Operation
complex real MM RK R2K SM
CGE SGE *
CSY SSY * * *
CHE * * *
CTR STR * *

BLAS-3 besteht also aus 6 reellen Routinen, die 48 verschiedene Kombinationen von Optionen erlauben und 9 komplexen Routinen mit 77 verschiedenen Kombinationsmöglichkeiten der Optionen.

Beispiel

Berechnung der LR-Zerlegung einer quadratischen Matrix A:

SUBROUTINE LR(N,EPS,A,LDA,P,IFAIL)
C
C .. Scalar Arguments ..
DOUBLE PRECISION EPS
INTEGER IFAIL,LDA,N
C ..
C .. Array Arguments ..
DOUBLE PRECISION A(LDA,*)
INTEGER P(*)
C ..
C .. Local Scalars ..
DOUBLE PRECISION S, Y
INTEGER I,IMAX,IP,J
C ..
C .. External Subroutines ..
EXTERNAL DGER
C ..
C .. Intrinsic Functions ..
INTRINSIC ABS
C ..
DO 10 I = 1,N
P(I) = I
10 CONTINUE
C
DO 190 I = 1,N
C Pivotzeile bestimmen
S = ABS(A(I,I))
IMAX = I
DO 90 J = I + 1,N
IF (ABS(A(J,I)).GT.S) THEN
S = ABS(A(J,I))
IMAX = J
END IF
90 CONTINUE
IF (S.LT.EPS) GO TO 400
IF (IMAX.NE.I) THEN
C Zeilen vertauschen
DO 100 J = 1,N
Y = A(I,J)
A(I,J) = A(IMAX,J)
A(IMAX,J) = Y
100 CONTINUE
IP = P(I)
P(I) = P(IMAX)
P(IMAX) = IP
END IF
C
S = 1.D0/A(I,I)
DO 111 J = I + 1,N
A(I,J) = A(I,J)*S
111 CONTINUE
C
CALL DGER(N-I,N-I,-1.0D0,A(I+1,I),1,A(I,I+1),LDA,A(I+1,I+1),
+ LDA)
190 CONTINUE
C
IFAIL = 0
C
RETURN
400 IFAIL = 1
RETURN
END