Základní rutiny pro numerickou lineární algebru I. Šimeček, M. Šoch xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 BI-EIA, ZS2011/12, Predn.10 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti
BLAS Všechny operace jsou rozděleny podle asymptotické složitosti Level 1 = O(n) příklad: násobení vektoru konstantou Level 2 = O(n^2) příklad: násobení matice konstantou Level 3 = O(n^3) příklad: násobení matice maticí
Datové typy BLAS Prefix udává datový dat S = single D = double C = komplex (float) Z = komplex (double)
BLAS Level 1 snrm2 ( n, sx, incx) Euclidean norm srot (n,sx,incx,sy,incy,c,s) apply Givens rotation srotg(sa,sb,c,s) setup Givens rotation srotm apply modified Givens rotation sscal(n,sa,sx,incx) x = a*x sswap (n,sx,incx,sy,incy) swap x and y
BLAS Level 1 isamax(n,sx,incx) index of max abs value sasum(n,sx,incx) sum of absolute values saxpy(n,sa,sx,incx,sy,incy) y = a*x + y scopy(n,sx,incx,sy,incy) copy x into y sdot(n,sx,incx,sy,incy) dot product
BLAS Level 2 SGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY ) matrix vector multiply SGBMV ( TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY ) hermitian banded matrix vector multiply SSYMV ( UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY ) symmetric matrix vector multiply SSBMV ( UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY ) symmetric banded matrix vector multiply
BLAS Level 2 SSPMV ( UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY ) symmetric packed matrix vector multiply STRMV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) triangular matrix vector multiply STBMV ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) triangular banded matrix vector multiply STPMV ( UPLO, TRANS, DIAG, N, AP, X, INCX ) triangular packed matrix vector multiply
BLAS Level 2 STRSV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) solving triangular matrix problems STBSV ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) solving triangular banded matrix problems STPSV ( UPLO, TRANS, DIAG, N, AP, X, INCX ) solving triangular packed matrix problems SGER ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA) performs the rank 1 operation A := alpha*x*y' + A, HER,HPR hermitian rank 1 operation A := alpha*x*conjg(x') + A hermitian packed rank 1 operation A := alpha*x*conjg( x' ) + A
BLAS Level 2 HER2, HPR2 hermitian rank 2 operation, A := alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A hermitian packed rank 2 operation, A := alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A SSYR ( UPLO, N, ALPHA, X, INCX, A, LDA ) performs the symmetric rank 1 operation A := alpha*x*x' + A SSPR ( UPLO, N, ALPHA, X, INCX, AP ) symmetric packed rank 1 operation A := alpha*x*x' + A
BLAS Level 2 SSYR2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA ) performs the symmetric rank 2 operation, A := alpha*x*y' + alpha*y*x' + A SSPR2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, AP ) performs the symmetric packed rank 2 operation, A := alpha*x*y' + alpha*y*x' + A
BLAS Level 3 Sgemm matrix matrix multiply Hemm hermitian matrix matrix multiply Strmm triangular matrix matrix multiply Strsm solving triangular matrix with multiple right hand sides
BLAS Level 3 Ssymm symmetric matrix matrix multiply Ssyrk symmetric rank-k update to a matrix Ssyr2k symmetric rank-2k update to a matrix Her2k hermitian rank-2k update to a matrix
LAPACK funkce Tvoří tyto skupiny: Linear Equations Orthogonal Factorization Symmetric Eigenproblems Nonsymmetric Eigenproblems Singular Value Decomposition (SVD) Generalized Symmetric Definite Eigenproblems Generalized Nonsymmetric Eigenproblems Generalized Singular Value Decomposition
LAPACK typy matic I Většina LAPACK operací je prováděna nad maticemi. Speciální typy matic mohou podstatně urychlit řešení dané fce Př. Řešení SLE na pásové matici Spotřebovává méně paměti Potřebuje podstatně méně operací
LAPACK typy matic II Bidiagonální matice Má nenulovou hlavní diagonálu a také buď diagonálu pod nebo nad hlavní diagonálou Diagonální matice Má nenulovou hlavní diagonálu Pásová matice Nenulové prvky jsou v pásu kolem hlavní diagonály Max. vzdálenost od hlavní diagonály (nad a pod) udávají konstanty k1 a k2 lichoběžníková matice Obdoba trojúhelníkové matice pro obdélníkové matice
LAPACK typy matic III obecná (nesymetrická) matice dvojice obecných matic Určeno pro zobecněné problémy tridiagonální matice Má nenulovou hlavní diagonálu a také diagonálu pod a nad hlavní diagonálou hermitovská matice samosdružená nebo samoadjungovaná Matice je rovna sama sobě po transpozici a komplexním sdružení
LAPACK typy matic IV trojúhelníková matice Diagonální matice a všechny prvky nad ní nebo pod ní Hessenbergova matice Je trojúhelníková matice + diagonála nad-pod hlavní diagonálou packed storage formát Neukládá již zřejmé hodnoty prvků (např. pro symetrickou matici uloží jen trojúhelníkovou matici)
LAPACK typy matic V ortogonální matice Jednotlivé řádky jsou vzájemně ortogonální = jejich skalární součin je roven 0 ortonormální matice ortogonální Norma jednotlivých řádků je rovna 1 unitární Obdoba ortogonální matice pro komplexní čísla