Expand description
§BLAS Wrapper Structs
Document of BLAS wrappers is on-going work.
Terms of the following table is
- Prototype: Prototype of BLAS wrappers.
- For users, prototype is NOT designed to be used by API caller. One may wish to call generic structs (such as
GEMM<F>
) or directly call specialization (such asDGEMM
). - For documents and structure of BLAS wrapper, please refer to hyperlinks of prototype (on docs.rs). We also refer LAPACK document.
- For users, prototype is NOT designed to be used by API caller. One may wish to call generic structs (such as
- Num Trait: Trait bound that could be applied on generics.
- Generic: Generic structs of BLAS wrapper. This is designed to be called by API user. For example of
GEMM<F>
, this is type alias ofGEMM_Builder<F>
. - Specialization: Specialization structs of BLAS wrapper. This is designed to be called by API user, and have the same subroutine name to (legacy) BLAS.
Abbrivations
- symm: Symmetric
- hermi: Hermitian
- tri: Triangular
§Level 3 BLAS
BLAS | Prototype | Num Trait | Generic | f32 | f64 | c32 | c64 | Description |
---|---|---|---|---|---|---|---|---|
gemm | GEMM_<F> | GEMMNum | GEMM<F> | SGEMM | DGEMM | CGEMM | ZGEMM | general matrix-matrix multiply |
symm | SYMM_<F> | SYMMNum | SYMM<F> | SSYMM | DSYMM | CSYMM | ZSYMM | symm matrix-matrix multiply |
hemm | HEMM_<F> | HEMMNum | HEMM<F> | CHEMM | ZHEMM | hermi matrix-matrix multiply | ||
syrk | SYRK_<F> | SYRKNum | SYRK<F> | SSYRK | DSYRK | CSYRK | ZSYRK | symm rank-k update |
herk | HERK_<F> | HERKNum | HERK<F> | CHERK | ZHERK | hermi rank-k update | ||
syr2k | SYR2K_<F> | SYR2KNum | SYR2K<F> | SSYR2K | DSYR2K | CSYR2K | ZSYR2K | symm rank-2k update |
her2k | HER2K_<F> | HER2KNum | HER2K<F> | CHER2K | ZHER2K | hermi rank-2k update | ||
trmm | TRMM_<F> | TRMMNum | TRMM<F> | STRMM | DTRMM | CTRMM | ZTRMM | tri matrix-matrix multiply |
trsm | TRSM_<F> | TRSMNum | TRSM<F> | STRSM | DTRSM | CTRSM | ZTRSM | tri matrix-matrix solve |
§Level 3 BLAS (extensions)
BLAS | Prototype | Num Trait | Generic | f32 | f64 | c32 | c64 | Description |
---|---|---|---|---|---|---|---|---|
gemmt | [GEMMT_<F> ] | [GEMMTNum ] | [GEMMT<F> ] | [SGEMMT ] | [DGEMMT ] | [CGEMMT ] | [ZGEMMT ] | general matrix-matrix multiply, tri update |
§Level 2 BLAS (full)
BLAS | Prototype | Num Trait | Generic | f32 | f64 | c32 | c64 | Description |
---|---|---|---|---|---|---|---|---|
gemv | GEMV_<F> | GEMVNum | GEMV<F> | SGEMV | DGEMV | CGEMV | ZGEMV | general matrix-vector multiply |
ger | GER_<F> | GERNum | GER<F> | SGER | DGER | CGERU | ZGERU | general matrix rank-1 update |
gerc | GERC_<F> | GERCNum | GERC<F> | CGERC | ZGERC | general matrix rank-1 update | ||
{sy,he}mv | HEMV_<F> | HEMVNum | HEMV<F> | SSYMV | DSYMV | CHEMV | ZHEMV | symm/hermi matrix-vector multiply |
{sy,he}r | HER_<F> | HERNum | HER<F> | SSYR | DSYR | CHER | ZHER | symm/hermi rank-1 update |
{sy,he}r2 | HER2_<F> | HER2Num | HER2<F> | SSYR2 | DSYR2 | CHER2 | ZHER2 | symm/hermi rank-2 update |
trmv | TRMV_<F> | TRMVNum | TRMV<F> | STRMV | DTRMV | CTRMV | ZTRMV | tri matrix-vector multiply |
trsv | TRSV_<F> | TRSVNum | TRSV<F> | STRSV | DTRSV | CTRSV | ZTRSV | tri matrix-vector solve |
§Level 2 BLAS (packed)
BLAS | Prototype | Num Trait | Generic | f32 | f64 | c32 | c64 | Description |
---|---|---|---|---|---|---|---|---|
{sp,hp}mv | HPMV_<F> | HPMVNum | HPMV<F> | SSPMV | DSPMV | CHPMV | ZHPMV | symm/hermi matrix-vector multiply |
{sp,hp}r | HPR_<F> | HPRNum | HPR<F> | SSPR | DSPR | CHPR | ZHPR | symm/hermi rank-1 update |
{sp,hp}r2 | HPR2_<F> | HPR2Num | HPR2<F> | SSPR2 | DSPR2 | CHPR2 | ZHPR2 | symm/hermi rank-2 update |
tpmv | TPMV_<F> | TPMVNum | TPMV<F> | STPMV | DTPMV | CTPMV | ZTPMV | tri matrix-vector multiply |
tpsv | TPSV_<F> | TPSVNum | TPSV<F> | STPSV | DTPSV | CTPSV | ZTPSV | tri matrix-vector solve |
§Level 2 BLAS (banded)
BLAS | Prototype | Num Trait | Generic | f32 | f64 | c32 | c64 | Description |
---|---|---|---|---|---|---|---|---|
gbmv | GBMV_<F> | GBMVNum | GBMV<F> | SGBMV | DGBMV | CGBMV | ZGBMV | general matrix-vector multiply |
{sb,hb}mv | HBMV_<F> | HBMVNum | HBMV<F> | SSBMV | DSBMV | CHBMV | ZHBMV | symm/hermi matrix-vector multiply |
tbmv | TBMV_<F> | TBMVNum | TBMV<F> | STBMV | DTBMV | CTBMV | ZTBMV | tri matrix-vector multiply |
tbsv | TBSV_<F> | TBSVNum | TBSV<F> | STBSV | DTBSV | CTBSV | ZTBSV | tri matrix-vector solve |
§Level 1 BLAS
BLAS | Prototype | Num Trait | Generic | f32 | f64 | c32 | c64 | Description |
---|---|---|---|---|---|---|---|---|
asum | ASUM_<F> | ASUMNum | ASUM<F> | SASUM | DASUM | SCASUM | DZASUM | $\sum_i \big( \vert \mathrm{re} ( x_i ) \vert + \vert \mathrm{im} ( x_i ) \vert \big)$ |
nrm2 | NRM2_<F> | NRM2Num | NRM2<F> | SNRM2 | DNRM2 | SCNRM2 | DZASUM | $\Vert \boldsymbol{x} \Vert_2$ |
iamax | IAMAX_<F> | IAMAXNum | IAMAX<F> | ISAMAX | IDAMAX | ICAMAX | IZAMAX | $\arg \max_i \big( \vert \mathrm{re} ( x_i ) \vert + \vert \mathrm{im} ( x_i ) \vert \big)$ |