17 #include "runtime/starpu/chameleon_starpu.h" 21 #include "runtime/starpu/runtime_codelets.h" 22 ZCODELETS_HEADER(gytlrdiag)
30 const MORSE_desc_t *
AUV,
31 const MORSE_desc_t *AD,
int ADm,
int ADn,
32 const MORSE_desc_t *Ark,
37 int bigM,
int m0,
int n0,
unsigned long long int seed,
38 int maxrank,
double tol,
40 const MORSE_desc_t *Dense
43 struct starpu_codelet *codelet = &cl_zgytlrdiag;
45 void (*callback)(
void*) = NULL;
48 MORSE_BEGIN_ACCESS_DECLARATION;
49 MORSE_ACCESS_W(
AUV, Am, An);
50 MORSE_ACCESS_W(AD, ADm, ADn);
51 MORSE_ACCESS_W(Dense, Am, An);
52 MORSE_ACCESS_W(Ark, Am, An);
53 MORSE_END_ACCESS_DECLARATION;
59 starpu_mpi_codelet(codelet),
60 STARPU_VALUE, &m,
sizeof(
int),
61 STARPU_VALUE, &n,
sizeof(
int),
62 STARPU_VALUE, &nAUV,
sizeof(
int),
63 STARPU_W, RTBLKADDR(
AUV,
double, Am, An),
64 STARPU_W, RTBLKADDR(AD,
double, ADm, ADn),
65 STARPU_W, RTBLKADDR(Ark,
double, Am, An),
66 STARPU_R, RTBLKADDR(Dense,
double, Am, An),
67 STARPU_VALUE, &lda,
sizeof(
int),
68 STARPU_VALUE, &ldu,
sizeof(
int),
69 STARPU_VALUE, &ldv,
sizeof(
int),
70 STARPU_VALUE, &bigM,
sizeof(
int),
71 STARPU_VALUE, &Am,
sizeof(
int),
72 STARPU_VALUE, &An,
sizeof(
int),
73 STARPU_VALUE, &seed,
sizeof(
unsigned long long int),
74 STARPU_VALUE, &maxrank,
sizeof(
int),
75 STARPU_VALUE, &tol,
sizeof(
double),
76 STARPU_VALUE, &compress_diag,
sizeof(
int),
77 STARPU_PRIORITY, options->priority,
78 STARPU_CALLBACK, callback,
79 #
if defined(CHAMELEON_CODELETS_HAVE_NAME)
80 STARPU_NAME,
"hcore_zgytlr_diag",
87 #if !defined(CHAMELEON_SIMULATION) 88 static void cl_zgytlr_cpu_func(
void *descr[],
void *cl_arg)
103 unsigned long long int seed;
108 AUV = (
double *)STARPU_MATRIX_GET_PTR(descr[0]);
109 AD = (
double *)STARPU_MATRIX_GET_PTR(descr[1]);
110 Ark = (
double *)STARPU_MATRIX_GET_PTR(descr[2]);
111 Dense = (
double *)STARPU_MATRIX_GET_PTR(descr[3]);
114 starpu_codelet_unpack_args(cl_arg, &m, &n, &nAUV, &lda, &ldu, &ldv, &bigM, &m0, &n0, &seed, &maxrank, &tol, &compress_diag );
118 size_t nelm_AU = (size_t)lda * (
size_t)nAU;
119 double *AV = &(
AUV[nelm_AU]);
139 CODELETS_CPU(zgytlrdiag, 4, cl_zgytlr_cpu_func)
void HCORE_zgytlr(int m, int n, double *AU, double *AV, double *AD, double *Ark, int lda, int ldu, int ldv, int bigM, int ii, int jj, unsigned long long int seed, int maxrank, double tol, int compress_diag, double *Dense)
void HICMA_TASK_zgytlr_diag(const MORSE_option_t *options, int m, int n, const MORSE_desc_t *AUV, const MORSE_desc_t *AD, int ADm, int ADn, const MORSE_desc_t *Ark, int Am, int An, int lda, int ldu, int ldv, int bigM, int m0, int n0, unsigned long long int seed, int maxrank, double tol, int compress_diag, const MORSE_desc_t *Dense)