LASs - Linear Algebra Routines on OmpSs
1.0.0
LASs
|
LASs header definition. More...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <float.h>
#include <sys/time.h>
#include <math.h>
#include <time.h>
#include <unistd.h>
#include <cblas.h>
#include <lapacke.h>
#include "../mmsparse/mm_io.h"
#include "lass_macros.h"
#include "lass_types.h"
Go to the source code of this file.
Functions | |
int | ddss_dgemm (enum DDSS_TRANS TRANS_A, enum DDSS_TRANS TRANS_B, int M, int N, int K, double ALPHA, double *A, int LDA, double *B, int LDB, double BETA, double *C, int LDC) |
int | ddss_dsymm (enum DDSS_SIDE SIDE, enum DDSS_UPLO UPLO, int M, int N, double ALPHA, double *A, int LDA, double *B, int LDB, double BETA, double *C, int LDC) |
int | ddss_dtrsm (enum DDSS_SIDE SIDE, enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS_A, enum DDSS_DIAG DIAG, int M, int N, const double ALPHA, double *A, int LDA, double *B, int LDB) |
int | ddss_dtrmm (enum DDSS_SIDE SIDE, enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS_A, enum DDSS_DIAG DIAG, int M, int N, const double ALPHA, double *A, int LDA, double *B, int LDB) |
int | ddss_dsyrk (enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS_A, int N, int K, const double ALPHA, double *A, int LDA, const double BETA, double *C, int LDC) |
int | ddss_dsyr2k (enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS, int N, int K, const double ALPHA, double *A, int LDA, double *B, int LDB, const double BETA, double *C, int LDC) |
int | ddss_dnpgetrf (int M, int N, double *A, int LDA) |
int | ddss_dnpgesv (int N, int NRHS, double *A, int LDA, double *B, int LDB) |
int | ddss_dtpgetrf (int M, int N, double *A, int LDA, int *ipiv) |
int | ddss_dtpgesv (int N, int NRHS, double *A, int LDA, int *IPIV, double *B, int LDB) |
int | ddss_dpotrf (enum DDSS_UPLO UPLO, int N, double *A, int LDA) |
int | ddss_dposv (enum DDSS_UPLO UPLO, int N, int NRHS, double *A, int LDA, double *B, int LDB) |
enum LASS_RETURN | kdgemm (enum DDSS_TRANS TRANS_A, enum DDSS_TRANS TRANS_B, int M, int N, int K, const double ALPHA, double *A, int LDA, double *B, int LDB, const double BETA, double *C, int LDC) |
enum LASS_RETURN | kdsymm (enum DDSS_SIDE SIDE, enum DDSS_UPLO UPLO, int M, int N, const double ALPHA, double *A, int LDA, double *B, int LDB, const double BETA, double *C, int LDC) |
enum LASS_RETURN | kdtrsm (enum DDSS_SIDE SIDE, enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS_A, enum DDSS_DIAG DIAG, int M, int N, const double ALPHA, double *A, int LDA, double *B, int LDB) |
enum LASS_RETURN | kdtrmm (enum DDSS_SIDE SIDE, enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS_A, enum DDSS_DIAG DIAG, int M, int N, const double ALPHA, double *A, int LDA, double *B, int LDB) |
enum LASS_RETURN | kdsyrk (enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS_A, int N, int K, const double ALPHA, double *A, int LDA, const double BETA, double *C, int LDC) |
enum LASS_RETURN | kdsyr2k (enum DDSS_UPLO UPLO, enum DDSS_TRANS TRANS, int N, int K, const double ALPHA, double *A, int LDA, double *B, int LDB, const double BETA, double *C, int LDC) |
enum LASS_RETURN | kdnpgetrf (int M, int N, double *A, int LDA) |
enum LASS_RETURN | kdnpgesv (int N, int NRHS, double *A, int LDA, double *B, int LDB) |
enum LASS_RETURN | kdtpgetrf (int M, int N, double *A, int LDA, int *ipiv) |
enum LASS_RETURN | kdtpgesv (int N, int NRHS, double *A, int LDA, int *IPIV, double *B, int LDB) |
enum LASS_RETURN | kdpotrf (enum DDSS_UPLO UPLO, int N, double *A, int LDA) |
enum LASS_RETURN | kdposv (enum DDSS_UPLO UPLO, int N, int NRHS, double *A, int LDA, double *B, int LDB) |
enum LASS_RETURN | dnpgetrf (int M, int N, double *A, int LDA) |
int | ddss_tile_size (int M, int MT) |
void | ddss_dflat2tiled (int M, int N, double *A, int LDA, int MT, int NT, double(*TILE_A)[NT][TILE_SIZE *TILE_SIZE]) |
void | ddss_dsymtiled2flat (int M, int N, double *A, int LDA, int MT, int NT, double(*TILE_A)[NT][TILE_SIZE *TILE_SIZE], enum DDSS_UPLO UPLO) |
void | ddss_dgather_tile (int M, int N, double *A, int LDA, double *TILE_A, int MID, int NID) |
void | ddss_dtiled2flat (int M, int N, double *A, int LDA, int MT, int NT, double(*TILE_A)[NT][TILE_SIZE *TILE_SIZE]) |
void | ddss_dtiled2flat_nb (int M, int N, double *A, int LDA, int MT, int NT, double(*TILE_A)[NT][TILE_SIZE *TILE_SIZE]) |
void | ddss_dsymflat2tiled (int M, int N, double *A, int LDA, int MT, int NT, double(*TILE_A)[NT][TILE_SIZE *TILE_SIZE], enum DDSS_UPLO UPLO) |
void | ddss_dsymtiled2flat_nb (int M, int N, double *A, int LDA, int MT, int NT, double(*TILE_A)[NT][TILE_SIZE *TILE_SIZE], enum DDSS_UPLO UPLO) |
void | ddss_dscatter_tile (int M, int N, double *A, int LDA, double *TILE_A, int MID, int NID) |
int | dsss_dgtsv (int N, double *DL, double *D, double *DU, double *RHS) |
int | dsss_dspmv (int M, int N, double ALPHA, const double *VAL_A, const int *ROW_PTR_A, const int *COL_IND_A, const double *X, double BETA, double *Y) |
enum LASS_RETURN | kdgtsv (int N, double *DL, double *D, double *DU, double *RHS) |
enum LASS_RETURN | kdspmv (int M, int N, double ALPHA, const double *VAL_A, const int *ROW_PTR_A, const int *COL_IND_A, const double *X, double BETA, double *Y) |
void | dgtsvseq (int N, double *DL, double *D, double *DU, double *RHS) |
void | dspmvseq (int M, int N, double ALPHA, const double *VAL_A, const int *ROW_PTR_A, const int *COL_IND_A, const double *X, double BETA, double *Y) |
LASs header definition.
LASs is a software package provided by: Barcelona Supercomputing Center - Centro Nacional de Supercomputacion
Definition in file lass.h.
void ddss_dflat2tiled | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
int | MT, | ||
int | NT, | ||
double(*) | TILE_A[NT][TILE_SIZE *TILE_SIZE] | ||
) |
ddss_dflat2tiled: Performs the change of the data layout from flat layout to tiled layout according to row-major order.
[in] | M | int. M specifies the number of rows of the flat matrix. |
[in] | N | int. N specifies the number of columns of the flat matrix. |
[in] | A | double *. A is a pointer to the flat matrix. |
[in] | LDA | int. LDA specifies the number of columns ( row-major order ) of matrix A. |
[in] | MT | int. MT specifies the number of rows of the matrix TILE_A. |
[in] | NT | int. NT specifies the number of columns of the matrix TILE_A. |
[in,out] | TILE_A | double *. TILE_A is a pointer to the tile matrix. |
Definition at line 68 of file ddss_flat2tiled.c.
References ddss_dgather_tile().
Referenced by kdgemm(), kdnpgesv(), kdnpgetrf(), kdposv(), kdsymm(), kdsyr2k(), kdsyrk(), kdtpgesv(), kdtpgetrf(), kdtrmm(), and kdtrsm().
void ddss_dgather_tile | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
double * | TILE_A, | ||
int | MID, | ||
int | NID | ||
) |
ddss_dgather_tile: Performs the copy of a tile from the flat matrix A to the tile matrix TILE_A for the MT, NT tile.
[in] | M | int. M specifies the number of rows of the flat matrix. |
[in] | N | int. N specifies the number of columns of the flat matrix. |
[in] | A | double *. A is a pointer to the flat matrix. |
[in] | LDA | int. LDA specifies the number of columns ( row-major order ) of matrix A. |
[in,out] | TILE_A | double *. TILE_A is a pointer to the tile matrix. |
[in] | MID | int. MID specifies the row id of the tile. |
[in] | NID | int. NID specifies the column id of the tile. |
Definition at line 238 of file ddss_flat2tiled.c.
References ddss_tile_size().
Referenced by ddss_dflat2tiled(), and ddss_dsymflat2tiled().
int ddss_dgemm | ( | enum DDSS_TRANS | TRANS_A, |
enum DDSS_TRANS | TRANS_B, | ||
int | M, | ||
int | N, | ||
int | K, | ||
double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB, | ||
double | BETA, | ||
double * | C, | ||
int | LDC | ||
) |
Performs the matrix-matrix operation:
C = ALPHA * op( A ) * op( B ) + BETA * C
where op( X ) is one of:
op( X ) = X or op( X ) = X**T
ALPHA and BETA are scalars, and A, B and C are matrices, with op( A ) an M by K matrix, op( B ) a K by N matrix and C an M by N matrix.
[in] | TRANS_A | enum DDSS_TRANS. TRANS_A specifies the form of op( A ) to be used in the matrix multiplication as follows:
|
[in] | TRANS_B | enum DDSS_TRANS. TRANS_B specifies the form of op( B ) to be used in the matrix multiplication as follows:
|
[in] | M | int. M specifies the number of rows of the matrix A and the number of rows of the matrix C. M must be greater than zero. |
[in] | N | int. N specifies the number of columns of the matrix B and the number of columns of the matrix C. N must be greater than zero. |
[in] | K | int. K specifies the number of columns of the matrix A and the number of rows of the matrix B. K must be greater than zero. |
[in] | ALPHA | double. |
[in] | A | double *. A is a pointer to a matrix of dimension Ma ( rows ) by Ka ( columns ), where Ma is M and Ka is K when TRANS_A = NoTrans, and Ma is K and Ka is M otherwise. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When TRANS_A = NoTrans then LDA must be at least max( 1, K ), otherwise LDA must be at least max( 1, M ). |
[in] | B | double *. B is a pointer to a matrix of dimension Kb ( rows ) by Nb ( columns ), where Kb is K and Nb is N when TRANS_B = NoTrans, and Kb is N and Nb is K otherwise. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). When TRANS_B = NoTrans then LDB must be at least max( 1, N ), otherwise LDB must be at least max( 1, K ). |
[in] | BETA | double. |
[in,out] | C | double *. C is a pointer to a matrix of dimension M by N. On exit, C is overwritten by the M by N matrix ( ALPHA*op( A )*op( B ) + BETA*C ). |
[in] | LDC | int. LDC specifies the number of columns of C ( row-major order ). LDC must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 128 of file ddss_dgemm.c.
References kdgemm().
int ddss_dnpgesv | ( | int | N, |
int | NRHS, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB | ||
) |
Solves a system of linear equations A X = B, where A is a N-by-N general matrix and X and B are N-by-NRHS matrices. The matrix A is factorized using the LU descomposition without pivoting. The matrix A is descomposed as:
A = L * U
where L is a lower triangular matrix with unit diagonal elements and U is an upper triangular matrix.
[in] | N | int. N specifies the order of the square matrix A. N >= 0. |
[in] | NRHS | int. NRHS specifies the number of right-hand-sides (number of columns of B). NRHS >= 0. |
[in,out] | A | double *. A is a pointer to a regular matrix of dimension N-by-LDA. On exit, if return value is Success, the matrix A is overwriten by the factors L and U. The unit diagonal elements of L are not stored. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
[in,out] | B | double *. B is a pointer to a matrix of dimension N by NRHS, which stores the right-hand-sides of the systems of linear equations. (row-major order). On exit, if return value is Success, the matrix B is overwriten by the solution matrix X. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, NRHS ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 84 of file ddss_dnpgesv.c.
References kdnpgesv().
int ddss_dnpgetrf | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA | ||
) |
Performs the LU factorization without pivoting of a general M-by-N matrix A:
A = L * U
where L is a lower triangular ( lower trapezoidal if M > N ) matrix with unit diagonal elements and U is an upper triangular ( upper trapezoidal if M < N ) matrix.
[in] | M | int. M specifies the number of rows of the matrix A. M >= 0. |
[in] | N | int. N specifies the number of columns of the matrix A. N >= 0. |
[in,out] | A | double *. A is a pointer to a regular matrix of dimension M-by-N. On exit, if return value is Success, the matrix A is overwriten by the factors L and U. The unit diagonal elements of L are not stored. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 70 of file ddss_dnpgetrf.c.
References kdnpgetrf().
int ddss_dposv | ( | enum DDSS_UPLO | UPLO, |
int | N, | ||
int | NRHS, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB | ||
) |
Solves a system of linear equations A X = B, where A is a m-by-m simmetric positive definite matrix and X and B are m-by-nrhs matrices. The matrix A is descomposed as:
A = L \times L^T or A = U^T \times U
where L is a lower triangular matrix and U is an upper triangular matrix.
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
[in] | N | int. N specifies the order of the square matrix A. N >= 0. |
[in] | NRHS | int. NRHS specifies the number of right-hand-sides (number of columns of B). NRHS >= 0. |
[in,out] | A | double *. A is a pointer to a positive definite matrix of dimension N by LDA. On exit, if return value is Success, the matrix A is overwriten by the factor U or L. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
[in,out] | B | double *. B is a pointer to a matrix of dimension N by NRHS, which stores the right-hand-sides of the systems of linear equations. (row-major order). On exit, if return value is Success, the matrix B is overwriten by the solution matrix X. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, NRHS ). |
Success | sucessful exit |
NoSuccess | unsucessful exit |
Definition at line 92 of file ddss_dposv.c.
References kdposv().
int ddss_dpotrf | ( | enum DDSS_UPLO | UPLO, |
int | N, | ||
double * | A, | ||
int | LDA | ||
) |
Performs the Cholesky factorization of a symmetric positive definite matrix A:
A = L \times L^T or A = U^T \times U
where L is a lower triangular matrix and U is an upper triangular matrix.
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
[in] | N | int. N specifies the order of the square matrix A. N >= 0. |
[in,out] | A | double *. A is a pointer to a positive definite matrix of dimension N by LDA. On exit, if return value is Success, the matrix A is overwriten by the factor U or L. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 74 of file ddss_dpotrf.c.
References kdpotrf().
void ddss_dscatter_tile | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
double * | TILE_A, | ||
int | MID, | ||
int | NID | ||
) |
ddss_dscatter_tile: Performs the copy of a tile from the tile matrix TILE_A to the flat matrix A for the MT, NT tile.
[in] | M | int. M specifies the number of rows of the flat matrix. |
[in] | N | int. N specifies the number of columns of the flat matrix. |
[in,out] | A | double *. A is a pointer to the flat matrix. |
[in] | LDA | int. LDA specifies the number of columns ( row-major order ) of matrix A. |
[in] | TILE_A | double *. TILE_A is a pointer to the tile matrix. |
[in] | MID | int. MID specifies the row id of the tile. |
[in] | NID | int. NID specifies the column id of the tile. |
Definition at line 414 of file ddss_tiled2flat.c.
References ddss_tile_size().
Referenced by ddss_dsymtiled2flat(), ddss_dsymtiled2flat_nb(), ddss_dtiled2flat(), and ddss_dtiled2flat_nb().
void ddss_dsymflat2tiled | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
int | MT, | ||
int | NT, | ||
double(*) | TILE_A[NT][TILE_SIZE *TILE_SIZE], | ||
enum DDSS_UPLO | UPLO | ||
) |
ddss_dsymflat2tiled: Performs the change of the data layout from flat layout to tiled layout for symmetric matrices according to row-major order.
[in] | M | int. M specifies the number of rows of the flat matrix. |
[in] | N | int. N specifies the number of columns of the flat matrix. |
[in] | A | double *. A is a pointer to the flat matrix. |
[in] | LDA | int. LDA specifies the number of columns ( row-major order ) of matrix A. |
[in] | MT | int. MT specifies the number of rows of the matrix TILE_A. |
[in] | NT | int. NT specifies the number of columns of the matrix TILE_A. |
[in,out] | TILE_A | double *. TILE_A is a pointer to the tile matrix. |
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
Definition at line 147 of file ddss_flat2tiled.c.
References ddss_dgather_tile().
Referenced by kdposv(), kdpotrf(), kdsymm(), kdsyr2k(), kdsyrk(), kdtrmm(), and kdtrsm().
int ddss_dsymm | ( | enum DDSS_SIDE | SIDE, |
enum DDSS_UPLO | UPLO, | ||
int | M, | ||
int | N, | ||
double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB, | ||
double | BETA, | ||
double * | C, | ||
int | LDC | ||
) |
Performs one of the matrix-matrix operations:
C = ALPHA * A * B + BETA * C
or
C = ALPHA * B * A + BETA * C
where op( X ) is one of:
op( X ) = X or op( X ) = X**T
ALPHA and BETA are scalars, A is a symmetric matrix, and B and C are M by N matrices.
[in] | SIDE | enum DDSS_SIDE. UPLO specifies the position of the symmetric A matrix in the operation:
|
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
[in] | M | int. M specifies the number of rows of the matrix C. M must be equal or greater than zero. |
[in] | N | int. N specifies the number of columns of the matrix C. N must be equal or greater than zero. |
[in] | ALPHA | double. |
[in] | A | double *. A is a pointer to a matrix of dimension Ma ( rows ) by Na (columns), where Ma is M and Na is M when SIDE = Left, and Ma is N and Na is N when SIDE = Right |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, Na ). |
[in] | B | double *. B is a pointer to a matrix of dimension M by N. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, N ). |
[in] | BETA | double. |
[in,out] | C | double *. C is a pointer to a matrix of dimension M by N. On exit, C is overwritten by the M by N matrix. |
[in] | LDC | int. LDC specifies the number of columns of C ( row-major order ). LDC must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 120 of file ddss_dsymm.c.
References kdsymm().
void ddss_dsymtiled2flat | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
int | MT, | ||
int | NT, | ||
double(*) | TILE_A[NT][TILE_SIZE *TILE_SIZE], | ||
enum DDSS_UPLO | UPLO | ||
) |
ddss_dsymtiled2flat: Performs the change of the data layout from tile layout to flat layout for symmetric matrices according to row-major order.
[in] | M | int. M specifies the number of rows of the flat matrix. |
[in] | N | int. N specifies the number of columns of the flat matrix. |
[in,out] | A | double *. A is a pointer to the flat matrix. |
[in] | LDA | int. LDA specifies the number of columns ( row-major order ) of matrix A. |
[in] | MT | int. MT specifies the number of rows of the matrix TILE_A. |
[in] | NT | int. NT specifies the number of columns of the matrix TILE_A. |
[in] | TILE_A | double *. TILE_A is a pointer to the tile matrix. |
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
Definition at line 223 of file ddss_tiled2flat.c.
References ddss_dscatter_tile().
Referenced by kdpotrf(), kdsyr2k(), and kdsyrk().
void ddss_dsymtiled2flat_nb | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
int | MT, | ||
int | NT, | ||
double(*) | TILE_A[NT][TILE_SIZE *TILE_SIZE], | ||
enum DDSS_UPLO | UPLO | ||
) |
ddss_dsymtiled2flat_nb: Performs the change of the data layout from tile layout to flat layout for symmetric matrices according to row-major order in a non-blocking execution mode.
[in] | M | int. M specifies the number of rows of the flat matrix. |
[in] | N | int. N specifies the number of columns of the flat matrix. |
[in,out] | A | double *. A is a pointer to the flat matrix. |
[in] | LDA | int. LDA specifies the number of columns ( row-major order ) of matrix A. |
[in] | MT | int. MT specifies the number of rows of the matrix TILE_A. |
[in] | NT | int. NT specifies the number of columns of the matrix TILE_A. |
[in] | TILE_A | double *. TILE_A is a pointer to the tile matrix. |
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
Definition at line 324 of file ddss_tiled2flat.c.
References ddss_dscatter_tile().
Referenced by kdposv().
int ddss_dsyr2k | ( | enum DDSS_UPLO | UPLO, |
enum DDSS_TRANS | TRANS, | ||
int | N, | ||
int | K, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB, | ||
const double | BETA, | ||
double * | C, | ||
int | LDC | ||
) |
Performs one of the symmetric rank 2k operations:
C = ALPHA * A * B**T + ALPHA * B * A**T + BETA * C or C = ALPHA * A**T * B + ALPHA * B**T * A + BETA * C
ALPHA and BETA are scalars, C is an N by N symmetric matrix and A and B are N by K matrices in the first case and K by N matrices in the second case.
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form in which C is stored:
|
[in] | TRANS | enum DDSS_TRANS. TRANS specifies the operation to be performed as follows:
|
[in] | N | int. N specifies the order of matrix C. N must be at least zero. |
[in] | K | int. With TRANS = NoTrans, K specifies the number of columns of the matrices A and B, and with TRANS = Trans, K specifies the number of rows of the matrices A and B. K must be at least zero. |
[in] | ALPHA | double. ALPHA specifies the scalar alpha. |
[in] | A | double *. A is a pointer to a matrix of dimension Na ( rows ) by Ka ( columns ), where Na is N and Ka is K when TRANS = NoTrans, and Na is K and Ka is N otherwise. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When TRANS = NoTrans then LDA must be at least max( 1, K ), otherwise LDA must be at least max( 1, N ). |
[in] | B | double *. B is a pointer to a matrix of dimension Nb ( rows ) by Kb ( columns ), where Nb is N and Kb is K when TRANS = NoTrans, and Nb is K and Kb is N otherwise. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). When TRANS = NoTrans then LDB must be at least max( 1, K ), otherwise LDB must be at least max( 1, N ). |
[in] | BETA | double. BETA specifies the scalar beta. |
[in,out] | C | double *. C is a pointer to a matrix of dimension N by N. When UPLO = Uppper the strictly lower triangular part of C is not referenced. On exit, the upper triangular part of C is overwritten by the upper triangular part of the updated solution matrix C. When UPLO = Lower the strictly upper triangular part of C is not referenced. On exit, the lower triangular part of C is overwritten by the lower triangular part of the updated solution matrix C. |
[in] | LDC | int. LDC specifies the number of columns of C ( row-major order ). LDC must be at least max( 1, N ). |
Definition at line 114 of file ddss_dsyr2k.c.
References kdsyr2k().
int ddss_dsyrk | ( | enum DDSS_UPLO | UPLO, |
enum DDSS_TRANS | TRANS_A, | ||
int | N, | ||
int | K, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
const double | BETA, | ||
double * | C, | ||
int | LDC | ||
) |
Performs one of the symmetric rank k operations:
C = ALPHA * A * op( A ) + BETA * C or C = ALPHA * op( A ) * A + BETA * C
where op( X ) is:
op( X ) = X**T
ALPHA and BETA are scalars, C is an N by N symmetric matrix and A is an N by K matrix in the first case and a K by N matrix in the second case.
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form in which C is stored:
|
[in] | TRANS_A | enum DDSS_TRANS. TRANS_A specifies the operation to be performed as follows:
|
[in] | N | int. N specifies the order of matrix C. N must be at least zero. |
[in] | K | int. With TRANS_A = NoTrans, K specifies the number of columns of the matrix A, and with TRANS_A = Trans, K specifies the number of rows of the matrix A. K must be at least zero. |
[in] | ALPHA | double. ALPHA specifies the scalar alpha. |
[in] | A | double *. A is a pointer to a matrix of dimension Na ( rows ) by Ka ( columns ), where Na is N and Ka is K when TRANS_A = NoTrans, and Na is K and Ka is N otherwise. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When TRANS_A = NoTrans then LDA must be at least max( 1, K ), otherwise LDA must be at least max( 1, N ). |
[in] | BETA | double. BETA specifies the scalar beta. |
[in,out] | C | double *. C is a pointer to a matrix of dimension N by N. When UPLO = Uppper the strictly lower triangular part of C is not referenced. On exit, the upper triangular part of C is overwritten by the upper triangular part of the updated solution matrix C. When UPLO = Lower the strictly upper triangular part of C is not referenced. On exit, the lower triangular part of C is overwritten by the lower triangular part of the updated solution matrix C. |
[in] | LDC | int. LDC specifies the number of columns of C ( row-major order ). LDC must be at least max( 1, N ). |
Definition at line 106 of file ddss_dsyrk.c.
References kdsyrk().
void ddss_dtiled2flat | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
int | MT, | ||
int | NT, | ||
double(*) | TILE_A[NT][TILE_SIZE *TILE_SIZE] | ||
) |
ddss_dtiled2flat: Performs the change of the data layout from tile layout to flat layout according to row-major order.
[in] | M | int. M specifies the number of rows of the flat matrix. |
[in] | N | int. N specifies the number of columns of the flat matrix. |
[in,out] | A | double *. A is a pointer to the flat matrix. |
[in] | LDA | int. LDA specifies the number of columns ( row-major order ) of matrix A. |
[in] | MT | int. MT specifies the number of rows of the matrix TILE_A. |
[in] | NT | int. NT specifies the number of columns of the matrix TILE_A. |
[in] | TILE_A | double *. TILE_A is a pointer to the tile matrix. |
Definition at line 68 of file ddss_tiled2flat.c.
References ddss_dscatter_tile().
Referenced by kdgemm(), kdnpgesv(), kdnpgetrf(), kdposv(), kdsymm(), kdtpgesv(), kdtpgetrf(), kdtrmm(), and kdtrsm().
void ddss_dtiled2flat_nb | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
int | MT, | ||
int | NT, | ||
double(*) | TILE_A[NT][TILE_SIZE *TILE_SIZE] | ||
) |
ddss_dtiled2flat_nb: Performs the change of the data layout from tile layout to flat layout according to row-major order in a non-blocking execution mode.
[in] | M | int. M specifies the number of rows of the flat matrix. |
[in] | N | int. N specifies the number of columns of the flat matrix. |
[in,out] | A | double *. A is a pointer to the flat matrix. |
[in] | LDA | int. LDA specifies the number of columns ( row-major order ) of matrix A. |
[in] | MT | int. MT specifies the number of rows of the matrix TILE_A. |
[in] | NT | int. NT specifies the number of columns of the matrix TILE_A. |
[in] | TILE_A | double *. TILE_A is a pointer to the tile matrix. |
Definition at line 142 of file ddss_tiled2flat.c.
References ddss_dscatter_tile().
Referenced by kdnpgesv().
int ddss_dtpgesv | ( | int | N, |
int | NRHS, | ||
double * | A, | ||
int | LDA, | ||
int * | IPIV, | ||
double * | B, | ||
int | LDB | ||
) |
Solves a system of linear equations A X = B, where A is a N-by-N general matrix and X and B are N-by-NRHS matrices. The matrix A is factorized using the LU descomposition with tiled-pivoting. The matrix A is descomposed as:
A = P * L * U
where P is a permutation matrix, L is a lower triangular matrix with unit diagonal elements and U is an upper triangular matrix.
[in] | N | int. N specifies the order of the square matrix A. N >= 0. |
NRHS int. NRHS specifies the number of right-hand-sides (number of columns of B). NRHS >= 0.
[in,out] | A | double *. A is a pointer to a regular matrix of dimension N-by-LDA. On exit, if return value is Success, the matrix A is overwriten by the factors L and U. The unit diagonal elements of L are not stored. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
[out] | IPIV | int *. ipiv is a pointer to an array of dimesion at least max( 1, min ( M, N ) ). ipiv( i ) = j, 1 <= i <= min( M, N ) implies that rows i and j have been interchanged. |
[in,out] | B | double *. B is a pointer to a matrix of dimension N by NRHS, which stores the right-hand-sides of the systems of linear equations. (row-major order). On exit, if return value is Success, the matrix B is overwriten by the solution matrix X. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, NRHS ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 89 of file ddss_dtpgesv.c.
References kdtpgesv().
int ddss_dtpgetrf | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
int * | IPIV | ||
) |
Performs the LU factorization with tiled pivoting ( row interchanges ) of a general M-by-N matrix A:
A = P * L * U
where P is a permutation matrix, L is a lower triangular ( lower trapezoidal if M > N ) matrix with unit diagonal elements and U is an upper triangular ( upper trapezoidal if M < N ) matrix.
[in] | M | int. M specifies the number of rows of the matrix A. M >= 0. |
[in] | N | int. N specifies the number of columns of the matrix A. N >= 0. |
[in,out] | A | double *. A is a pointer to a regular matrix of dimension M-by-N. On exit, if return value is Success, the matrix A is overwriten by the factors L and U. The unit diagonal elements of L are not stored. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
[out] | IPIV | int *. ipiv is a pointer to an array of dimesion at least max( 1, min ( M, N ) ). ipiv( i ) = j, 1 <= i <= min( M, N ) implies that rows i and j have been interchanged. |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 77 of file ddss_dtpgetrf.c.
References kdtpgetrf().
int ddss_dtrmm | ( | enum DDSS_SIDE | SIDE, |
enum DDSS_UPLO | UPLO, | ||
enum DDSS_TRANS | TRANS_A, | ||
enum DDSS_DIAG | DIAG, | ||
int | M, | ||
int | N, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB | ||
) |
Performs one of the matrix-matrix operations:
B = ALPHA * op( A ) * B, or B = ALPHA * B * op( A )
where op( A ) is one of:
op( A ) = A or op( A ) = A**T
ALPHA is a scalar, B is a M by N matrix and A is a unit, or non-unit, upper or lower triangular matrix.
[in] | SIDE | enum DDSS_SIDE. SIDE specifies the position of the triangular A matrix in the operations:
|
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form in which A is stored:
|
[in] | TRANS_A | enum DDSS_TRANS. TRANS_A specifies the form of op( A ) to be used:
|
[in] | DIAG | enum DDSS_DIAG. DIAG specifies whether or not A is unit triangular as follows:
|
[in] | M | int. M specifies the number of rows of B. M must be at least zero. |
[in] | N | int. N specifies the number of columns of B. N must be at least zero. |
[in] | ALPHA | double. ALPHA specifies the scalar alpha. |
[in] | A | double *. A is a pointer to a matrix of dimension K by K, where K is M when SIDE = Left and is N otherwise. When UPLO = Uppper the strictly lower triangular part of A is not referenced and when UPLO = Lower the strictly upper triangular part of A is not referenced. Note that when DIAG = Unit, the diagonal elements of A are not referenced either, but are assumed to be unity. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When SIDE = Left then LDA must be at least max( 1, M ), otherwise LDA must be at least max( 1, N ). |
[in,out] | B | double *. B is a pointer to a matrix of dimension M by N. On exit the matrix B is overwritten by the transformed matrix. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, N ). |
Definition at line 113 of file ddss_dtrmm.c.
References kdtrmm().
int ddss_dtrsm | ( | enum DDSS_SIDE | SIDE, |
enum DDSS_UPLO | UPLO, | ||
enum DDSS_TRANS | TRANS_A, | ||
enum DDSS_DIAG | DIAG, | ||
int | M, | ||
int | N, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB | ||
) |
Solves one of the matrix equations:
op( A ) * X = ALPHA * B, or X * op( A ) = ALPHA * B
where op( A ) is one of:
op( A ) = A or op( A ) = A**T
ALPHA is a scalar, X and B are M by N matrices, A is a unit, or non-unit, upper or lower triangular matrix. The matrix X is overwritten on B
[in] | SIDE | enum DDSS_SIDE. SIDE specifies the position of the triangular A matrix in the operations:
|
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
[in] | TRANS_A | enum DDSS_TRANS. TRANS_A specifies the form of op( A ) to be used:
|
[in] | DIAG | enum DDSS_DIAG. DIAG specifies whether or not A is unit triangular as follows:
|
[in] | M | int. M specifies the number of rows of B. M must be at least zero. |
[in] | N | int. N specifies the number of columns of B. N must be at least zero. |
[in] | ALPHA | double. ALPHA specifies the scalar alpha. |
[in] | A | double *. A is a pointer to a matrix of dimension K by K, where K is M when SIDE = Left and is N otherwise. When UPLO = Uppper the strictly lower triangular part of A is not referenced and when UPLO = Lower the strictly upper triangular part of A is not referenced. Note that when DIAG = Unit, the diagonal elements of A are not referenced either, but are assumed to be unity. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When SIDE = Left then LDA must be at least max( 1, M ), otherwise LDA must be at least max( 1, N ). |
[in,out] | B | double *. B is a pointer to a matrix of dimension M by N. On exit the matrix B is overwritten by the solution matrix X. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, N ). |
Definition at line 113 of file ddss_dtrsm.c.
References kdtrsm().
int ddss_tile_size | ( | int | M, |
int | MT | ||
) |
tile_size: Computes the size of the tile passed as parameter.
[in] | M | int. M specifies the size ( rows of columns ) of the matrix. |
[in] | MT | int. MT specifies the id of the tile. |
int | size of the tile passed as parameter. |
Definition at line 52 of file ddss_tile.c.
Referenced by ddss_dgather_tile(), ddss_dscatter_tile(), kdgemm(), kdnpgesv(), kdnpgetrf(), kdposv(), kdpotrf(), kdsymm(), kdsyr2k(), kdsyrk(), kdtpgesv(), kdtpgetrf(), kdtrmm(), and kdtrsm().
enum LASS_RETURN dnpgetrf | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA | ||
) |
Performs the LU factorization without pivoting of a general M-by-N matrix A:
A = L * U
where L is a lower triangular ( lower trapezoidal if M > N ) matrix with unit diagonal elements and U is an upper triangular ( upper trapezoidal if M < N ) matrix.
[in] | M | int. M specifies the number of rows of the matrix A. M >= 0. |
[in] | N | int. N specifies the number of columns of the matrix A. N >= 0. |
[in,out] | A | double *. A is a pointer to a regular matrix of dimension M-by-N. On exit, if return value is Success, the matrix A is overwriten by the factors L and U. The unit diagonal elements of L are not stored. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 70 of file dnpgetrf.c.
Referenced by kdnpgesv(), and kdnpgetrf().
void dspmvseq | ( | int | M, |
int | N, | ||
double | ALPHA, | ||
const double * | VAL_A, | ||
const int * | ROW_PTR_A, | ||
const int * | COL_IND_A, | ||
const double * | X, | ||
double | BETA, | ||
double * | Y | ||
) |
Performs the sparse matrix-vector operation:
Y = ALPHA * A * X + BETA * Y
where ALPHA and BETA are scalars, X and Y are vectors, and A is a sparse matrix stored in thhe next three vectors VAL_A, COL_IND_A and ROW_PTR_A according to CSR format.
[in] | M | int. M specifies the number of rows of A. |
[in] | N | int. N specifies the number of columns of A. |
[in] | ALPHA | double. |
[in] | VAL_A | double *. VAL_A is a pointer to a vector which specifies the non-zero values of the original matrix A. |
[in] | COL_IND_A | unsigned int *. COL_IND_A is a pointer to a vector which specifies the column of each value of A in the original matrix. |
[in] | ROW_PTR_A | unsigned int *. ROW_PTR_A is a pointer to a vector which specifies the number of values that A contains in each row of the original matrix. |
[in] | X | double *. X is a pointer to a vector of dimension N. |
[in] | BETA | double . |
[in,out] | Y | double *. Y is a pointer to a vector of dimension M. On exit, Y is overwritten by the sparse matrix-vector result. |
Success | sucessful exit |
NoSuccess | unsucessful exit |
Definition at line 84 of file dspmv.c.
enum LASS_RETURN kdgemm | ( | enum DDSS_TRANS | TRANS_A, |
enum DDSS_TRANS | TRANS_B, | ||
int | M, | ||
int | N, | ||
int | K, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB, | ||
const double | BETA, | ||
double * | C, | ||
int | LDC | ||
) |
Performs the matrix-matrix operation:
C = ALPHA * op( A ) * op( B ) + BETA * C
where op( X ) is one of:
op( X ) = X or op( X ) = X**T
ALPHA and BETA are scalars, and A, B and C are matrices, with op( A ) an M by K matrix, op( B ) a K by N matrix and C an M by N matrix.
[in] | TRANS_A | enum DDSS_TRANS. TRANS_A specifies the form of op( A ) to be used in the matrix multiplication as follows:
|
[in] | TRANS_B | enum DDSS_TRANS. TRANS_B specifies the form of op( B ) to be used in the matrix multiplication as follows:
|
[in] | M | int. M specifies the number of rows of the matrix A and of the matrix C. M must be greater than zero. |
[in] | N | int. N specifies the number of columns of the matrix B and the number of columns of the matrix C. N must be greater than zero. |
[in] | K | int. K specifies the number of columns of the matrix A and the number of rows of the matrix B. K must be greater than zero. |
[in] | ALPHA | double. |
[in] | A | double *. A is a pointer to a matrix of dimension Ma ( rows ) by Ka ( columns ), where Ma is M and Ka is K when TRANS_A = NoTrans, and Ma is K and Ka is M otherwise. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When TRANS_A = NoTrans then LDA must be at least max( 1, K ), otherwise LDA must be at least max( 1, M ). |
[in] | B | double *. B is a pointer to a matrix of dimension Kb ( rows ) by Nb ( columns ), where Kb is K and Nb is N when TRANS_B = NoTrans, and Kb is N and Nb is K otherwise. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). When TRANS_B = NoTrans then LDB must be at least max( 1, N ), otherwise LDB must be at least max( 1, K ). |
[in] | BETA | double. |
[in,out] | C | double *. C is a pointer to a matrix of dimension LDC by N. On exit, C is overwritten by the M by N matrix ( ALPHA*op( A )*op( B ) + BETA*C ). |
[in] | LDC | int. LDC specifies the number of columns of C ( row-major order). LDC must be at least max( 1, M ) |
Success | sucessful exit |
NoSuccess | unsucessful exit |
Definition at line 131 of file kdgemm.c.
References ddss_dflat2tiled(), ddss_dtiled2flat(), and ddss_tile_size().
Referenced by ddss_dgemm().
enum LASS_RETURN kdnpgesv | ( | int | N, |
int | NRHS, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB | ||
) |
Solves a system of linear equations A X = B, where A is a N-by-N general matrix and X and B are N-by-NRHS matrices. The matrix A is factorized using the LU descomposition without pivoting. The matrix A is descomposed as:
A = L * U
where L is a lower triangular matrix with unit diagonal elements and U is an upper triangular matrix.
[in] | N | int. N specifies the order of the square matrix A. N >= 0. |
NRHS int. NRHS specifies the number of right-hand-sides (number of columns of B). NRHS >= 0.
[in,out] | A | double *. A is a pointer to a regular matrix of dimension N-by-LDA. On exit, if return value is Success, the matrix A is overwriten by the factors L and U. The unit diagonal elements of L are not stored. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
[in,out] | B | double *. B is a pointer to a matrix of dimension N by NRHS, which stores the right-hand-sides of the systems of linear equations. (row-major order). On exit, if return value is Success, the matrix B is overwriten by the solution matrix X. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, NRHS ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 86 of file kdnpgesv.c.
References ddss_dflat2tiled(), ddss_dtiled2flat(), ddss_dtiled2flat_nb(), ddss_tile_size(), and dnpgetrf().
Referenced by ddss_dnpgesv().
enum LASS_RETURN kdnpgetrf | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA | ||
) |
Performs the LU factorization without pivoting of a general M-by-N matrix A:
A = L * U
where L is a lower triangular ( lower trapezoidal if M > N ) matrix with unit diagonal elements and U is an upper triangular ( upper trapezoidal if M < N ) matrix.
[in] | M | int. M specifies the number of rows of the matrix A. M >= 0. |
[in] | N | int. N specifies the number of columns of the matrix A. N >= 0. |
[in,out] | A | double *. A is a pointer to a regular matrix of dimension M-by-N. On exit, if return value is Success, the matrix A is overwriten by the factors L and U. The unit diagonal elements of L are not stored. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 74 of file kdnpgetrf.c.
References ddss_dflat2tiled(), ddss_dtiled2flat(), ddss_tile_size(), and dnpgetrf().
Referenced by ddss_dnpgetrf().
enum LASS_RETURN kdposv | ( | enum DDSS_UPLO | UPLO, |
int | N, | ||
int | NRHS, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB | ||
) |
Solves a system of linear equations A X = B, where A is a M-by-M simmetric positive definite matrix and X and B are M-by-NRHS matrices. The matrix A is descomposed as:
A = L \times L^T or A = U^T \times U
where L is a lower triangular matrix and U is an upper triangular matrix.
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
[in] | N | int. N specifies the order of the square matrix A. N >= 0. |
[in] | NRHS | int. NRHS specifies the number of right-hand-sides (number of columns of B). NRHS >= 0. |
[in,out] | A | double *. A is a pointer to a positive definite matrix of dimension N by LDA. On exit, if return value is Success, the matrix A is overwriten by the factor U or L. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
[in,out] | B | double *. B is a pointer to a matrix of dimension N by NRHS, which stores the right-hand-sides of the systems of linear equations. (row-major order). On exit, if return value is Success, the matrix B is overwriten by the solution matrix X. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, NRHS ). |
Success | sucessful exit |
NoSuccess | unsucessful exit |
Definition at line 95 of file kdposv.c.
References ddss_dflat2tiled(), ddss_dsymflat2tiled(), ddss_dsymtiled2flat_nb(), ddss_dtiled2flat(), and ddss_tile_size().
Referenced by ddss_dposv().
enum LASS_RETURN kdpotrf | ( | enum DDSS_UPLO | UPLO, |
int | N, | ||
double * | A, | ||
int | LDA | ||
) |
Performs the Cholesky factorization of a symmetric positive definite matrix A:
A = L \times L^T or A = U^T \times U
where L is a lower triangular matrix and U is an upper triangular matrix.
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
[in] | N | int. N specifies the order of the square matrix A. N >= 0. |
[in,out] | A | double *. A is a pointer to a positive definite matrix of dimension N by LDA. On exit, if return value is Success, the matrix A is overwriten by the factor U or L. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
Success | sucessful exit |
NoSuccess | unsucessful exit |
Definition at line 78 of file kdpotrf.c.
References ddss_dsymflat2tiled(), ddss_dsymtiled2flat(), and ddss_tile_size().
Referenced by ddss_dpotrf().
enum LASS_RETURN kdsymm | ( | enum DDSS_SIDE | SIDE, |
enum DDSS_UPLO | UPLO, | ||
int | M, | ||
int | N, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB, | ||
const double | BETA, | ||
double * | C, | ||
int | LDC | ||
) |
Performs one of the matrix-matrix operations:
C = ALPHA * A * B + BETA * C
or
C = ALPHA * B * A + BETA * C
where op( X ) is one of:
op( X ) = X or op( X ) = X**T
ALPHA and BETA are scalars, A is a symmetric matrix, and B and C are M by N matrices.
[in] | SIDE | enum DDSS_SIDE. UPLO specifies the position of the symmetric A matrix in the operation:
|
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
[in] | M | int. M specifies the number of rows of the matrix C. M must be equal or greater than zero. |
[in] | N | int. N specifies the number of columns of the matrix C. N must be equal or greater than zero. |
[in] | ALPHA | double. |
[in] | A | double *. A is a pointer to a matrix of dimension Ma ( rows ) by Na (columns), where Ma is M and Na is M when SIDE = Left, and Ma is N and Na is N when SIDE = Right |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, Na ). |
[in] | B | double *. B is a pointer to a matrix of dimension M by N. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, N ). |
[in] | BETA | double. |
[in,out] | C | double *. C is a pointer to a matrix of dimension M by N. On exit, C is overwritten by the M by N matrix. |
[in] | LDC | int. LDC specifies the number of columns of C ( row-major order ). LDC must be at least max( 1, N ). |
Success | sucessful exit |
NoSuccess | unsucessful exit |
Definition at line 125 of file kdsymm.c.
References ddss_dflat2tiled(), ddss_dsymflat2tiled(), ddss_dtiled2flat(), and ddss_tile_size().
Referenced by ddss_dsymm().
enum LASS_RETURN kdsyr2k | ( | enum DDSS_UPLO | UPLO, |
enum DDSS_TRANS | TRANS, | ||
int | N, | ||
int | K, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB, | ||
const double | BETA, | ||
double * | C, | ||
int | LDC | ||
) |
Performs one of the symmetric rank 2k operations:
C = ALPHA * A * B**T + ALPHA * B * A**T + BETA * C or C = ALPHA * A**T * B + ALPHA * B**T * A + BETA * C
ALPHA and BETA are scalars, C is an N by N symmetric matrix and A and B are N by K matrices in the first case and K by N matrices in the second case.
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form in which C is stored:
|
[in] | TRANS | enum DDSS_TRANS. TRANS specifies the operation to be performed as follows:
|
[in] | N | int. N specifies the order of matrix C. N must be at least zero. |
[in] | K | int. With TRANS = NoTrans, K specifies the number of columns of the matrices A and B, and with TRANS = Trans, K specifies the number of rows of the matrices A and B. K must be at least zero. |
[in] | ALPHA | double. ALPHA specifies the scalar alpha. |
[in] | A | double *. A is a pointer to a matrix of dimension Na ( rows ) by Ka ( columns ), where Na is N and Ka is K when TRANS = NoTrans, and Na is K and Ka is N otherwise. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When TRANS = NoTrans then LDA must be at least max( 1, K ), otherwise LDA must be at least max( 1, N ). |
[in] | B | double *. B is a pointer to a matrix of dimension Nb ( rows ) by Kb ( columns ), where Nb is N and Kb is K when TRANS = NoTrans, and Nb is K and Kb is N otherwise. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). When TRANS = NoTrans then LDB must be at least max( 1, K ), otherwise LDB must be at least max( 1, N ). |
[in] | BETA | double. BETA specifies the scalar beta. |
[in,out] | C | double *. C is a pointer to a matrix of dimension N by N. When UPLO = Uppper the strictly lower triangular part of C is not referenced. On exit, the upper triangular part of C is overwritten by the upper triangular part of the updated solution matrix C. When UPLO = Lower the strictly upper triangular part of C is not referenced. On exit, the lower triangular part of C is overwritten by the lower triangular part of the updated solution matrix C. |
[in] | LDC | int. LDC specifies the number of columns of C ( row-major order ). LDC must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 124 of file kdsyr2k.c.
References ddss_dflat2tiled(), ddss_dsymflat2tiled(), ddss_dsymtiled2flat(), and ddss_tile_size().
Referenced by ddss_dsyr2k().
enum LASS_RETURN kdsyrk | ( | enum DDSS_UPLO | UPLO, |
enum DDSS_TRANS | TRANS_A, | ||
int | N, | ||
int | K, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
const double | BETA, | ||
double * | C, | ||
int | LDC | ||
) |
Performs one of the symmetric rank k operations:
C = ALPHA * A * op( A ) + BETA * C or C = ALPHA * op( A ) * A + BETA * C
where op( X ) is:
op( X ) = X**T
ALPHA and BETA are scalars, C is an N by N symmetric matrix and A is an N by K matrix in the first case and a K by N matrix in the second case.
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form in which C is stored:
|
[in] | TRANS_A | enum DDSS_TRANS. TRANS_A specifies the operation to be performed as follows:
|
[in] | N | int. N specifies the order of matrix C. N must be at least zero. |
[in] | K | int. With TRANS_A = NoTrans, K specifies the number of columns of the matrix A, and with TRANS_A = Trans, K specifies the number of rows of the matrix A. K must be at least zero. |
[in] | ALPHA | double. ALPHA specifies the scalar alpha. |
[in] | A | double *. A is a pointer to a matrix of dimension Na ( rows ) by Ka ( columns ), where Na is N and Ka is K when TRANS_A = NoTrans, and Na is K and Ka is N otherwise. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When TRANS_A = NoTrans then LDA must be at least max( 1, K ), otherwise LDA must be at least max( 1, N ). |
[in] | BETA | double. BETA specifies the scalar beta. |
[in,out] | C | double *. C is a pointer to a matrix of dimension N by N. When UPLO = Uppper the strictly lower triangular part of C is not referenced. On exit, the upper triangular part of C is overwritten by the upper triangular part of the updated solution matrix C. When UPLO = Lower the strictly upper triangular part of C is not referenced. On exit, the lower triangular part of C is overwritten by the lower triangular part of the updated solution matrix C. |
[in] | LDC | int. LDC specifies the number of columns of C ( row-major order ). LDC must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 117 of file kdsyrk.c.
References ddss_dflat2tiled(), ddss_dsymflat2tiled(), ddss_dsymtiled2flat(), and ddss_tile_size().
Referenced by ddss_dsyrk().
enum LASS_RETURN kdtpgesv | ( | int | N, |
int | NRHS, | ||
double * | A, | ||
int | LDA, | ||
int * | IPIV, | ||
double * | B, | ||
int | LDB | ||
) |
Solves a system of linear equations A X = B, where A is a N-by-N general matrix and X and B are N-by-NRHS matrices. The matrix A is factorized using the LU descomposition with tiled-pivoting. The matrix A is descomposed as:
A = P * L * U
where P is a permutation matrix, L is a lower triangular matrix with unit diagonal elements and U is an upper triangular matrix.
[in] | N | int. N specifies the order of the square matrix A. N >= 0. |
NRHS int. NRHS specifies the number of right-hand-sides (number of columns of B). NRHS >= 0.
[in,out] | A | double *. A is a pointer to a regular matrix of dimension N-by-LDA. On exit, if return value is Success, the matrix A is overwriten by the factors L and U. The unit diagonal elements of L are not stored. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
[out] | IPIV | int *. ipiv is a pointer to an array of dimesion at least max( 1, min ( M, N ) ). ipiv( i ) = j, 1 <= i <= min( M, N ) implies that rows i and j have been interchanged. |
[in,out] | B | double *. B is a pointer to a matrix of dimension N by NRHS, which stores the right-hand-sides of the systems of linear equations. (row-major order). On exit, if return value is Success, the matrix B is overwriten by the solution matrix X. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, NRHS ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 91 of file kdtpgesv.c.
References ddss_dflat2tiled(), ddss_dtiled2flat(), and ddss_tile_size().
Referenced by ddss_dtpgesv().
enum LASS_RETURN kdtpgetrf | ( | int | M, |
int | N, | ||
double * | A, | ||
int | LDA, | ||
int * | IPIV | ||
) |
Performs the LU factorization with tiled pivoting ( row interchanges ) of a general M-by-N matrix A:
A = P * L * U
where P is a permutation matrix, L is a lower triangular ( lower trapezoidal if M > N ) matrix with unit diagonal elements and U is an upper triangular ( upper trapezoidal if M < N ) matrix.
[in] | M | int. M specifies the number of rows of the matrix A. M >= 0. |
[in] | N | int. N specifies the number of columns of the matrix A. N >= 0. |
[in,out] | A | double *. A is a pointer to a regular matrix of dimension M-by-N. On exit, if return value is Success, the matrix A is overwriten by the factors L and U. The unit diagonal elements of L are not stored. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). LDA must be at least max( 1, N ). |
[out] | IPIV | int *. ipiv is a pointer to an array of dimesion at least max( 1, min ( M, N ) ). ipiv( i ) = j, 1 <= i <= min( M, N ) implies that rows i and j have been interchanged. |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 80 of file kdtpgetrf.c.
References ddss_dflat2tiled(), ddss_dtiled2flat(), and ddss_tile_size().
Referenced by ddss_dtpgetrf().
enum LASS_RETURN kdtrmm | ( | enum DDSS_SIDE | SIDE, |
enum DDSS_UPLO | UPLO, | ||
enum DDSS_TRANS | TRANS_A, | ||
enum DDSS_DIAG | DIAG, | ||
int | M, | ||
int | N, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB | ||
) |
Performs one of the matrix-matrix operations:
B = ALPHA * op( A ) * B, or B = ALPHA * B * op( A )
where op( A ) is one of:
op( A ) = A or op( A ) = A**T
ALPHA is a scalar, B is a M by N matrix and A is a unit, or non-unit, upper or lower triangular matrix.
[in] | SIDE | enum DDSS_SIDE. SIDE specifies the position of the triangular A matrix in the operations:
|
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form in which A is stored:
|
[in] | TRANS_A | enum DDSS_TRANS. TRANS_A specifies the form of op( A ) to be used:
|
[in] | DIAG | enum DDSS_DIAG. DIAG specifies whether or not A is unit triangular as follows:
|
[in] | M | int. M specifies the number of rows of B. M must be at least zero. |
[in] | N | int. N specifies the number of columns of B. N must be at least zero. |
[in] | ALPHA | double. ALPHA specifies the scalar alpha. |
[in] | A | double *. A is a pointer to a matrix of dimension K by K, where K is M when SIDE = Left and is N otherwise. When UPLO = Uppper the strictly lower triangular part of A is not referenced and when UPLO = Lower the strictly upper triangular part of A is not referenced. Note that when DIAG = Unit, the diagonal elements of A are not referenced either, but are assumed to be unity. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When SIDE = Left then LDA must be at least max( 1, M ), otherwise LDA must be at least max( 1, N ). |
[in,out] | B | double *. B is a pointer to a matrix of dimension M by N. On exit the matrix B is overwritten by the transformed matrix. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 123 of file kdtrmm.c.
References ddss_dflat2tiled(), ddss_dsymflat2tiled(), ddss_dtiled2flat(), and ddss_tile_size().
Referenced by ddss_dtrmm().
enum LASS_RETURN kdtrsm | ( | enum DDSS_SIDE | SIDE, |
enum DDSS_UPLO | UPLO, | ||
enum DDSS_TRANS | TRANS_A, | ||
enum DDSS_DIAG | DIAG, | ||
int | M, | ||
int | N, | ||
const double | ALPHA, | ||
double * | A, | ||
int | LDA, | ||
double * | B, | ||
int | LDB | ||
) |
Solves one of the matrix equations:
op( A ) * X = ALPHA * B, or X * op( A ) = ALPHA * B
where op( A ) is one of:
op( A ) = A or op( A ) = A**T
ALPHA is a scalar, X and B are M by N matrices, A is a unit, or non-unit, upper or lower triangular matrix. The matrix X is overwritten on B
[in] | SIDE | enum DDSS_SIDE. SIDE specifies the position of the triangular A matrix in the operations:
|
[in] | UPLO | enum DDSS_UPLO. UPLO specifies the form of A is stored:
|
[in] | TRANS_A | enum DDSS_TRANS. TRANS_A specifies the form of op( A ) to be used:
|
[in] | DIAG | enum DDSS_DIAG. DIAG specifies whether or not A is unit triangular as follows:
|
[in] | M | int. M specifies the number of rows of B. M must be at least zero. |
[in] | N | int. N specifies the number of columns of B. N must be at least zero. |
[in] | ALPHA | double. ALPHA specifies the scalar alpha. |
[in] | A | double *. A is a pointer to a matrix of dimension K by K, where K is M when SIDE = Left and is N otherwise. When UPLO = Uppper the strictly lower triangular part of A is not referenced and when UPLO = Lower the strictly upper triangular part of A is not referenced. Note that when DIAG = Unit, the diagonal elements of A are not referenced either, but are assumed to be unity. |
[in] | LDA | int. LDA specifies the number of columns of A ( row-major order ). When SIDE = Left then LDA must be at least max( 1, M ), otherwise LDA must be at least max( 1, N ). |
[in,out] | B | double *. B is a pointer to a matrix of dimension M by N. On exit the matrix B is overwritten by the solution matrix X. |
[in] | LDB | int. LDB specifies the number of columns of B ( row-major order ). LDB must be at least max( 1, N ). |
Success | successful exit |
NoSuccess | unsuccessful exit |
Definition at line 123 of file kdtrsm.c.
References ddss_dflat2tiled(), ddss_dsymflat2tiled(), ddss_dtiled2flat(), and ddss_tile_size().
Referenced by ddss_dtrsm().