![]() |
MAGMA
1.5.0
Matrix Algebra for GPU and Multicore Architectures
|
Functions | |
void | magmablas_dgemvn_fermi (magma_int_t m, magma_int_t n, double alpha, const double *A, magma_int_t lda, const double *x, magma_int_t incx, double beta, double *y, magma_int_t incy) |
This routine computes y = alpha A x + beta y, on the GPU. More... | |
void | magmablas_dgemvt_fermi (magma_int_t m, magma_int_t n, double alpha, const double *A, magma_int_t lda, const double *x, magma_int_t incx, double beta, double *y, magma_int_t incy) |
PurposeMore... | |
void | magmablas_dgemv (magma_trans_t trans, magma_int_t m, magma_int_t n, double alpha, const double *A, magma_int_t lda, const double *x, magma_int_t incx, double beta, double *y, magma_int_t incy) |
PurposeThis routine computes: 1) y = A x if trans == 'N' or 'n', alpha == 1, beta == 0, and incx == incy == 1 (using magmablas code) 2) y = alpha A^T x if trans == 'T' or 't', beta == 0, and incx == incy == 1 (using magmablas code) 3) y = alpha A^trans x + beta y otherwise, using CUBLAS. More... | |
void | magmablas_dgemv_MLU (magma_int_t m, magma_int_t n, const double *A, magma_int_t lda, const double *x, double *y) |
This routine computes y = y - Ax on the GPU. More... | |
void | magmablas_dgemv_tesla (magma_trans_t trans, magma_int_t m, magma_int_t n, double alpha, const double *A, magma_int_t lda, const double *x, magma_int_t incx, double beta, double *y, magma_int_t incy) |
This routine computes: 1) y = A x if trans == 'N' or 'n', alpha == 1, beta == 0, and incx == incy == 1 (using magmablas code) 2) y = alpha A^T x if trans == 'T' or 't', beta == 0, and incx == incy == 1 (using magmablas code) 3) y = alpha A^TRANS x + beta y otherwise, using CUBLAS. More... | |
void | magmablas_dgemvt1_tesla (magma_int_t m, magma_int_t n, double alpha, const double *A, magma_int_t lda, const double *x, double *y) |
PurposeThis routine computes y = alpha A^T x on the GPU. More... | |
void | magmablas_dgemvt2_tesla (magma_int_t m, magma_int_t n, double alpha, const double *A, magma_int_t lda, const double *x, double *y) |
PurposeThis routine computes y = alpha A^T x on the GPU. More... | |
void | magmablas_dgemvt_tesla (magma_int_t m, magma_int_t n, double alpha, const double *A, magma_int_t lda, const double *x, double *y) |
PurposeThis routine computes y = alpha A^T x on the GPU. More... | |
magma_int_t | magmablas_dsymv (magma_uplo_t uplo, magma_int_t n, double alpha, const double *A, magma_int_t lda, const double *x, magma_int_t incx, double beta, double *y, magma_int_t incy) |
magmablas_dsymv performs the matrix-vector operation: More... | |
magma_int_t | magmablas_dsymv_mgpu_offset (magma_uplo_t uplo, magma_int_t n, double alpha, double **A, magma_int_t lda, double **x, magma_int_t incx, double beta, double **y, magma_int_t incy, double **work, magma_int_t lwork, magma_int_t num_gpus, magma_int_t nb, magma_int_t offset, magma_queue_t stream[][10]) |
magmablas_dsymv performs the matrix-vector operation: More... | |
void magmablas_dgemv | ( | magma_trans_t | trans, |
magma_int_t | m, | ||
magma_int_t | n, | ||
double | alpha, | ||
const double * | A, | ||
magma_int_t | lda, | ||
const double * | x, | ||
magma_int_t | incx, | ||
double | beta, | ||
double * | y, | ||
magma_int_t | incy | ||
) |
[in] | trans | magma_trans_t On entry, TRANS specifies the operation to be performed as follows:
|
[in] | m | INTEGER On entry, m specifies the number of rows of the matrix A. |
[in] | n | INTEGER On entry, n specifies the number of columns of the matrix A |
[in] | alpha | DOUBLE REAL On entry, ALPHA specifies the scalar alpha. |
[in] | A | DOUBLE PRECISION array of dimension ( LDA, n ) on the GPU. |
[in] | lda | INTEGER LDA specifies the leading dimension of A. |
[in] | x | DOUBLE PRECISION array of dimension n if trans == 'n' m if trans == 't' |
[in] | incx | Specifies the increment for the elements of X. INCX must not be zero. |
[in] | beta | DOUBLE REAL On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. |
[out] | y | DOUBLE PRECISION array of dimension m if trans == 'n' n if trans == 't' |
[in] | incy | Specifies the increment for the elements of Y. INCY must not be zero. |
void magmablas_dgemv_MLU | ( | magma_int_t | m, |
magma_int_t | n, | ||
const double * | A, | ||
magma_int_t | lda, | ||
const double * | x, | ||
double * | y | ||
) |
This routine computes y = y - Ax on the GPU.
[in] | m | INTEGER. On entry, M specifies the number of rows of the matrix A. |
[in] | n | INTEGER. On entry, N specifies the number of columns of the matrix A |
[in] | A | DOUBLE PRECISION array of dimension ( LDA, n ) on the GPU. |
[in] | lda | INTEGER. LDA specifies the leading dimension of A. |
[in] | x | DOUBLE PRECISION array of dimension n. |
[out] | y | DOUBLE PRECISION array of dimension n. On exit Y = Y - A X. |
void magmablas_dgemv_tesla | ( | magma_trans_t | trans, |
magma_int_t | m, | ||
magma_int_t | n, | ||
double | alpha, | ||
const double * | A, | ||
magma_int_t | lda, | ||
const double * | x, | ||
magma_int_t | incx, | ||
double | beta, | ||
double * | y, | ||
magma_int_t | incy | ||
) |
This routine computes: 1) y = A x if trans == 'N' or 'n', alpha == 1, beta == 0, and incx == incy == 1 (using magmablas code) 2) y = alpha A^T x if trans == 'T' or 't', beta == 0, and incx == incy == 1 (using magmablas code) 3) y = alpha A^TRANS x + beta y otherwise, using CUBLAS.
[in] | trans | magma_trans_t On entry, TRANS specifies the operation to be performed as follows:
|
[in] | m | INTEGER On entry, M specifies the number of rows of the matrix A. |
[in] | n | INTEGER On entry, N specifies the number of columns of the matrix A |
[in] | alpha | DOUBLE PRECISION On entry, ALPHA specifies the scalar alpha. |
[in] | A | DOUBLE PRECISION array of dimension (LDA, N) on the GPU. |
[in] | lda | INTEGER LDA specifies the leading dimension of A. |
[in] | x | DOUBLE PRECISION array of dimension n if trans == 'n' m if trans == 't' |
[in] | incx | Specifies the increment for the elements of X. INCX must not be zero. |
[in] | beta | DOUBLE PRECISION On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. |
[out] | y | DOUBLE PRECISION array of dimension m if trans == 'n' n if trans == 't' |
[in] | incy | Specifies the increment for the elements of Y. INCY must not be zero. |
void magmablas_dgemvn_fermi | ( | magma_int_t | m, |
magma_int_t | n, | ||
double | alpha, | ||
const double * | A, | ||
magma_int_t | lda, | ||
const double * | x, | ||
magma_int_t | incx, | ||
double | beta, | ||
double * | y, | ||
magma_int_t | incy | ||
) |
This routine computes y = alpha A x + beta y, on the GPU.
[in] | m | INTEGER. On entry, N specifies the number of rows of the matrix A. |
[in] | n | INTEGER. On entry, M specifies the number of columns of the matrix A |
[in] | alpha | DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. |
[in] | A | DOUBLE PRECISION array of dimension ( LDA, m ) on the GPU. |
[in] | lda | INTEGER. LDA specifies the leading dimension of A. |
[in] | x | DOUBLE PRECISION array of dimension m. |
[in] | incx | INTEGER On entry, INCX specifies the increment for the elements of X. INCX must not be zero. |
[in] | beta | DOUBLE PRECISION. On entry, BETA specifies the scalar beta. |
[out] | y | DOUBLE PRECISION array of dimension m. On exit Y = alpha A X. |
[in] | incy | INTEGER On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. |
void magmablas_dgemvt1_tesla | ( | magma_int_t | m, |
magma_int_t | n, | ||
double | alpha, | ||
const double * | A, | ||
magma_int_t | lda, | ||
const double * | x, | ||
double * | y | ||
) |
Recommended for large M and N.
[in] | m | INTEGER. On entry, M specifies the number of rows of the matrix A. |
[in] | n | INTEGER. On entry, N specifies the number of columns of the matrix A |
[in] | alpha | DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. |
[in] | A | DOUBLE PRECISION array of dimension (LDA, N) on the GPU. |
[in] | lda | INTEGER. LDA specifies the leading dimension of A. |
[in] | x | DOUBLE PRECISION array of dimension m. |
[out] | y | DOUBLE PRECISION array of dimension n. On exit Y = alpha A^T X. |
void magmablas_dgemvt2_tesla | ( | magma_int_t | m, |
magma_int_t | n, | ||
double | alpha, | ||
const double * | A, | ||
magma_int_t | lda, | ||
const double * | x, | ||
double * | y | ||
) |
Used in least squares solver for N small (e.g. = BS, a block size of order 64, 128, etc).
[in] | m | INTEGER. On entry, M specifies the number of rows of the matrix A. |
[in] | n | INTEGER. On entry, N specifies the number of columns of the matrix A |
[in] | alpha | DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. |
[in] | A | DOUBLE PRECISION array of dimension (LDA, N) on the GPU. |
[in] | lda | INTEGER. LDA specifies the leading dimension of A. |
[in] | x | DOUBLE PRECISION array of dimension m. |
[out] | y | DOUBLE PRECISION array of dimension n. On exit Y = alpha A^T X. |
void magmablas_dgemvt_fermi | ( | magma_int_t | m, |
magma_int_t | n, | ||
double | alpha, | ||
const double * | A, | ||
magma_int_t | lda, | ||
const double * | x, | ||
magma_int_t | incx, | ||
double | beta, | ||
double * | y, | ||
magma_int_t | incy | ||
) |
This routine computes y = alpha A^T x on the GPU.
[in] | m | INTEGER. On entry, m specifies the number of rows of the matrix A. |
[in] | n | INTEGER. On entry, n specifies the number of columns of the matrix A |
[in] | alpha | DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. |
[in] | A | DOUBLE PRECISION array of dimension ( LDA, n ) on the GPU. |
[in] | lda | INTEGER. LDA specifies the leading dimension of A. |
[in] | x | DOUBLE PRECISION array of dimension m. |
[in] | incx | INTEGER On entrx, INCX specifies the increment for the elements of X. INCX must not be zero. |
[in] | beta | DOUBLE PRECISION. On entry, BETA specifies the scalar beta. |
[out] | y | DOUBLE PRECISION array of dimension n. On exit y = alpha A^T X. |
[in] | incy | INTEGER On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. |
void magmablas_dgemvt_tesla | ( | magma_int_t | m, |
magma_int_t | n, | ||
double | alpha, | ||
const double * | A, | ||
magma_int_t | lda, | ||
const double * | x, | ||
double * | y | ||
) |
[in] | m | INTEGER. On entry, M specifies the number of rows of the matrix A. |
[in] | n | INTEGER. On entry, N specifies the number of columns of the matrix A |
[in] | alpha | DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. |
[in] | A | DOUBLE PRECISION array of dimension (LDA, N) on the GPU. |
[in] | lda | INTEGER. LDA specifies the leading dimension of A. |
[in] | x | DOUBLE PRECISION array of dimension m. |
[out] | y | DOUBLE PRECISION array of dimension n. On exit Y = alpha A^T X. |
magma_int_t magmablas_dsymv | ( | magma_uplo_t | uplo, |
magma_int_t | n, | ||
double | alpha, | ||
const double * | A, | ||
magma_int_t | lda, | ||
const double * | x, | ||
magma_int_t | incx, | ||
double | beta, | ||
double * | y, | ||
magma_int_t | incy | ||
) |
magmablas_dsymv performs the matrix-vector operation:
y := alpha*A*x + beta*y,
where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix.
[in] | uplo | magma_uplo_t. On entry, UPLO specifies whether the upper or lower triangular part of the array A is to be referenced as follows:
|
[in] | n | INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. |
[in] | alpha | DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. |
[in] | A | DOUBLE PRECISION array of DIMENSION ( LDA, n ). Before entry with UPLO = MagmaUpper, the leading n by n upper triangular part of the array A must contain the upper triangular part of the symmetric matrix and the strictly lower triangular part of A is not referenced. Before entry with UPLO = MagmaLower, the leading n by n lower triangular part of the array A must contain the lower triangular part of the symmetric matrix and the strictly upper triangular part of A is not referenced. Note that the imaginary parts of the diagonal elements need not be set and are assumed to be zero. |
[in] | lda | INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, n ). It is recommended that lda is multiple of 16. Otherwise performance would be deteriorated as the memory accesses would not be fully coalescent. |
[in] | x | DOUBLE PRECISION array of dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. |
[in] | incx | INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. |
[in] | beta | DOUBLE PRECISION. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. |
[in,out] | y | DOUBLE PRECISION array of dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y. |
[in] | incy | INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. |
magma_int_t magmablas_dsymv_mgpu_offset | ( | magma_uplo_t | uplo, |
magma_int_t | n, | ||
double | alpha, | ||
double ** | A, | ||
magma_int_t | lda, | ||
double ** | x, | ||
magma_int_t | incx, | ||
double | beta, | ||
double ** | y, | ||
magma_int_t | incy, | ||
double ** | work, | ||
magma_int_t | lwork, | ||
magma_int_t | num_gpus, | ||
magma_int_t | nb, | ||
magma_int_t | offset, | ||
magma_queue_t | stream[][10] | ||
) |
magmablas_dsymv performs the matrix-vector operation:
y := alpha*A*x + beta*y,
where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix.
[in] | uplo | magma_uplo_t. On entry, UPLO specifies whether the upper or lower triangular part of the array A is to be referenced as follows:
|
[in] | n | INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. |
[in] | alpha | DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. |
[in] | A | DOUBLE PRECISION array of DIMENSION ( LDA, n ). Before entry with UPLO = MagmaUpper, the leading n by n upper triangular part of the array A must contain the upper triangular part of the symmetric matrix and the strictly lower triangular part of A is not referenced. Before entry with UPLO = MagmaLower, the leading n by n lower triangular part of the array A must contain the lower triangular part of the symmetric matrix and the strictly upper triangular part of A is not referenced. Note that the imaginary parts of the diagonal elements need not be set and are assumed to be zero. |
[in] | lda | INTEGER. On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least max( 1, n ). It is recommended that lda is multiple of 16. Otherwise performance would be deteriorated as the memory accesses would not be fully coalescent. |
[in] | x | DOUBLE PRECISION array of dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. |
[in] | incx | INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. |
[in] | beta | DOUBLE PRECISION. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then Y need not be set on input. |
[in,out] | y | DOUBLE PRECISION array of dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. On exit, Y is overwritten by the updated vector y. |
[in] | incy | INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. |