Initialize/finalize |
|
Utilities | |
![|](ftv2vertline.png) Allocate GPU device memory | Imalloc, smalloc, etc |
![|](ftv2vertline.png) Allocate CPU host memory | Imalloc_cpu, smalloc_cpu, etc |
![|](ftv2vertline.png) Allocate pinned CPU host memory | Imalloc_pinned, smalloc_pinned, etc |
![|](ftv2vertline.png) Communication CPU <=> GPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) copyvector: GPU => GPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) getvector: GPU => CPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) setvector: CPU => GPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) copymatrix: GPU => GPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) getmatrix: GPU => CPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) setmatrix: CPU => GPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) getmatrix_transpose: GPU => CPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) setmatrix_transpose: CPU => GPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) getmatrix_bcyclic: multi-GPU => CPU | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) setmatrix_bcyclic: CPU => multi-GPU | |
![|](ftv2vertline.png) Constants and converters | Mappings between LAPACK, MAGMA, CBLAS, cuBLAS, and clBLAS constants |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Map LAPACK => MAGMA | Convert LAPACK character constants to MAGMA constants |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Map MAGMA => LAPACK | Convert MAGMA constants to LAPACK constants |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Map CBLAS => MAGMA | Convert MAGMA constants to CBLAS constants |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Map clBLAS => MAGMA | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Map cuBLAS => MAGMA | Convert MAGMA constants to NVIDIA cuBLAS constants |
![|](ftv2vertline.png) Device management | |
![|](ftv2vertline.png) Queue management | |
![|](ftv2vertline.png) Event management | |
![|](ftv2vertline.png) Error handling | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) MAGMA error codes | |
![|](ftv2vertline.png) Miscellaneous utilities | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) make_lwork: Round lwork for float | |
![|](ftv2vertline.png) Print matrix | |
![|](ftv2vertline.png) Timer | |
![|](ftv2vertline.png) Tuning (get_nb, etc.) | Optimal block sizes vary with GPU and, to a lesser extent, CPU |
Internal routines | ============================================================ |
![|](ftv2vertline.png) Error handling | |
![|](ftv2vertline.png) Testing routines | |
![|](ftv2vertline.png) Thread management | |
![|](ftv2vertline.png) Timer utilities | |
![|](ftv2vertline.png) QR panel to q, q to panel | |
![|](ftv2vertline.png) GPU Kernels | |
Dense linear algebra | ============================================================ |
![|](ftv2vertline.png) Linear system solvers | Solves \( Ax = b \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) General matrices: LU | Solves \( Ax = b \) using LU factorization for general matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gesv: Solves Ax = b using LU factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) getrf: LU factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) getrs: LU forward and back solves | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) getri: LU inverse | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) getf2: LU panel factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) laswp: Swap rows | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) No pivoting variant | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) gesv: Solves Ax = b using LU factorization - no pivoting (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) getf2: LU panel factorization - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) getrf: LU factorization - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) getrs: LU forward and back solves - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) gerfs: Refine solution - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) General matrices: RBT + no pivoting LU | Solves \( Ax = b \) using RBT + no pivoting LU factorization for general matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gesv_rbt: Solves Ax = b using RBT + LU factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gerbt: Apply random butterfly transformation (RBT) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) prbt | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) prbt_mv | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) prbt_mtv | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) General matrices: least squares | Solves \( Ax \approx b \) where \( A \) is rectangular |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gels: Least squares solves Ax = b using QR factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gglse: Least squares solves Ax = b subject to Bx = d (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) geqrsv: Solves Ax = b using QR factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Symmetric/Hermitian positive definite: Cholesky | Solves \( Ax = b \) using Cholesky factorization for SPD/HPD matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) posv: Solves Ax = b using Cholesky factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) potrf: Cholesky factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) potrs: Cholesky forward and back solves | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) potri: Cholesky inverse | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) potf2: Cholesky panel factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) lauum: Multiply triangular matrices; used in potri | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Symmetric/Hermitian indefinite | Solves \( Ax = b \) using indefinite factorization for Hermitian matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) sy/hesv: Solves Ax = b using symmetric/Hermitian indefinite factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) sy/hetrf: symmetric/Hermitian indefinite factorization (Bunch-Kaufman pivoting) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) sy/hetrf: symmetric/Hermitian indefinite factorization (Aasen) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) lahef: Partial factorization; used by hetrf | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) laswp_sym: Swap rows/cols | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) No pivoting variant | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sy/hesv: Solves Ax = b using symmetric/Hermitian indefinite factorization - no pivoting (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sy/hetrf: symmetric/Hermitian indefinite factorization - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sy/hetrs: symmetric/Hermitian indefinite forward and back solves - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Symmetric indefinite | Solves \( Ax = b \) using indefinite factorization for symmetric matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) No pivoting variant | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) sysv: Solves Ax = b using symmetric indefinite factorization - no pivoting (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) sytrf: Symmetric indefinite factorization - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) sytrs: Symmetric indefinite forward and back solves - no pivoting | |
![|](ftv2vertline.png) Orthogonal/unitary factorizations |
|
![|](ftv2vertline.png) ![|](ftv2vertline.png) QR factorization | Factor \( A = QR \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) geqrf: QR factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) geqp3: QR factorization with column pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gegqr: QR factorization and generate Q | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/unmqr: Multiply by Q from QR factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/ungqr: Generate Q from QR factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) geqrs: | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) geqr2: QR panel factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) laqps: Partial factorization; used by geqp3 | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) nrm2_adjust: auxiliary for geqp3 | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) nrm2_check: auxiliary for geqp3 | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) nrm2_cols: auxiliary for geqp3 | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) nrm2_row_check_adjust: auxiliary for geqp3 | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) RQ factorization | Factor \( A = RQ \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gerqf: RQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ggrqf: generalized RQ factorization of an M-by-N matrix A and a P-by-N matrix B | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/unmrq: Multiply by Q from RQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/ungrq: Generate Q from RQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) QL factorization | Factor \( A = QL \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) geqlf: QL factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/unmql: Multiply by Q from QL factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/ungql: Generate Q from QL factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) LQ factorization | Factor \( A = LQ \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) gelqf: LQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) or/unmlq: Multiply by Q from LQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) or/unglq: Generate Q from LQ factorization | |
![|](ftv2vertline.png) Eigenvalues |
|
![|](ftv2vertline.png) ![|](ftv2vertline.png) Non-symmetric eigenvalues | Solves \( Ax = \lambda x \) where \( A \) is general |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) geev: Non-symmetric eigenvalues (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gehrd: Hessenberg reduction | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/unghr: Generate Q from Hessenberg reduction | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) lahr2: Partial factorization; used by gehrd | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) lahru: Partial factorization; used by gehrd | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) trevc: Compute eigenvectors; used by geev | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) latrsd: Triangular solve with modified diagonal; used by trevc | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) laqtrsd: Quasi-Triangular solve with modified diagonal; used by trevc | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) laln2: Solve 2x2 system; used by trevc | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Symmetric/Hermitian eigenvalues | Solves \( Ax = \lambda x \) where \( A \) is symmetric/Hermitian |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) sy/heevx: Solves using QR iteration (expert) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) sy/heevd: Solves using divide-and-conquer (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) sy/heevdx: Solves using divide-and-conquer (expert) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) sy/heevr: Solves using MRRR (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) sy/hetrd: Tridiagonal reduction | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/unmtr: Multiply by Q from tridiagonal reduction | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/ungtr: Generate Q from tridiagonal reduction | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) latrd: Partial factorization; used by hetrd | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) stedx: Eigenvalues & vectors of tridiagonal using D&C | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) laex0: Eigenvalues & vectors of tridiagonal using D&C | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) laex1: Updated eigensystem after rank-1 update. | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) laex3: Roots of secular equation. | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) 2-stage variant | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) he2hb: 1st stage, full to band | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sy2sb: 1st stage, full to band | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) hb2st: 2nd stage, band to tridiagonal | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sb2st: 2nd stage, band to tridiagonal | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) hbtype1cb | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) hbtype2cb | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) hbtype3cb | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Generalized Symmetric/Hermitian eigenvalues | Solves \( Ax = \lambda B x \), \( ABx = \lambda x \), or \( BAx = \lambda x \) where \( A, B \) are symmetric/Hermitian and \( B \) is positive definite |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sy/hegvx: Solves using QR iteration (expert) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sy/hegvd: Solves using divide-and-conquer (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sy/hegvdx: Solves using divide-and-conquer (expert) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sy/hegvr: Solves using MRRR (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) hegst: Reduce generalized problem to standard problem. | |
![|](ftv2vertline.png) Singular Value Decomposition (SVD) |
|
![|](ftv2vertline.png) ![|](ftv2vertline.png) gesvd: SVD using QR iteration | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) gesdd: SVD using divide-and-conquer | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) gebrd: Bidiagonal reduction | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) or/unmbr: Multiply by Q or P from bidiagonal reduction | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) or/ungbr: Generate Q or P from bidiagonal reduction | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) labrd: Partial factorization; used by gebrd | |
![|](ftv2vertline.png) MAGMA BLAS and Auxiliary |
|
![|](ftv2vertline.png) ![](ftv2blank.png) Math functions (sqrt, etc.), O(1) work | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) ceil(x/y) and ceil(x/y)y | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) sqrt | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) NAN and INF checks | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) complex number support | In C++, including magma_operators.h defines the usual unary and binary operators for complex numbers: +, +=, -, -=, *, *=, /, /=, ==, != |
![|](ftv2vertline.png) ![](ftv2blank.png) Level 1: vectors operations, O(n) work | Vector operations that perform \( O(n) \) work on \( O(n) \) data |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) asum: Sum vector | \( \sum_i |x_i| \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) axpy: Add vectors | \( y = \alpha x + y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) copy: Copy vector | \( y = x \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) dot: Dot (inner) product | \( x^T y \) or \( x^H y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) iamax: Find max element | \( \text{argmax}_i\; |x_i| \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) iamin: Find min element | \( \text{argmin}_i\; |x_i| \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) nrm2: Vector 2 norm | \( ||x||_2 \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) rot: Apply Givens rotation | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) rotg: Generate Givens rotation | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) rotm: Apply modified Givens rotation | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) rotmg: Generate modified Givens rotation | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) scal: Scale vector | \( x = \alpha x \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) swap: Swap vectors | \( x <=> y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) Level 2: matrix-vector operations, O(n^2) work | Matrix operations that perform \( O(n^2) \) work on \( O(n^2) \) data |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) geadd: Add matrices | \( B = \alpha A + \beta B \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) gemv: General matrix-vector multiply | \( y = \alpha Ax + \beta y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) ger: General matrix rank 1 update | \( A = \alpha xy^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) hemv: Hermitian matrix-vector multiply | \( y = \alpha Ax + \beta y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) her: Hermitian rank 1 update | \( A = \alpha xx^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) her2: Hermitian rank 2 update | \( A = \alpha xy^T + \alpha yx^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) symv: Symmetric matrix-vector multiply | \( y = \alpha Ax + \beta y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) syr: Symmetric rank 1 update | \( A = \alpha xx^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) syr2: Symmetric rank 2 update | \( A = \alpha xy^T + \alpha yx^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trmv: Triangular matrix-vector multiply | \( x = Ax \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trsv: Triangular matrix-vector solve | \( x = op(A^{-1})\; b \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) swapblk: Swap several rows | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) swapdblk: Swap diagonal blocks | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) symmetrize: Symmetrize matrix | \( \text{upper}(A) = \text{lower}(A)^T \) or \( \text{lower}(A) = \text{upper}(A)^T \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) transpose: Transpose matrix | \( B = A^T \) or \( B = A^H \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) lacgv: Conjugate vector | \( x = conj(x) \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) lacpy: Copy matrix | \( B = A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) lascl: Scale matrix by scalar | \( A = \alpha A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) lascl_diag: Scale matrix by diagonal | \( A = D A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) lascl_2x2: Scale matrix by 2-by-2 pivot | \( A = D A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) laset: Set matrix to constants | \( A_{ij} = \) diag if \( i=j \); \( A_{ij} = \) offdiag otherwise |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) laset_band: Set band of matrix to constants | \( A_{ij} = \) diag if \( i=j \); \( A_{ij} = \) offdiag otherwise |
![|](ftv2vertline.png) ![](ftv2blank.png) Level 3: matrix-matrix operations, O(n^3) work | Matrix-matrix operations that perform \( O(n^3) \) work on \( O(n^2) \) data |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) gemm: General matrix multiply: C = AB + C | \( C = \alpha \;op(A) \;op(B) + \beta C \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) hemm: Hermitian matrix multiply | \( C = \alpha A B + \beta C \) or \( C = \alpha B A + \beta C \) where \( A \) is Hermitian |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) herk: Hermitian rank k update | \( C = \alpha A A^T + \beta C \) where \( C \) is Hermitian |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) her2k: Hermitian rank 2k update | \( C = \alpha A B^T + \alpha B A^T + \beta C \) where \( C \) is Hermitian |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) symm: Symmetric matrix multiply | \( C = \alpha A B + \beta C \) or \( C = \alpha B A + \beta C \) where \( A \) is symmetric |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) syrk: Symmetric rank k update | \( C = \alpha A A^T + \beta C \) where \( C \) is symmetric |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) syr2k: Symmetric rank 2k update | \( C = \alpha A B^T + \alpha B A^T + \beta C \) where \( C \) is symmetric |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trmm: Triangular matrix multiply | \( B = \alpha \;op(A)\; B \) or \( B = \alpha B \;op(A) \) where \( A \) is triangular |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trsm: Triangular solve matrix | \( C = op(A)^{-1} B \) or \( C = B \;op(A)^{-1} \) where \( A \) is triangular |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trtri: Triangular inverse; used in getri, potri | \( A = A^{-1} \) where \( A \) is triangular |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trtri_diag: Invert diagonal blocks of triangular matrix; used in trsm | |
![|](ftv2vertline.png) ![](ftv2blank.png) Householder reflectors | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) larfy: Apply Householder reflector to symmetric/Hermitian matrix | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) larfg: Generate Householder reflector | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) larfb: Apply block of Householder reflectors (Level 3) | |
![|](ftv2vertline.png) ![](ftv2blank.png) Precision conversion | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) _lag2_: Converts general matrix between single and double | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) _lat2_: Converts triangular matrix between single and double | |
![|](ftv2vertline.png) ![](ftv2blank.png) Matrix norms | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) lange: General matrix norm | 1, Frobenius, or Infinity norm; or largest element |
![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) lansy/he: Symmetric/Hermitian matrix norm | 1, Frobenius, or Infinity norm; or largest element |
Batched | ============================================================ |
![|](ftv2vertline.png) Linear system solvers | Solves \( Ax = b \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) General matrices: LU | Solves \( Ax = b \) using LU factorization for general matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gesv: Solves Ax = b using LU factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) getrf: LU factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) getrs: LU forward and back solves | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) getri: LU inverse | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gerfs: Refine solution | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) getf2: LU panel factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) laswp: Swap rows | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) No pivoting variant | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) gesv: Solves Ax = b using LU factorization - no pivoting (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) getf2: LU panel factorization - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) getrf: LU factorization - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) getrs: LU forward and back solves - no pivoting | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) General matrices: RBT + no pivoting LU | Solves \( Ax = b \) using RBT + no pivoting LU factorization for general matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gesv_rbt: Solves Ax = b using RBT + LU factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) gerbt: Apply random butterfly transformation (RBT) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) prbt | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) prbt_mv | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) prbt_mtv | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) General matrices: least squares | Solves \( Ax \approx b \) where \( A \) is rectangular |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gels: Least squares solves Ax = b using QR factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Symmetric/Hermitian positive definite: Cholesky | Solves \( Ax = b \) using Cholesky factorization for SPD/HPD matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) posv: Solves Ax = b using Cholesky factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) potrf: Cholesky factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) potrs: Cholesky forward and back solves | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) potri: Cholesky inverse | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) porfs: Refine solution | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) potf2: Cholesky panel factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) lauum: Multiply triangular matrices; used in potri | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Hermitian indefinite | Solves \( Ax = b \) using indefinite factorization for Hermitian matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) hesv: Solves Ax = b using symmetric indefinite factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) hesv: Solves Ax = b using symmetric indefinite factorization - no pivoting (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) hetrf: Symmetric indefinite factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) hetrs: Symmetric indefinite forward and back solves | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) hetri: Symmetric indefinite inverse | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) herfs: Refine solution | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) lahef: Partial factorization; used by hetrf | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) Symmetric indefinite | Solves \( Ax = b \) using indefinite factorization for symmetric matrices |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sysv: Solves Ax = b using symmetric indefinite factorization (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sysv: Solves Ax = b using symmetric indefinite factorization - no pivoting (driver) | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sytrf: Symmetric indefinite factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sytrs: Symmetric indefinite forward and back solves | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) sytri: Symmetric indefinite inverse | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) syrfs: Refine solution | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) lasyf: Partial factorization; used by sytrf | |
![|](ftv2vertline.png) Orthogonal/unitary factorizations |
|
![|](ftv2vertline.png) ![|](ftv2vertline.png) QR factorization | Factor \( A = QR \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) geqrf: QR factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/unmqr: Multiply by Q from QR factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/ungqr: Generate Q from QR factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) Auxiliary routines | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) geqr2: QR panel factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) copy V to R | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) RQ factorization | Factor \( A = RQ \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) gerqf: RQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/unmrq: Multiply by Q from RQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/ungrq: Generate Q from RQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) QL factorization | Factor \( A = QL \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) geqlf: QL factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/unmql: Multiply by Q from QL factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) or/ungql: Generate Q from QL factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) LQ factorization | Factor \( A = LQ \) |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) gelqf: LQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) or/unmlq: Multiply by Q from LQ factorization | |
![|](ftv2vertline.png) ![|](ftv2vertline.png) ![](ftv2blank.png) or/unglq: Generate Q from LQ factorization | |
![|](ftv2vertline.png) MAGMA BLAS and Auxiliary |
|
![|](ftv2vertline.png) ![](ftv2blank.png) Level 1: vectors operations, O(n) work | Vector operations that perform \( O(n) \) work on \( O(n) \) data |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) asum: Sum vector | \( \sum_i |x_i| \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) axpy: Add vectors | \( y = \alpha x + y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) copy: Copy vector | \( y = x \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) dot: Dot (inner) product | \( x^T y \) or \( x^H y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) iamax: Find max element | \( \text{argmax}_i\; |x_i| \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) iamin: Find min element | \( \text{argmin}_i\; |x_i| \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) nrm2: Vector 2 norm | \( ||x||_2 \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) rot: Apply Givens rotation | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) rotg: Generate Givens rotation | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) rotm: Apply modified Givens rotation | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) rotmg: Generate modified Givens rotation | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) scal: Scale vector | \( x = \alpha x \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) swap: Swap vectors | \( x <=> y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) Level 2: matrix-vector operations, O(n^2) work | Matrix operations that perform \( O(n^2) \) work on \( O(n^2) \) data |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) geadd: Add matrices | \( B = \alpha A + \beta B \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) gemv: General matrix-vector multiply | \( y = \alpha Ax + \beta y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) ger: General matrix rank 1 update | \( A = \alpha xy^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) hemv: Hermitian matrix-vector multiply | \( y = \alpha Ax + \beta y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) her: Hermitian rank 1 update | \( A = \alpha xx^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) her2: Hermitian rank 2 update | \( A = \alpha xy^T + \alpha yx^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) symv: Symmetric matrix-vector multiply | \( y = \alpha Ax + \beta y \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) syr: Symmetric rank 1 update | \( A = \alpha xx^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) syr2: Symmetric rank 2 update | \( A = \alpha xy^T + \alpha yx^T + A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trmv: Triangular matrix-vector multiply | \( x = Ax \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trsv: Triangular matrix-vector solve | \( x = op(A^{-1})\; b \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) swapblk: Swap several rows | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) swapdblk: Swap diagonal blocks | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) symmetrize: Symmetrize matrix | \( \text{upper}(A) = \text{lower}(A)^T \) or \( \text{lower}(A) = \text{upper}(A)^T \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) transpose: Transpose matrix | \( B = A^T \) or \( B = A^H \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) lacgv: Conjugate vector | \( x = conj(x) \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) lacpy: Copy matrix | \( B = A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) lascl: Scale matrix by scalar | \( A = \alpha A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) lascl2: Scale matrix by diagonal | \( A = D A \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) laset: Set matrix to constants | \( A_{ij} = \) diag if \( i=j \); \( A_{ij} = \) offdiag otherwise |
![|](ftv2vertline.png) ![](ftv2blank.png) Level 3: matrix-matrix operations, O(n^3) work | Matrix-matrix operations that perform \( O(n^3) \) work on \( O(n^2) \) data |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) gemm: General matrix multiply: C = AB + C | \( C = \alpha \;op(A) \;op(B) + \beta C \) |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) hemm: Hermitian matrix multiply | \( C = \alpha A B + \beta C \) or \( C = \alpha B A + \beta C \) where \( A \) is Hermitian |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) herk: Hermitian rank k update | \( C = \alpha A A^T + \beta C \) where \( C \) is Hermitian |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) her2k: Hermitian rank 2k update | \( C = \alpha A B^T + \alpha B A^T + \beta C \) where \( C \) is Hermitian |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) symm: Symmetric matrix multiply | \( C = \alpha A B + \beta C \) or \( C = \alpha B A + \beta C \) where \( A \) is symmetric |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) syrk: Symmetric rank k update | \( C = \alpha A A^T + \beta C \) where \( C \) is symmetric |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) syr2k: Symmetric rank 2k update | \( C = \alpha A B^T + \alpha B A^T + \beta C \) where \( C \) is symmetric |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trmm: Triangular matrix multiply | \( B = \alpha \;op(A)\; B \) or \( B = \alpha B \;op(A) \) where \( A \) is triangular |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trsm: Triangular solve matrix | \( C = op(A)^{-1} B \) or \( C = B \;op(A)^{-1} \) where \( A \) is triangular |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trtri: Triangular inverse; used in getri, potri | \( A = A^{-1} \) where \( A \) is triangular |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) trtri_diag: Invert diagonal blocks of triangular matrix; used in trsm | |
![|](ftv2vertline.png) ![](ftv2blank.png) Householder reflectors | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) larf: Apply Householder reflector to general matrix | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) larfy: Apply Householder reflector to symmetric/Hermitian matrix | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) larfg: Generate Householder reflector | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) larfb: Apply block of Householder reflectors (Level 3) | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) larft: Generate T matrix for block of Householder reflectors | |
![|](ftv2vertline.png) ![](ftv2blank.png) Precision conversion | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) _lag2_: Converts general matrix between single and double | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![|](ftv2vertline.png) _lat2_: Converts triangular matrix between single and double | |
![|](ftv2vertline.png) ![](ftv2blank.png) Matrix norms | |
![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) lange: General matrix norm | 1, Frobenius, or Infinity norm; or largest element |
![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) lansy/he: Symmetric/Hermitian matrix norm | 1, Frobenius, or Infinity norm; or largest element |
![|](ftv2vertline.png) ![](ftv2blank.png) ![](ftv2blank.png) lantr: Triangular matrix norm | 1, Frobenius, or Infinity norm; or largest element |
Sparse | ============================================================ |
![](ftv2blank.png) Sparse linear systems | Solve \( Ax = b \) |
![](ftv2blank.png) ![|](ftv2vertline.png) General matrices | Solve \( Ax = b \), for general \( A \) |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) single precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) double precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) single-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) double-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) Symmetric/Hermitian positive definite | Solve \( Ax = b \), for symmetric/Hermitian positive definite (SPD) \( A \) |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) single precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) double precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) single-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) double-complex precision | |
![](ftv2blank.png) Sparse eigenvalues |
|
![](ftv2blank.png) ![|](ftv2vertline.png) Symmetric/Hermitian eigenvalues | Solve \( Ax = \lambda x \) for symmetric/Hermitian \( A \) |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) single precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) double precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) single-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) double-complex precision | |
![](ftv2blank.png) Sparse preconditioners |
|
![](ftv2blank.png) ![|](ftv2vertline.png) General matrix preconditioner | Preconditioners for non-symmetric \( A \) |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) single precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) double precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) single-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) double-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) Symmetric/Hermitian preconditioner | Preconditioners for symmetric/Hermitian \( A \) |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) single precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) double precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) single-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) double-complex precision | |
![](ftv2blank.png) GPU kernels for sparse LA |
|
![](ftv2blank.png) ![|](ftv2vertline.png) GPU kernels for non-symmetric sparse LA | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) single precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) double precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) single-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![|](ftv2vertline.png) double-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) GPU kernels for symmetric/Hermitian sparse LA | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) single precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) double precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) single-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) ![](ftv2blank.png) double-complex precision | |
![](ftv2blank.png) Sparse BLAS |
|
![](ftv2blank.png) ![|](ftv2vertline.png) single precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) double precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) single-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) double-complex precision | |
![](ftv2blank.png) Sparse auxiliary |
|
![](ftv2blank.png) ![|](ftv2vertline.png) single precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) double precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) single-complex precision | |
![](ftv2blank.png) ![|](ftv2vertline.png) double-complex precision | |
![](ftv2blank.png) Sparse unfiled |
|
![](ftv2blank.png) ![](ftv2blank.png) single precision | |
![](ftv2blank.png) ![](ftv2blank.png) double precision | |
![](ftv2blank.png) ![](ftv2blank.png) single-complex precision | |
![](ftv2blank.png) ![](ftv2blank.png) double-complex precision | |