20 #include "../include/starpu_exageostat.h" 21 static void CORE_dmdet_starpu(
void *buffers[],
void *cl_arg){
28 double *determinant=&det;
31 A = (
double *)STARPU_MATRIX_GET_PTR(buffers[0]);
32 determinant = (
double *)STARPU_MATRIX_GET_PTR(buffers[1]);
33 starpu_codelet_unpack_args(cl_arg, &m, &n, &m0, &n0);
37 *determinant += local_det;
40 static struct starpu_codelet cl_dmdet =
43 .cpu_funcs = {CORE_dmdet_starpu},
45 .modes = {STARPU_R,STARPU_RW},
83 MORSE_context_t *morse;
84 MORSE_option_t options;
85 morse = morse_context_self();
86 if (sequence->status != MORSE_SUCCESS)
89 RUNTIME_options_init(&options, morse, sequence, request);
93 MORSE_desc_t A = *descA;
94 struct starpu_codelet *cl=&cl_dmdet;
97 for(m=0; m < A.mt; m++)
99 tempmm = m == A.mt-1 ? A.m-m*A.mb : A.mb;
101 STARPU_VALUE, &tempmm,
sizeof(
int),
102 STARPU_VALUE, &tempmm,
sizeof(
int),
103 STARPU_R,
RTBLKADDR(descA,
sizeof(
double)*tempmm, m, 0),
104 STARPU_VALUE, &m0,
sizeof(
int),
105 STARPU_VALUE, &n0,
sizeof(
int),
106 STARPU_RW,
RTBLKADDR(descdet,
sizeof(
double), 0, 0),
112 RUNTIME_options_ws_free(&options);
113 RUNTIME_options_finalize(&options, morse);
116 return MORSE_SUCCESS;
#define RTBLKADDR(desc, type, m, n)
int HICMA_MLE_dmdet_Tile_Async(MORSE_desc_t *descA, MORSE_sequence_t *sequence, MORSE_request_t *request, MORSE_desc_t *descdet)
#define starpu_mpi_codelet(_codelet_)
double core_dmdet(double *A, int m, int n, int m0, int n0)