Sacado
Development
|
Fad specializations for Teuchos::BLAS wrappers. More...
#include <Sacado_Fad_BLAS.hpp>
Public Member Functions | |
Constructor/Destructor. | |
BLAS (bool use_default_impl=true, bool use_dynamic=true, OrdinalType static_workspace_size=0) | |
Default constructor. | |
BLAS (const BLAS &x) | |
Copy constructor. | |
virtual | ~BLAS () |
Destructor. | |
Level 1 BLAS Routines. | |
void | ROTG (FadType *da, FadType *db, MagnitudeType *c, FadType *s) const |
Computes a Givens plane rotation. | |
void | ROT (const OrdinalType n, FadType *dx, const OrdinalType incx, FadType *dy, const OrdinalType incy, MagnitudeType *c, FadType *s) const |
Applies a Givens plane rotation. | |
void | SCAL (const OrdinalType n, const FadType &alpha, FadType *x, const OrdinalType incx) const |
Scale the std::vector x by the constant alpha . | |
void | COPY (const OrdinalType n, const FadType *x, const OrdinalType incx, FadType *y, const OrdinalType incy) const |
Copy the std::vector x to the std::vector y . | |
template<typename alpha_type , typename x_type > | |
void | AXPY (const OrdinalType n, const alpha_type &alpha, const x_type *x, const OrdinalType incx, FadType *y, const OrdinalType incy) const |
Perform the operation: y <- y+alpha*x . | |
Teuchos::ScalarTraits< FadType > ::magnitudeType | ASUM (const OrdinalType n, const FadType *x, const OrdinalType incx) const |
Sum the absolute values of the entries of x . | |
template<typename x_type , typename y_type > | |
FadType | DOT (const OrdinalType n, const x_type *x, const OrdinalType incx, const y_type *y, const OrdinalType incy) const |
Form the dot product of the vectors x and y . | |
MagnitudeType | NRM2 (const OrdinalType n, const FadType *x, const OrdinalType incx) const |
Compute the 2-norm of the std::vector x . | |
OrdinalType | IAMAX (const OrdinalType n, const FadType *x, const OrdinalType incx) const |
Return the index of the element of x with the maximum magnitude. | |
Level 2 BLAS Routines. | |
template<typename alpha_type , typename A_type , typename x_type , typename beta_type > | |
void | GEMV (Teuchos::ETransp trans, const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const A_type *A, const OrdinalType lda, const x_type *x, const OrdinalType incx, const beta_type &beta, FadType *y, const OrdinalType incy) const |
Performs the matrix-std::vector operation: y <- alpha*A*x+beta*y or y <- alpha*A'*x+beta*y where A is a general m by n matrix. | |
template<typename A_type > | |
void | TRMV (Teuchos::EUplo uplo, Teuchos::ETransp trans, Teuchos::EDiag diag, const OrdinalType n, const A_type *A, const OrdinalType lda, FadType *x, const OrdinalType incx) const |
Performs the matrix-std::vector operation: x <- A*x or x <- A'*x where A is a unit/non-unit n by n upper/lower triangular matrix. | |
template<typename alpha_type , typename x_type , typename y_type > | |
void | GER (const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const x_type *x, const OrdinalType incx, const y_type *y, const OrdinalType incy, FadType *A, const OrdinalType lda) const |
Performs the rank 1 operation: A <- alpha*x*y'+A . | |
Level 3 BLAS Routines. | |
template<typename alpha_type , typename A_type , typename B_type , typename beta_type > | |
void | GEMM (Teuchos::ETransp transa, Teuchos::ETransp transb, const OrdinalType m, const OrdinalType n, const OrdinalType k, const alpha_type &alpha, const A_type *A, const OrdinalType lda, const B_type *B, const OrdinalType ldb, const beta_type &beta, FadType *C, const OrdinalType ldc) const |
Performs the matrix-matrix operation: C <- alpha*op (A)*op(B)+beta*C where op(A) is either A or A' , op(B) is either B or B' , and C is an m by k matrix. | |
template<typename alpha_type , typename A_type , typename B_type , typename beta_type > | |
void | SYMM (Teuchos::ESide side, Teuchos::EUplo uplo, const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const A_type *A, const OrdinalType lda, const B_type *B, const OrdinalType ldb, const beta_type &beta, FadType *C, const OrdinalType ldc) const |
Performs the matrix-matrix operation: C <- alpha*A*B+beta*C or C <- alpha*B*A+beta*C where A is an m by m or n by n symmetric matrix and B is a general matrix. | |
template<typename alpha_type , typename A_type > | |
void | TRMM (Teuchos::ESide side, Teuchos::EUplo uplo, Teuchos::ETransp transa, Teuchos::EDiag diag, const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const A_type *A, const OrdinalType lda, FadType *B, const OrdinalType ldb) const |
Performs the matrix-matrix operation: C <- alpha*op (A)*B+beta*C or C <- alpha*B*op (A)+beta*C where op(A) is an unit/non-unit, upper/lower triangular matrix and B is a general matrix. | |
template<typename alpha_type , typename A_type > | |
void | TRSM (Teuchos::ESide side, Teuchos::EUplo uplo, Teuchos::ETransp transa, Teuchos::EDiag diag, const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const A_type *A, const OrdinalType lda, FadType *B, const OrdinalType ldb) const |
Solves the matrix equations: op(A)*X=alpha*B or X*op (A)=alpha*B where X and B are m by n matrices, A is a unit/non-unit, upper/lower triangular matrix and op(A) is A or A' . The matrix X is overwritten on B . | |
Protected Member Functions | |
template<typename x_type , typename y_type > | |
void | Fad_DOT (const OrdinalType n, const x_type *x, const OrdinalType incx, const OrdinalType n_x_dot, const x_type *x_dot, const OrdinalType incx_dot, const y_type *y, const OrdinalType incy, const OrdinalType n_y_dot, const y_type *y_dot, const OrdinalType incy_dot, ValueType &z, const OrdinalType n_z_dot, ValueType *zdot) const |
Implementation of DOT. | |
template<typename alpha_type , typename A_type , typename x_type , typename beta_type > | |
void | Fad_GEMV (Teuchos::ETransp trans, const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const OrdinalType n_alpha_dot, const alpha_type *alpha_dot, const A_type *A, const OrdinalType lda, const OrdinalType n_A_dot, const A_type *A_dot, const OrdinalType lda_dot, const x_type *x, const OrdinalType incx, const OrdinalType n_x_dot, const x_type *x_dot, const OrdinalType incx_dot, const beta_type &beta, const OrdinalType n_beta_dot, const beta_type *beta_dot, ValueType *y, const OrdinalType incy, const OrdinalType n_y_dot, ValueType *y_dot, const OrdinalType incy_dot, const OrdinalType n_dot) const |
Implementation of GEMV. | |
template<typename alpha_type , typename x_type , typename y_type > | |
void | Fad_GER (const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const OrdinalType n_alpha_dot, const alpha_type *alpha_dot, const x_type *x, const OrdinalType incx, const OrdinalType n_x_dot, const x_type *x_dot, const OrdinalType incx_dot, const y_type *y, const OrdinalType incy, const OrdinalType n_y_dot, const y_type *y_dot, const OrdinalType incy_dot, ValueType *A, const OrdinalType lda, const OrdinalType n_A_dot, ValueType *A_dot, const OrdinalType lda_dot, const OrdinalType n_dot) const |
Implementation of GER. | |
template<typename alpha_type , typename A_type , typename B_type , typename beta_type > | |
void | Fad_GEMM (Teuchos::ETransp transa, Teuchos::ETransp transb, const OrdinalType m, const OrdinalType n, const OrdinalType k, const alpha_type &alpha, const OrdinalType n_alpha_dot, const alpha_type *alpha_dot, const A_type *A, const OrdinalType lda, const OrdinalType n_A_dot, const A_type *A_dot, const OrdinalType lda_dot, const B_type *B, const OrdinalType ldb, const OrdinalType n_B_dot, const B_type *B_dot, const OrdinalType ldb_dot, const beta_type &beta, const OrdinalType n_beta_dot, const beta_type *beta_dot, ValueType *C, const OrdinalType ldc, const OrdinalType n_C_dot, ValueType *C_dot, const OrdinalType ldc_dot, const OrdinalType n_dot) const |
Implementation of GEMM. | |
template<typename alpha_type , typename A_type , typename B_type , typename beta_type > | |
void | Fad_SYMM (Teuchos::ESide side, Teuchos::EUplo uplo, const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const OrdinalType n_alpha_dot, const alpha_type *alpha_dot, const A_type *A, const OrdinalType lda, const OrdinalType n_A_dot, const A_type *A_dot, const OrdinalType lda_dot, const B_type *B, const OrdinalType ldb, const OrdinalType n_B_dot, const B_type *B_dot, const OrdinalType ldb_dot, const beta_type &beta, const OrdinalType n_beta_dot, const beta_type *beta_dot, ValueType *C, const OrdinalType ldc, const OrdinalType n_C_dot, ValueType *C_dot, const OrdinalType ldc_dot, const OrdinalType n_dot) const |
Implementation of SYMM. | |
template<typename alpha_type , typename A_type > | |
void | Fad_TRMM (Teuchos::ESide side, Teuchos::EUplo uplo, Teuchos::ETransp transa, Teuchos::EDiag diag, const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const OrdinalType n_alpha_dot, const alpha_type *alpha_dot, const A_type *A, const OrdinalType lda, const OrdinalType n_A_dot, const A_type *A_dot, const OrdinalType lda_dot, ValueType *B, const OrdinalType ldb, const OrdinalType n_B_dot, ValueType *B_dot, const OrdinalType ldb_dot, const OrdinalType n_dot) const |
Implementation of TRMM. | |
template<typename alpha_type , typename A_type > | |
void | Fad_TRSM (Teuchos::ESide side, Teuchos::EUplo uplo, Teuchos::ETransp transa, Teuchos::EDiag diag, const OrdinalType m, const OrdinalType n, const alpha_type &alpha, const OrdinalType n_alpha_dot, const alpha_type *alpha_dot, const A_type *A, const OrdinalType lda, const OrdinalType n_A_dot, const A_type *A_dot, const OrdinalType lda_dot, ValueType *B, const OrdinalType ldb, const OrdinalType n_B_dot, ValueType *B_dot, const OrdinalType ldb_dot, const OrdinalType n_dot) const |
Implementation of TRMM. | |
Protected Attributes | |
ArrayTraits< OrdinalType, FadType > | arrayTraits |
ArrayTraits for packing/unpacking value/derivative arrays. | |
Teuchos::BLAS< OrdinalType, ValueType > | blas |
BLAS for values. | |
bool | use_default_impl |
Use custom or default implementation. | |
std::vector< ValueType > | gemv_Ax |
Temporary array for GEMV. | |
std::vector< ValueType > | gemm_AB |
Temporary array for GEMM. | |
Fad specializations for Teuchos::BLAS wrappers.