Simple BLAS

Intro

What? A better simpler website to illustrate BLAS operations.

Why? The current website is an artifact straight outta 2000. Look at it: https://www.netlib.org/blas/.

Who? For those with some understanding of BLAS operations, intended as a reference not a tutorial.

Levels
  1. Vector operations.
  2. Matrix-vector operations.
  3. Matrix-matrix operations.
Parameters
  1. Scalars: \alpha and \beta.
  2. Dimensions: m, n and k.
  3. Vectors: x and y.
  4. Matricies: A, B and C.
Animations

Animated Vs Un-animated

Disclaimer: Some operations have animations illustrating them, it is important you know these animations do not illustrate how the underlying code performs the operation, they simply illustrate the result and how you might think about it.

Level 1

Name Description Equation
SROTG

setup Givens rotation

SROTMG

setup modified Givens rotation

SROT

apply Givens rotation

SROTM

apply modified Givens rotation

SSWAP

swap x and y

x\Leftrightarrow y
SSCAL

x = a*x

x\leftarrow \alpha x
SCOPY

copy x into y

y\leftarrow x
SAXPY

y = a*x + y

y\leftarrow \alpha x + y
SDOT

dot product

dot\leftarrow x^T y
SDSDOT

dot product with extended precision accumulation

dot\leftarrow x^T y
SNRM2

Euclidean norm

nrm2\leftarrow ||x||_2
SCNRM2

Euclidean norm

nrm2\leftarrow ||x||_2
SASUM

sum of absolute values

asum\leftarrow ||re(x)||_1 +||im(x)||_1
ISAMAX

index of max abs value

\text{amax}\leftarrow 1^{st}\ni |re(x_k)|+|im(x_k)|=max(|re(x_i)|+|im(x_i)|)
Name Description Equation
DROTG

setup Givens rotation

DROTMG

setup modified Givens rotation

DROT

apply Givens rotation

DROTM

apply modified Givens rotation

DSWAP

swap x and y

x\Leftrightarrow y
DSCAL

x = a*x

x\leftarrow \alpha x
DCOPY

copy x into y

y\leftarrow x
DAXPY

y = a*x + y

y\leftarrow \alpha x + y
DDOT

dot product

dot\leftarrow x^T y
DSDOT

dot product with extended precision accumulation

dot\leftarrow x^T y
DNRM2

Euclidean norm

nrm2\leftarrow ||x||_2
DCNRM2

Euclidean norm

nrm2\leftarrow ||x||_2
DASUM

sum of absolute values

asum\leftarrow ||re(x)||_1 +||im(x)||_1
IDAMAX

index of max abs value

\text{amax}\leftarrow 1^{st}\ni |re(x_k)|+|im(x_k)|=max(|re(x_i)|+|im(x_i)|)
Name Description Equation
CROTG

setup Givens rotation

CSROT

apply Givens rotation

CSWAP

swap x and y

x\Leftrightarrow y
CSCAL

x = a*x

x\leftarrow \alpha x
CSSCAL

x = a*x

x\leftarrow \alpha x
CCOPY

copy x into y

y\leftarrow x
CAXPY

y = a*x + y

y\leftarrow \alpha x + y
CDOTU

dot product

dot\leftarrow x^T y
CDOTC

dot product, conjugating the first vector

SCASUM

sum of absolute values

asum\leftarrow ||re(x)||_1 +||im(x)||_1
ICAMAX

index of max abs value

\text{amax}\leftarrow 1^{st}\ni |re(x_k)|+|im(x_k)|=max(|re(x_i)|+|im(x_i)|)
Name Description Equation
ZROTG

setup Givens rotation

ZDROTF

apply Givens rotation

ZSWAP

swap x and y

x\Leftrightarrow y
ZSCAL

x = a*x

x\leftarrow \alpha x
ZDSCAL

x = a*x

x\leftarrow \alpha x
ZCOPY

copy x into y

y\leftarrow x
ZAXPY

y = a*x + y

y\leftarrow \alpha x + y
ZDOTU

dot product

dot\leftarrow x^T y
ZDOTC

dot product, conjugating the first vector

DZASUM

sum of absolute values

asum\leftarrow ||re(x)||_1 +||im(x)||_1
IZAMAX

index of max abs value

\text{amax}\leftarrow 1^{st}\ni |re(x_k)|+|im(x_k)|=max(|re(x_i)|+|im(x_i)|)

Level 2

Name Description
SGEMV

matrix vector multiply

SGBMV

banded matrix vector multiply

SSYMV

symmetric matrix vector multiply

SSBMV

symmetric banded matrix vector multiply

SSPMV

symmetric packed matrix vector multiply

STRMV

triangular matrix vector multiply

STBMV

triangular banded matrix vector multiply

STPMV

triangular packed matrix vector multiply

STRSV

solving triangular matrix problems

STBSV

solving triangular banded matrix problems

STPSV

solving triangular packed matrix problems

SGER

performs the rank 1 operation A := alpha*x*y' + A

SSYR

performs the symmetric rank 1 operation A := alpha*x*x' + A

SSPR

symmetric packed rank 1 operation A := alpha*x*x' + A

SSYR2

performs the symmetric rank 2 operation, A := alpha*x*y' + alpha*y*x' + A

SSPR2

performs the symmetric packed rank 2 operation, A := alpha*x*y' + alpha*y*x' + A

Name Description
DGEMV

matrix vector multiply

DGBMV

banded matrix vector multiply

DSYMV

symmetric matrix vector multiply

DSBMV

symmetric banded matrix vector multiply

DSPMV

symmetric packed matrix vector multiply

DTRMV

triangular matrix vector multiply

DTBMV

triangular banded matrix vector multiply

DTPMV

triangular packed matrix vector multiply

DTRSV

solving triangular matrix problems

DTBSV

solving triangular banded matrix problems

DTPSV

solving triangular packed matrix problems

DGER

performs the rank 1 operation A := alpha*x*y' + A

DSYR

performs the symmetric rank 1 operation A := alpha*x*x' + A

DSPR

symmetric packed rank 1 operation A := alpha*x*x' + A

DSYR2

performs the symmetric rank 2 operation, A := alpha*x*y' + alpha*y*x' + A

DSPR2

performs the symmetric packed rank 2 operation, A := alpha*x*y' + alpha*y*x' + A

Name Description
CGEMV

matrix vector multiply

CGBMV

banded matrix vector multiply

CHEMV

hermitian matrix vector multiply

CHBMV

hermitian banded matrix vector multiply

CHPMV

hermitian packed matrix vector multiply

CTRMV

triangular matrix vector multiply

CTBMV

triangular banded matrix vector multiply

CTPMV

triangular packed matrix vector multiply

CTRSV

solving triangular matrix problems

CTBSV

solving triangular banded matrix problems

CTPSV

solving triangular packed matrix problems

CGERU

performs the rank 1 operation A := alpha*x*y' + A

CGERC

performs the rank 1 operation A := alpha*x*conjg( y' ) + A

CHER

hermitian rank 1 operation A := alpha*x*conjg(x') + A

CHPR

hermitian packed rank 1 operation A := alpha*x*conjg( x' ) + A

CHER2

hermitian rank 2 operation

CHRP2

hermitian packed rank 2 operation

Name Description
ZGEMV

matrix vector multiply

ZGBMV

banded matrix vector multiply

ZHEMV

hermitian matrix vector multiply

ZHBMV

hermitian banded matrix vector multiply

ZHPMV

hermitian packed matrix vector multiply

ZTRMV

triangular matrix vector multiply

ZTBMV

triangular banded matrix vector multiply

ZTPMV

triangular packed matrix vector multiply

ZTRSV

solving triangular matrix problems

ZTBSV

solving triangular banded matrix problems

ZTPSV

solving triangular packed matrix problems

ZGERU

performs the rank 1 operation A := alpha*x*y' + A

ZGERC

performs the rank 1 operation A := alpha*x*conjg( y' ) + A

ZHER

hermitian rank 1 operation A := alpha*x*conjg(x') + A

ZHPR

hermitian packed rank 1 operation A := alpha*x*conjg( x' ) + A

ZHER2

hermitian rank 2 operation

ZHRP2

hermitian packed rank 2 operation

Level 3

Name Description
SGEMM

matrix matrix multiply

SSYMM

symmetric matrix matrix multiply

SSYRK

symmetric rank-k update to a matrix

SSYR2k

symmetric rank-2k update to a matrix

STRMM

triangular matrix matrix multiply

STRSM

solving triangular matrix with multiple right hand sides

Name Description
DGEMM

matrix matrix multiply

DSYMM

symmetric matrix matrix multiply

DSYRK

symmetric rank-k update to a matrix

DSYR2k

symmetric rank-2k update to a matrix

DTRMM

triangular matrix matrix multiply

DTRSM

solving triangular matrix with multiple right hand sides

Name Description
CGEMM

matrix matrix multiply

CSYMM

symmetric matrix matrix multiply

CHEMM

hermitian matrix matrix multiply

CSYRK

symmetric rank-k update to a matrix

CHERK

hermitian rank-k update to a matrix

CSYR2k

symmetric rank-2k update to a matrix

CHER2K

hermitian rank-2k update to a matrix

CTRMM

triangular matrix matrix multiply

CTRSM

solving triangular matrix with multiple right hand sides

Name Description
ZGEMM

matrix matrix multiply

ZSYMM

symmetric matrix matrix multiply

ZHEMM

hermitian matrix matrix multiply

ZSYRK

symmetric rank-k update to a matrix

ZHERK

hermitian rank-k update to a matrix

ZSYR2K

symmetric rank-2k update to a matrix

ZHER2K

hermitian rank-2k update to a matrix

ZTRMM

triangular matrix matrix multiply

ZTRSM

solving triangular matrix with multiple right hand sides