LAMA
lama::BLAS3Interface< T > Struct Template Reference

#include <LAMAInterface.hpp>

Inheritance diagram for lama::BLAS3Interface< T >:

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)

template<typename T>
struct lama::BLAS3Interface< T >


Constructor & Destructor Documentation

template<typename T >
lama::BLAS3Interface< T >::BLAS3Interface ( )

For future versions: left functions for hermetian matrices.

Default constructor, initializes variables with NULL


Field Documentation

template<typename T>
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) = $X^{T}$

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.

Parameters:
[in]orderspecifies whether arrays are row-major or column-major stored
[in]transAspecifies op(A) If transa = 'N', 'n' op(A) = A If transa == 'T', 't', 'C', 'c' op(A) = $A^{T}$
[in]transBspecifies op(B) If transb = 'N', 'n' op(B) = B If transb == 'T', 't', 'C', 'c' op(B) = BT
[in]mnumber of rows of matrix op(A) and rows of matrix C; m must be at least zero.
[in]nnumber of columns of matrix op(B) and number of columns of C; n must be at least zero.
[in]knumber of columns of matrix op(A) and number of rows of op(B); k must be at least zero.
[in]alphascalar multiplier applied to op(A) * op(B)
[in]Aarray 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]ldaleading dimension of two-dimensional array used to store matrix A.
[in]Barray 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]ldbleading dimension of two-dimensional array used to store matrix B.
[in]betascalar multiplier applied to C. If zero, C does not have to be a valid input
[in,out]Carray of dimensions (ldc,n); ldc must be at least max(1,m). updated based on C = alpha * op(A) * op(B) + beta * C
[in]ldcleading dimension of two-dimensional array used to store matrix C.
[in,out]syncTokenis optional synchronization taken that might be used for asynchronous execution

Referenced by lama::CUDAInterface::CUDAInterface(), and lama::OpenMPInterface::OpenMPInterface().

template<typename T>
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().

template<typename T>
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().

template<typename T>
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)
template<typename T>
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().

template<typename T>
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().


The documentation for this struct was generated from the following files: