19 #if (PLASMA_VERSION_MAJOR >= 2) && (PLASMA_VERSION_MINOR >= 4)
20 #define CORE_zgetrf CORE_zgetrf_incpiv
31 PLASMA_Complex64_t *
A;
33 PLASMA_Complex64_t *
L;
36 PLASMA_bool check_info;
40 A = (PLASMA_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[0]);
41 L = (PLASMA_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[1]);
43 starpu_unpack_cl_args(cl_arg, &m, &n, &ib, &lda, &ldl, &IPIV, NULL, NULL, &check_info, &iinfo);
44 CORE_zgetrf(m, n, ib, A, lda, IPIV, &info);
46 #if defined(MORSE_USE_CUDA) && !defined(WITHOUTTRTRI)
56 for (i=0; i<n; i+=ib) {
58 CORE_zlacpy(PlasmaUpperLower, sb, sb, A+(i*lda+i), lda, L+(i*ldl), ldl );
60 CORE_ztrtri( PlasmaLower, PlasmaUnit, sb, L+(i*ldl), ldl, &info );
62 fprintf(stderr,
"ERROR, trtri returned with info = %d\n", info);
75 #ifdef MORSE_USE_MULTICORE
76 static void cl_zgetrl_mc_func(
void *descr[],
void *cl_arg)
85 static void cl_zgetrl_cuda_func(
void *descr[],
void *cl_arg)
90 cuDoubleComplex *hA, *
dA;
91 cuDoubleComplex *hL, *dL;
92 cuDoubleComplex *
dwork;
97 PLASMA_bool check_info;
101 starpu_unpack_cl_args(cl_arg, &m, &n, &ib, &lda, &ldl, &IPIV, &h_work, &d_work, &check_info, &iinfo);
103 dA = (cuDoubleComplex *)STARPU_MATRIX_GET_PTR(descr[0]);
104 dL = (cuDoubleComplex *)STARPU_MATRIX_GET_PTR(descr[1]);
115 memset(hL, 0, ldl*n*
sizeof(cuDoubleComplex));
118 cublasGetMatrix( m,
min(ib,m),
sizeof(cuDoubleComplex), dA, lda, hA, lda );
127 cudaThreadSynchronize();
140 int m,
int n,
int ib,
144 PLASMA_bool check,
int iinfo)
146 starpu_codelet *zgetrl_codelet;
147 void (*callback)(
void*) = options->profiling ? cl_zgetrl_callback : NULL;
148 int lda =
BLKLDD( A, Am );
149 int ldl =
BLKLDD( L, Lm );
153 #ifdef MORSE_USE_MULTICORE
154 zgetrl_codelet = options->parallel ? &cl_zgetrl_mc : &cl_zgetrl;
156 zgetrl_codelet = &cl_zgetrl;
160 VALUE, &m,
sizeof(
int),
161 VALUE, &n,
sizeof(
int),
162 VALUE, &ib,
sizeof(
int),
164 VALUE, &lda,
sizeof(
int),
166 VALUE, &ldl,
sizeof(
int),
167 VALUE, &IPIV,
sizeof(
int*),
170 VALUE, &check,
sizeof(PLASMA_bool),
171 VALUE, &iinfo,
sizeof(
int),