12 #ifndef ICL_CORE_BLAS_D_H
13 #define ICL_CORE_BLAS_D_H
15 #include "plasma_async.h"
16 #include "plasma_barrier.h"
17 #include "plasma_descriptor.h"
18 #include "plasma_types.h"
19 #include "plasma_workspace.h"
20 #include "plasma_descriptor.h"
30 double fabs(
double alpha);
33 int core_dgeadd(plasma_enum_t transa,
35 double alpha,
const double *A,
int lda,
36 double beta,
double *B,
int ldb);
38 int core_dgelqt(
int m,
int n,
int ib,
44 void core_dgemm(plasma_enum_t transa, plasma_enum_t transb,
46 double alpha,
const double *A,
int lda,
47 const double *B,
int ldb,
48 double beta,
double *C,
int ldc);
50 int core_dgeqrt(
int m,
int n,
int ib,
56 void core_dgessq(
int m,
int n,
57 const double *A,
int lda,
58 double *scale,
double *sumsq);
60 void core_dgetrf(
plasma_desc_t A,
int *ipiv,
int ib,
int rank,
int size,
61 volatile int *max_idx,
volatile double *max_val,
62 volatile int *info, plasma_barrier_t *barrier);
64 int core_dsygst(
int itype, plasma_enum_t uplo,
69 void core_dsymm(plasma_enum_t side, plasma_enum_t uplo,
71 double alpha,
const double *A,
int lda,
72 const double *B,
int ldb,
73 double beta,
double *C,
int ldc);
75 void core_dsyr2k(plasma_enum_t uplo, plasma_enum_t trans,
77 double alpha,
const double *A,
int lda,
78 const double *B,
int ldb,
79 double beta,
double *C,
int ldc);
81 void core_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
83 double alpha,
const double *A,
int lda,
84 double beta,
double *C,
int ldc);
86 void core_dsyssq(plasma_enum_t uplo,
88 const double *A,
int lda,
89 double *scale,
double *sumsq);
91 void core_dsyssq(plasma_enum_t uplo,
93 const double *A,
int lda,
94 double *scale,
double *sumsq);
96 void core_dlacpy(plasma_enum_t uplo, plasma_enum_t transa,
98 const double *A,
int lda,
101 void core_dlacpy_lapack2tile_band(plasma_enum_t uplo,
103 int m,
int n,
int nb,
int kl,
int ku,
104 const double *A,
int lda,
107 void core_dlacpy_tile2lapack_band(plasma_enum_t uplo,
109 int m,
int n,
int nb,
int kl,
int ku,
110 const double *B,
int ldb,
113 void core_dlange(plasma_enum_t norm,
115 const double *A,
int lda,
116 double *work,
double *result);
118 void core_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
120 const double *A,
int lda,
121 double *work,
double *value);
123 void core_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
125 const double *A,
int lda,
126 double *work,
double *value);
128 void core_dlantr(plasma_enum_t norm, plasma_enum_t uplo, plasma_enum_t diag,
130 const double *A,
int lda,
131 double *work,
double *value);
133 void core_dlascl(plasma_enum_t uplo,
134 double cfrom,
double cto,
138 void core_dlaset(plasma_enum_t uplo,
140 double alpha,
double beta,
143 void core_dgeswp(plasma_enum_t colrow,
146 void core_dsyswp(
int uplo,
plasma_desc_t A,
int k1,
int k2,
const int *ipiv,
149 int core_dlauum(plasma_enum_t uplo,
153 int core_dpamm(
int op, plasma_enum_t side, plasma_enum_t storev,
154 int m,
int n,
int k,
int l,
155 const double *A1,
int lda1,
156 double *A2,
int lda2,
157 const double *V,
int ldv,
160 int core_dparfb(plasma_enum_t side, plasma_enum_t trans, plasma_enum_t direct,
161 plasma_enum_t storev,
162 int m1,
int n1,
int m2,
int n2,
int k,
int l,
163 double *A1,
int lda1,
164 double *A2,
int lda2,
165 const double *V,
int ldv,
166 const double *T,
int ldt,
167 double *work,
int ldwork);
169 int core_dpemv(plasma_enum_t trans,
int storev,
172 const double *A,
int lda,
173 const double *X,
int incx,
178 int core_dpotrf(plasma_enum_t uplo,
182 void core_dsymm(plasma_enum_t side, plasma_enum_t uplo,
184 double alpha,
const double *A,
int lda,
185 const double *B,
int ldb,
186 double beta,
double *C,
int ldc);
189 plasma_enum_t uplo, plasma_enum_t trans,
191 double alpha,
const double *A,
int lda,
192 const double *B,
int ldb,
193 double beta,
double *C,
int ldc);
195 void core_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
197 double alpha,
const double *A,
int lda,
198 double beta,
double *C,
int ldc);
200 int core_dtradd(plasma_enum_t uplo, plasma_enum_t transa,
202 double alpha,
const double *A,
int lda,
203 double beta,
double *B,
int ldb);
205 void core_dtrmm(plasma_enum_t side, plasma_enum_t uplo,
206 plasma_enum_t transa, plasma_enum_t diag,
208 double alpha,
const double *A,
int lda,
211 void core_dtrsm(plasma_enum_t side, plasma_enum_t uplo,
212 plasma_enum_t transa, plasma_enum_t diag,
214 double alpha,
const double *A,
int lda,
217 void core_dtrssq(plasma_enum_t uplo, plasma_enum_t diag,
219 const double *A,
int lda,
220 double *scale,
double *sumsq);
222 int core_dtrtri(plasma_enum_t uplo, plasma_enum_t diag,
226 int core_dtslqt(
int m,
int n,
int ib,
227 double *A1,
int lda1,
228 double *A2,
int lda2,
233 int core_dtsmlq(plasma_enum_t side, plasma_enum_t trans,
234 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
235 double *A1,
int lda1,
236 double *A2,
int lda2,
237 const double *V,
int ldv,
238 const double *T,
int ldt,
239 double *work,
int ldwork);
241 int core_dtsmqr(plasma_enum_t side, plasma_enum_t trans,
242 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
243 double *A1,
int lda1,
244 double *A2,
int lda2,
245 const double *V,
int ldv,
246 const double *T,
int ldt,
247 double *work,
int ldwork);
249 int core_dtsqrt(
int m,
int n,
int ib,
250 double *A1,
int lda1,
251 double *A2,
int lda2,
256 int core_dttlqt(
int m,
int n,
int ib,
257 double *A1,
int lda1,
258 double *A2,
int lda2,
263 int core_dttmlq(plasma_enum_t side, plasma_enum_t trans,
264 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
265 double *A1,
int lda1,
266 double *A2,
int lda2,
267 const double *V,
int ldv,
268 const double *T,
int ldt,
269 double *work,
int ldwork);
271 int core_dttmqr(plasma_enum_t side, plasma_enum_t trans,
272 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
273 double *A1,
int lda1,
274 double *A2,
int lda2,
275 const double *V,
int ldv,
276 const double *T,
int ldt,
277 double *work,
int ldwork);
279 int core_dttqrt(
int m,
int n,
int ib,
280 double *A1,
int lda1,
281 double *A2,
int lda2,
286 int core_dormlq(plasma_enum_t side, plasma_enum_t trans,
287 int m,
int n,
int k,
int ib,
288 const double *A,
int lda,
289 const double *T,
int ldt,
291 double *work,
int ldwork);
293 int core_dormqr(plasma_enum_t side, plasma_enum_t trans,
294 int m,
int n,
int k,
int ib,
295 const double *A,
int lda,
296 const double *T,
int ldt,
298 double *work,
int ldwork);
301 void core_omp_damax(
int colrow,
int m,
int n,
302 const double *A,
int lda,
304 plasma_sequence_t *sequence, plasma_request_t *request);
306 void core_omp_dgeadd(
307 plasma_enum_t transa,
int m,
int n,
308 double alpha,
const double *A,
int lda,
309 double beta,
double *B,
int ldb,
310 plasma_sequence_t *sequence, plasma_request_t *request);
312 void core_omp_dgelqt(
int m,
int n,
int ib,
315 plasma_workspace_t work,
316 plasma_sequence_t *sequence, plasma_request_t *request);
319 plasma_enum_t transa, plasma_enum_t transb,
321 double alpha,
const double *A,
int lda,
322 const double *B,
int ldb,
323 double beta,
double *C,
int ldc,
324 plasma_sequence_t *sequence, plasma_request_t *request);
326 void core_omp_dgeqrt(
int m,
int n,
int ib,
329 plasma_workspace_t work,
330 plasma_sequence_t *sequence, plasma_request_t *request);
332 void core_omp_dgessq(
int m,
int n,
333 const double *A,
int lda,
334 double *scale,
double *sumsq,
335 plasma_sequence_t *sequence, plasma_request_t *request);
337 void core_omp_dgessq_aux(
int n,
338 const double *scale,
const double *sumsq,
340 plasma_sequence_t *sequence,
341 plasma_request_t *request);
343 void core_omp_dsygst(
int itype, plasma_enum_t uplo,
347 plasma_sequence_t *sequence, plasma_request_t *request);
350 plasma_enum_t side, plasma_enum_t uplo,
352 double alpha,
const double *A,
int lda,
353 const double *B,
int ldb,
354 double beta,
double *C,
int ldc,
355 plasma_sequence_t *sequence, plasma_request_t *request);
357 void core_omp_dsyr2k(
358 plasma_enum_t uplo, plasma_enum_t trans,
360 double alpha,
const double *A,
int lda,
361 const double *B,
int ldb,
362 double beta,
double *C,
int ldc,
363 plasma_sequence_t *sequence, plasma_request_t *request);
365 void core_omp_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
367 double alpha,
const double *A,
int lda,
368 double beta,
double *C,
int ldc,
369 plasma_sequence_t *sequence, plasma_request_t *request);
371 void core_omp_dsyssq(plasma_enum_t uplo,
373 const double *A,
int lda,
374 double *scale,
double *sumsq,
375 plasma_sequence_t *sequence, plasma_request_t *request);
377 void core_omp_dsyssq(plasma_enum_t uplo,
379 const double *A,
int lda,
380 double *scale,
double *sumsq,
381 plasma_sequence_t *sequence, plasma_request_t *request);
383 void core_omp_dsyssq_aux(
int m,
int n,
384 const double *scale,
const double *sumsq,
386 plasma_sequence_t *sequence,
387 plasma_request_t *request);
389 void core_omp_dlacpy(plasma_enum_t uplo, plasma_enum_t transa,
391 const double *A,
int lda,
393 plasma_sequence_t *sequence, plasma_request_t *request);
395 void core_omp_dlacpy_lapack2tile_band(plasma_enum_t uplo,
397 int m,
int n,
int nb,
int kl,
int ku,
398 const double *A,
int lda,
401 void core_omp_dlacpy_tile2lapack_band(plasma_enum_t uplo,
403 int m,
int n,
int nb,
int kl,
int ku,
404 const double *B,
int ldb,
407 void core_omp_dlange(plasma_enum_t norm,
409 const double *A,
int lda,
410 double *work,
double *result,
411 plasma_sequence_t *sequence, plasma_request_t *request);
413 void core_omp_dlange_aux(plasma_enum_t norm,
415 const double *A,
int lda,
417 plasma_sequence_t *sequence,
418 plasma_request_t *request);
420 void core_omp_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
422 const double *A,
int lda,
423 double *work,
double *value,
424 plasma_sequence_t *sequence, plasma_request_t *request);
426 void core_omp_dlansy_aux(plasma_enum_t norm, plasma_enum_t uplo,
428 const double *A,
int lda,
430 plasma_sequence_t *sequence,
431 plasma_request_t *request);
433 void core_omp_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
435 const double *A,
int lda,
436 double *work,
double *value,
437 plasma_sequence_t *sequence, plasma_request_t *request);
439 void core_omp_dlansy_aux(plasma_enum_t norm, plasma_enum_t uplo,
441 const double *A,
int lda,
443 plasma_sequence_t *sequence,
444 plasma_request_t *request);
446 void core_omp_dlantr(plasma_enum_t norm, plasma_enum_t uplo, plasma_enum_t diag,
448 const double *A,
int lda,
449 double *work,
double *value,
450 plasma_sequence_t *sequence, plasma_request_t *request);
452 void core_omp_dlantr_aux(plasma_enum_t norm, plasma_enum_t uplo,
455 const double *A,
int lda,
457 plasma_sequence_t *sequence,
458 plasma_request_t *request);
460 void core_omp_dlascl(plasma_enum_t uplo,
461 double cfrom,
double cto,
464 plasma_sequence_t *sequence, plasma_request_t *request);
466 void core_omp_dlaset(plasma_enum_t uplo,
470 double alpha,
double beta,
473 void core_omp_dlauum(plasma_enum_t uplo,
476 plasma_sequence_t *sequence, plasma_request_t *request);
478 void core_omp_dpotrf(plasma_enum_t uplo,
482 plasma_sequence_t *sequence, plasma_request_t *request);
485 plasma_enum_t side, plasma_enum_t uplo,
487 double alpha,
const double *A,
int lda,
488 const double *B,
int ldb,
489 double beta,
double *C,
int ldc,
490 plasma_sequence_t *sequence, plasma_request_t *request);
492 void core_omp_dsyr2k(
493 plasma_enum_t uplo, plasma_enum_t trans,
495 double alpha,
const double *A,
int lda,
496 const double *B,
int ldb,
497 double beta,
double *C,
int ldc,
498 plasma_sequence_t *sequence, plasma_request_t *request);
501 plasma_enum_t uplo, plasma_enum_t trans,
503 double alpha,
const double *A,
int lda,
504 double beta,
double *C,
int ldc,
505 plasma_sequence_t *sequence, plasma_request_t *request);
507 void core_omp_dtradd(
508 plasma_enum_t uplo, plasma_enum_t transa,
510 double alpha,
const double *A,
int lda,
511 double beta,
double *B,
int ldb,
512 plasma_sequence_t *sequence, plasma_request_t *request);
515 plasma_enum_t side, plasma_enum_t uplo,
516 plasma_enum_t transa, plasma_enum_t diag,
518 double alpha,
const double *A,
int lda,
520 plasma_sequence_t *sequence, plasma_request_t *request);
523 plasma_enum_t side, plasma_enum_t uplo,
524 plasma_enum_t transa, plasma_enum_t diag,
526 double alpha,
const double *A,
int lda,
528 plasma_sequence_t *sequence, plasma_request_t *request);
530 void core_omp_dtrssq(plasma_enum_t uplo, plasma_enum_t diag,
532 const double *A,
int lda,
533 double *scale,
double *sumsq,
534 plasma_sequence_t *sequence, plasma_request_t *request);
536 void core_omp_dtrtri(plasma_enum_t uplo, plasma_enum_t diag,
540 plasma_sequence_t *sequence, plasma_request_t *request);
542 void core_omp_dtslqt(
int m,
int n,
int ib,
543 double *A1,
int lda1,
544 double *A2,
int lda2,
546 plasma_workspace_t work,
547 plasma_sequence_t *sequence, plasma_request_t *request);
549 void core_omp_dtsmlq(plasma_enum_t side, plasma_enum_t trans,
550 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
551 double *A1,
int lda1,
552 double *A2,
int lda2,
553 const double *V,
int ldv,
554 const double *T,
int ldt,
555 plasma_workspace_t work,
556 plasma_sequence_t *sequence, plasma_request_t *request);
558 void core_omp_dtsmqr(plasma_enum_t side, plasma_enum_t trans,
559 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
560 double *A1,
int lda1,
561 double *A2,
int lda2,
562 const double *V,
int ldv,
563 const double *T,
int ldt,
564 plasma_workspace_t work,
565 plasma_sequence_t *sequence, plasma_request_t *request);
567 void core_omp_dtsqrt(
int m,
int n,
int ib,
568 double *A1,
int lda1,
569 double *A2,
int lda2,
571 plasma_workspace_t work,
572 plasma_sequence_t *sequence, plasma_request_t *request);
574 void core_omp_dttlqt(
int m,
int n,
int ib,
575 double *A1,
int lda1,
576 double *A2,
int lda2,
578 plasma_workspace_t work,
579 plasma_sequence_t *sequence, plasma_request_t *request);
581 void core_omp_dttmlq(plasma_enum_t side, plasma_enum_t trans,
582 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
583 double *A1,
int lda1,
584 double *A2,
int lda2,
585 const double *V,
int ldv,
586 const double *T,
int ldt,
587 plasma_workspace_t work,
588 plasma_sequence_t *sequence, plasma_request_t *request);
590 void core_omp_dttmqr(plasma_enum_t side, plasma_enum_t trans,
591 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
592 double *A1,
int lda1,
593 double *A2,
int lda2,
594 const double *V,
int ldv,
595 const double *T,
int ldt,
596 plasma_workspace_t work,
597 plasma_sequence_t *sequence, plasma_request_t *request);
599 void core_omp_dttqrt(
int m,
int n,
int ib,
600 double *A1,
int lda1,
601 double *A2,
int lda2,
603 plasma_workspace_t work,
604 plasma_sequence_t *sequence, plasma_request_t *request);
606 void core_omp_dormlq(plasma_enum_t side, plasma_enum_t trans,
607 int m,
int n,
int k,
int ib,
608 const double *A,
int lda,
609 const double *T,
int ldt,
611 plasma_workspace_t work,
612 plasma_sequence_t *sequence, plasma_request_t *request);
614 void core_omp_dormqr(plasma_enum_t side, plasma_enum_t trans,
615 int m,
int n,
int k,
int ib,
616 const double *A,
int lda,
617 const double *T,
int ldt,
619 plasma_workspace_t work,
620 plasma_sequence_t *sequence, plasma_request_t *request);
628 #endif // ICL_CORE_BLAS_D_H
Definition: plasma_descriptor.h:40