TP-openmp/BE_OpenMP_2019/lu_tasks/common.h

42 lines
1.7 KiB
C
Raw Permalink Normal View History

2023-06-22 18:19:48 +00:00
typedef struct infostruct{
int B; // The size of block-columns
int NB; // The number of block-columns in a matrix
int N; // The total size of the matrix N=B*NB
int *ipiv; // Permutation vector for numerical pivoting
} info_type;
typedef double** Matrix;
/* typedef struct matstruct{ */
/* double **BC; // Permutation vector for numerical pivoting */
/* } Matrix; */
typedef enum {PNL = 0, UPD, END, NONE} Type;
void dgetrf_(int *m, int *n, double *a, int *lda, int *ipiv, int *info);
void dtrsm_(char *side, char *uplo, char *transa, char *diag,
int *m, int *n, const double *alpha, const double *A, int *lda,
double *B, int *ldb);
void dlaswp_(int *n, double * a, int *lda, int *k1, int *k2, int *ipiv, int *incx);
void dlarnv_(int *idist, int *iseed, int *n, double *x);
void dgetrs_(char *t, int *n, int *nrhs, double *A, int *lda, int *ipiv, double *x, int *incx, int *info);
void dgemv_(char *t, int *m, int *n, const double *alpha, const double *A, int *lda, const double *x, int *incx, const double *beta, double *y, int *incy);
double dnrm2_c(int n, double *x, int incx);
double dnrmf_c(int m, int n, double *A, int lda);
void dgemm_(char *ta, char *tb, int *m, int *n, int *k, const double *alpha, const double *A, int *lda, const double *B, int *ldB, const double *beta, const double *c, int *ldc);
void panel(double *P, int k, info_type info );
void update(double *P, double *U, int k, int j, info_type info);
void backperm(Matrix A, info_type info);
void checkres(double *A, double *Acpy, info_type info);
long usecs ();
void lu_seq (Matrix A, info_type info);
void lu_par_tasks(Matrix A, info_type info);