#include <Teuchos_BLAS.hpp>
Public Member Functions | |
Constructor/Destructor. | |
BLAS (void) | |
Default constructor. | |
BLAS (const BLAS< OrdinalType, ScalarType > &) | |
Copy constructor. | |
virtual | ~BLAS (void) |
Destructor. | |
Level 1 BLAS Routines. | |
void | ROTG (ScalarType *da, ScalarType *db, MagnitudeType *c, ScalarType *s) const |
Computes a Givens plane rotation. | |
void | ROT (const OrdinalType n, ScalarType *dx, const OrdinalType incx, ScalarType *dy, const OrdinalType incy, MagnitudeType *c, ScalarType *s) const |
Applies a Givens plane rotation. | |
void | SCAL (const OrdinalType n, const ScalarType alpha, ScalarType *x, const OrdinalType incx) const |
Scale the std::vector x by the constant alpha . | |
void | COPY (const OrdinalType n, const ScalarType *x, const OrdinalType incx, ScalarType *y, const OrdinalType incy) const |
Copy the std::vector x to the std::vector y . | |
void | AXPY (const OrdinalType n, const ScalarType alpha, const ScalarType *x, const OrdinalType incx, ScalarType *y, const OrdinalType incy) const |
Perform the operation: y <- y+alpha*x . | |
ScalarTraits< ScalarType > ::magnitudeType | ASUM (const OrdinalType n, const ScalarType *x, const OrdinalType incx) const |
Sum the absolute values of the entries of x . | |
ScalarType | DOT (const OrdinalType n, const ScalarType *x, const OrdinalType incx, const ScalarType *y, const OrdinalType incy) const |
Form the dot product of the vectors x and y . | |
ScalarTraits< ScalarType > ::magnitudeType | NRM2 (const OrdinalType n, const ScalarType *x, const OrdinalType incx) const |
Compute the 2-norm of the std::vector x . | |
OrdinalType | IAMAX (const OrdinalType n, const ScalarType *x, const OrdinalType incx) const |
Return the index of the element of x with the maximum magnitude. | |
Level 2 BLAS Routines. | |
void | GEMV (ETransp trans, const OrdinalType m, const OrdinalType n, const ScalarType alpha, const ScalarType *A, const OrdinalType lda, const ScalarType *x, const OrdinalType incx, const ScalarType beta, ScalarType *y, const OrdinalType incy) const |
Performs the matrix-stdvector operation: y <- alpha*A*x+beta*y or y <- alpha*A'*x+beta*y where A is a general m by n matrix. | |
void | TRMV (EUplo uplo, ETransp trans, EDiag diag, const OrdinalType n, const ScalarType *A, const OrdinalType lda, ScalarType *x, const OrdinalType incx) const |
Performs the matrix-stdvector operation: x <- A*x or x <- A'*x where A is a unit/non-unit n by n upper/lower triangular matrix. | |
void | GER (const OrdinalType m, const OrdinalType n, const ScalarType alpha, const ScalarType *x, const OrdinalType incx, const ScalarType *y, const OrdinalType incy, ScalarType *A, const OrdinalType lda) const |
Performs the rank 1 operation: A <- alpha*x*y'+A . | |
Level 3 BLAS Routines. | |
void | GEMM (ETransp transa, ETransp transb, const OrdinalType m, const OrdinalType n, const OrdinalType k, const ScalarType alpha, const ScalarType *A, const OrdinalType lda, const ScalarType *B, const OrdinalType ldb, const ScalarType beta, ScalarType *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. | |
void | SYMM (ESide side, EUplo uplo, const OrdinalType m, const OrdinalType n, const ScalarType alpha, const ScalarType *A, const OrdinalType lda, const ScalarType *B, const OrdinalType ldb, const ScalarType beta, ScalarType *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. | |
void | TRMM (ESide side, EUplo uplo, ETransp transa, EDiag diag, const OrdinalType m, const OrdinalType n, const ScalarType alpha, const ScalarType *A, const OrdinalType lda, ScalarType *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. | |
void | TRSM (ESide side, EUplo uplo, ETransp transa, EDiag diag, const OrdinalType m, const OrdinalType n, const ScalarType alpha, const ScalarType *A, const OrdinalType lda, ScalarType *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 . |
The Teuchos::BLAS class provides functionality similar to the BLAS (Basic Linear Algebra Subprograms). The BLAS provide portable, high- performance implementations of kernels such as dense std::vector multiplication, dot products, dense matrix-stdvector multiplication and dense matrix-matrix multiplication.
The standard BLAS interface is Fortran-specific. Unfortunately, the interface between C++ and Fortran is not standard across all computer platforms. The Teuchos_BLAS class provides C++ bindings for the BLAS kernels in order to insulate the rest of Petra from the details of C++ to Fortran translation.
In addition to giving access the standard BLAS functionality. Teuchos::BLAS also provide functionality for any <ScalarType> class that defines the +, - * and / operators.
Teuchos::BLAS is a single memory image interface only. This is appropriate since the standard BLAS are only specified for serial execution (or shared memory parallel).
Definition at line 119 of file Teuchos_BLAS.hpp.
Teuchos::BLAS< OrdinalType, ScalarType >::BLAS | ( | void | ) | [inline] |
Teuchos::BLAS< OrdinalType, ScalarType >::BLAS | ( | const BLAS< OrdinalType, ScalarType > & | ) | [inline] |
virtual Teuchos::BLAS< OrdinalType, ScalarType >::~BLAS | ( | void | ) | [inline, virtual] |
ScalarTraits< ScalarType >::magnitudeType Teuchos::BLAS< OrdinalType, ScalarType >::ASUM | ( | const OrdinalType | n, | |
const ScalarType * | x, | |||
const OrdinalType | incx | |||
) | const [inline] |
void Teuchos::BLAS< OrdinalType, ScalarType >::AXPY | ( | const OrdinalType | n, | |
const ScalarType | alpha, | |||
const ScalarType * | x, | |||
const OrdinalType | incx, | |||
ScalarType * | y, | |||
const OrdinalType | incy | |||
) | const [inline] |
void Teuchos::BLAS< OrdinalType, ScalarType >::COPY | ( | const OrdinalType | n, | |
const ScalarType * | x, | |||
const OrdinalType | incx, | |||
ScalarType * | y, | |||
const OrdinalType | incy | |||
) | const [inline] |
ScalarType Teuchos::BLAS< OrdinalType, ScalarType >::DOT | ( | const OrdinalType | n, | |
const ScalarType * | x, | |||
const OrdinalType | incx, | |||
const ScalarType * | y, | |||
const OrdinalType | incy | |||
) | const [inline] |
void Teuchos::BLAS< OrdinalType, ScalarType >::GEMM | ( | ETransp | transa, | |
ETransp | transb, | |||
const OrdinalType | m, | |||
const OrdinalType | n, | |||
const OrdinalType | k, | |||
const ScalarType | alpha, | |||
const ScalarType * | A, | |||
const OrdinalType | lda, | |||
const ScalarType * | B, | |||
const OrdinalType | ldb, | |||
const ScalarType | beta, | |||
ScalarType * | C, | |||
const OrdinalType | ldc | |||
) | const [inline] |
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.
Definition at line 761 of file Teuchos_BLAS.hpp.
void Teuchos::BLAS< OrdinalType, ScalarType >::GEMV | ( | ETransp | trans, | |
const OrdinalType | m, | |||
const OrdinalType | n, | |||
const ScalarType | alpha, | |||
const ScalarType * | A, | |||
const OrdinalType | lda, | |||
const ScalarType * | x, | |||
const OrdinalType | incx, | |||
const ScalarType | beta, | |||
ScalarType * | y, | |||
const OrdinalType | incy | |||
) | const [inline] |
Performs the matrix-stdvector operation: y
<-
alpha*A*x+beta*y
or y
<-
alpha*A'*x+beta*y
where A
is a general m
by n
matrix.
Definition at line 400 of file Teuchos_BLAS.hpp.
void Teuchos::BLAS< OrdinalType, ScalarType >::GER | ( | const OrdinalType | m, | |
const OrdinalType | n, | |||
const ScalarType | alpha, | |||
const ScalarType * | x, | |||
const OrdinalType | incx, | |||
const ScalarType * | y, | |||
const OrdinalType | incy, | |||
ScalarType * | A, | |||
const OrdinalType | lda | |||
) | const [inline] |
OrdinalType Teuchos::BLAS< OrdinalType, ScalarType >::IAMAX | ( | const OrdinalType | n, | |
const ScalarType * | x, | |||
const OrdinalType | incx | |||
) | const [inline] |
Return the index of the element of x
with the maximum magnitude.
Definition at line 370 of file Teuchos_BLAS.hpp.
ScalarTraits< ScalarType >::magnitudeType Teuchos::BLAS< OrdinalType, ScalarType >::NRM2 | ( | const OrdinalType | n, | |
const ScalarType * | x, | |||
const OrdinalType | incx | |||
) | const [inline] |
void Teuchos::BLAS< OrdinalType, ScalarType >::ROT | ( | const OrdinalType | n, | |
ScalarType * | dx, | |||
const OrdinalType | incx, | |||
ScalarType * | dy, | |||
const OrdinalType | incy, | |||
MagnitudeType * | c, | |||
ScalarType * | s | |||
) | const [inline] |
void Teuchos::BLAS< OrdinalType, ScalarType >::ROTG | ( | ScalarType * | da, | |
ScalarType * | db, | |||
MagnitudeType * | c, | |||
ScalarType * | s | |||
) | const [inline] |
void Teuchos::BLAS< OrdinalType, ScalarType >::SCAL | ( | const OrdinalType | n, | |
const ScalarType | alpha, | |||
ScalarType * | x, | |||
const OrdinalType | incx | |||
) | const [inline] |
void Teuchos::BLAS< OrdinalType, ScalarType >::SYMM | ( | ESide | side, | |
EUplo | uplo, | |||
const OrdinalType | m, | |||
const OrdinalType | n, | |||
const ScalarType | alpha, | |||
const ScalarType * | A, | |||
const OrdinalType | lda, | |||
const ScalarType * | B, | |||
const OrdinalType | ldb, | |||
const ScalarType | beta, | |||
ScalarType * | C, | |||
const OrdinalType | ldc | |||
) | const [inline] |
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.
Definition at line 910 of file Teuchos_BLAS.hpp.
void Teuchos::BLAS< OrdinalType, ScalarType >::TRMM | ( | ESide | side, | |
EUplo | uplo, | |||
ETransp | transa, | |||
EDiag | diag, | |||
const OrdinalType | m, | |||
const OrdinalType | n, | |||
const ScalarType | alpha, | |||
const ScalarType * | A, | |||
const OrdinalType | lda, | |||
ScalarType * | B, | |||
const OrdinalType | ldb | |||
) | const [inline] |
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.
Definition at line 1037 of file Teuchos_BLAS.hpp.
void Teuchos::BLAS< OrdinalType, ScalarType >::TRMV | ( | EUplo | uplo, | |
ETransp | trans, | |||
EDiag | diag, | |||
const OrdinalType | n, | |||
const ScalarType * | A, | |||
const OrdinalType | lda, | |||
ScalarType * | x, | |||
const OrdinalType | incx | |||
) | const [inline] |
Performs the matrix-stdvector operation: x
<-
A*x
or x
<-
A'*x
where A
is a unit/non-unit n
by n
upper/lower triangular matrix.
Definition at line 532 of file Teuchos_BLAS.hpp.
void Teuchos::BLAS< OrdinalType, ScalarType >::TRSM | ( | ESide | side, | |
EUplo | uplo, | |||
ETransp | transa, | |||
EDiag | diag, | |||
const OrdinalType | m, | |||
const OrdinalType | n, | |||
const ScalarType | alpha, | |||
const ScalarType * | A, | |||
const OrdinalType | lda, | |||
ScalarType * | B, | |||
const OrdinalType | ldb | |||
) | const [inline] |
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
.
Definition at line 1236 of file Teuchos_BLAS.hpp.