LAMA
|
#include <LAMAInterface.hpp>
Public Member Functions | |
BLAS3Interface () | |
For future versions: left functions for hermetian matrices. | |
Data Fields | |
void(* | gemm )(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE transA, const enum CBLAS_TRANSPOSE transB, const IndexType m, const IndexType n, const IndexType k, const T alpha, const T *A, const IndexType lda, const T *B, const IndexType ldb, const T beta, T *C, const IndexType ldc, class SyncToken *syncToken) |
gemm computes the product of matrix A and matrix B, multiplies the result by scalar alpha, and adds the sum to the product of matrix C and scalar beta. | |
void(* | symm )(const enum CBLAS_ORDER order, const enum CBLAS_SIDE side, const enum CBLAS_UPLO uplo, const int m, const int n, const T alpha, const T *A, const int lda, const T *B, const int ldb, const T beta, T *C, const int ldc, SyncToken *syncToken) |
Product of a real or complex symmetric matrix A and a general matrix B. | |
void(* | trmm )(const enum CBLAS_ORDER order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const IndexType M, const IndexType N, const T alpha, const T *A, const IndexType lda, T *B, const IndexType ldb, SyncToken *syncToken) |
Product of a triangular matrix A and a general matrix B. | |
void(* | trsm )(const enum CBLAS_ORDER order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const IndexType M, const IndexType N, const T alpha, const T *A, const IndexType lda, T *B, const IndexType ldb, SyncToken *syncToken) |
Solution of a nonsingular triangular system of equations. | |
void(* | syrk )(const enum CBLAS_ORDER order, const enum CBLAS_UPLO uplo, const enum CBLAS_TRANSPOSE trans, const int n, const int k, const T alpha, const T *A, const int lda, const T beta, T *C, const int ldc, SyncToken *syncToken) |
Rank-k update of a real or complex symmetric matrix C. | |
void(* | syrk2 )(const enum CBLAS_ORDER order, const enum CBLAS_UPLO uplo, const enum CBLAS_TRANSPOSE trans, const IndexType n, const IndexType k, const T alpha, const T *A, const IndexType lda, const T *B, const IndexType ldb, const T beta, T *C, const IndexType ldc, SyncToken *syncToken) |
lama::BLAS3Interface< T >::BLAS3Interface | ( | ) |
For future versions: left functions for hermetian matrices.
Default constructor, initializes variables with NULL
void(* lama::BLAS3Interface< T >::gemm)(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE transA, const enum CBLAS_TRANSPOSE transB, const IndexType m, const IndexType n, const IndexType k, const T alpha, const T *A, const IndexType lda, const T *B, const IndexType ldb, const T beta, T *C, const IndexType ldc, class SyncToken *syncToken) |
gemm computes the product of matrix A and matrix B, multiplies the result by scalar alpha, and adds the sum to the product of matrix C and scalar beta.
It performs one of the matrix‐matrix operations:
C = alpha * op(A) * op(B) + beta * C, where op(X) = X or op(X) =
alpha and beta are scalars. A, B, and C are matrices consisting of elements, with op(A) an m×k matrix, op(B) a k×n matrix, C an m×n matrix. matrix A, B, and C are stored in column‐major format, lda, ldb, and ldc are the leading dimensions of the two‐dimensional arrays containing A, B, and C.
[in] | order | specifies whether arrays are row-major or column-major stored |
[in] | transA | specifies op(A) If transa = 'N', 'n' op(A) = A If transa == 'T', 't', 'C', 'c' op(A) = ![]() |
[in] | transB | specifies op(B) If transb = 'N', 'n' op(B) = B If transb == 'T', 't', 'C', 'c' op(B) = BT |
[in] | m | number of rows of matrix op(A) and rows of matrix C; m must be at least zero. |
[in] | n | number of columns of matrix op(B) and number of columns of C; n must be at least zero. |
[in] | k | number of columns of matrix op(A) and number of rows of op(B); k must be at least zero. |
[in] | alpha | scalar multiplier applied to op(A) * op(B) |
[in] | A | array of dimensions (lda, k) if transa == 'N' or 'n', and of dimensions (lda, m) otherwise. If transa == 'N' or 'n', lda must be at least max(1, m); otherwise, lda must be at least max(1, k). |
[in] | lda | leading dimension of two-dimensional array used to store matrix A. |
[in] | B | array of dimensions (ldb, n) if transb == 'N' or 'n', and of dimensions (ldb, k) otherwise. If transb == 'N' or 'n', ldb must be at least max(1, k); otherwise, lda must be at least max(1, n). |
[in] | ldb | leading dimension of two-dimensional array used to store matrix B. |
[in] | beta | scalar multiplier applied to C. If zero, C does not have to be a valid input |
[in,out] | C | array of dimensions (ldc,n); ldc must be at least max(1,m). updated based on C = alpha * op(A) * op(B) + beta * C |
[in] | ldc | leading dimension of two-dimensional array used to store matrix C. |
[in,out] | syncToken | is optional synchronization taken that might be used for asynchronous execution |
Referenced by lama::CUDAInterface::CUDAInterface(), and lama::OpenMPInterface::OpenMPInterface().
void(* lama::BLAS3Interface< T >::symm)(const enum CBLAS_ORDER order, const enum CBLAS_SIDE side, const enum CBLAS_UPLO uplo, const int m, const int n, const T alpha, const T *A, const int lda, const T *B, const int ldb, const T beta, T *C, const int ldc, SyncToken *syncToken) |
Product of a real or complex symmetric matrix A and a general matrix B.
Referenced by lama::OpenMPInterface::OpenMPInterface().
void(* lama::BLAS3Interface< T >::syrk)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO uplo, const enum CBLAS_TRANSPOSE trans, const int n, const int k, const T alpha, const T *A, const int lda, const T beta, T *C, const int ldc, SyncToken *syncToken) |
Rank-k update of a real or complex symmetric matrix C.
Referenced by lama::OpenMPInterface::OpenMPInterface().
void(* lama::BLAS3Interface< T >::syrk2)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO uplo, const enum CBLAS_TRANSPOSE trans, const IndexType n, const IndexType k, const T alpha, const T *A, const IndexType lda, const T *B, const IndexType ldb, const T beta, T *C, const IndexType ldc, SyncToken *syncToken) |
Referenced by lama::OpenMPInterface::OpenMPInterface().
void(* lama::BLAS3Interface< T >::trmm)(const enum CBLAS_ORDER order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const IndexType M, const IndexType N, const T alpha, const T *A, const IndexType lda, T *B, const IndexType ldb, SyncToken *syncToken) |
Product of a triangular matrix A and a general matrix B.
Referenced by lama::OpenMPInterface::OpenMPInterface().
void(* lama::BLAS3Interface< T >::trsm)(const enum CBLAS_ORDER order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const IndexType M, const IndexType N, const T alpha, const T *A, const IndexType lda, T *B, const IndexType ldb, SyncToken *syncToken) |
Solution of a nonsingular triangular system of equations.
Referenced by lama::CUDAInterface::CUDAInterface(), and lama::OpenMPInterface::OpenMPInterface().