12 #ifndef PLASMA_CORE_BLAS_D_H 13 #define PLASMA_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 plasma_core_dgeadd(plasma_enum_t transa,
35 double alpha,
const double *A,
int lda,
36 double beta,
double *B,
int ldb);
38 int plasma_core_dgelqt(
int m,
int n,
int ib,
44 void plasma_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 plasma_core_dgeqrt(
int m,
int n,
int ib,
56 void plasma_core_dgessq(
int m,
int n,
57 const double *A,
int lda,
58 double *scale,
double *sumsq);
60 void plasma_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 plasma_core_dsygst(
int itype, plasma_enum_t uplo,
69 void plasma_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 plasma_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 plasma_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 plasma_core_dsyssq(plasma_enum_t uplo,
88 const double *A,
int lda,
89 double *scale,
double *sumsq);
91 void plasma_core_dsyssq(plasma_enum_t uplo,
93 const double *A,
int lda,
94 double *scale,
double *sumsq);
96 void plasma_core_dlacpy(plasma_enum_t uplo, plasma_enum_t transa,
98 const double *A,
int lda,
101 void plasma_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 plasma_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 plasma_core_dlange(plasma_enum_t norm,
115 const double *A,
int lda,
116 double *work,
double *result);
118 void plasma_core_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
120 const double *A,
int lda,
121 double *work,
double *value);
123 void plasma_core_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
125 const double *A,
int lda,
126 double *work,
double *value);
128 void plasma_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 plasma_core_dlascl(plasma_enum_t uplo,
134 double cfrom,
double cto,
138 void plasma_core_dlaset(plasma_enum_t uplo,
140 double alpha,
double beta,
143 void plasma_core_dgeswp(plasma_enum_t colrow,
146 void plasma_core_dsyswp(
int rank,
int num_threads,
148 int incx, plasma_barrier_t *barrier);
150 int plasma_core_dlauum(plasma_enum_t uplo,
154 int plasma_core_dpamm(plasma_enum_t op, plasma_enum_t side, plasma_enum_t storev,
155 int m,
int n,
int k,
int l,
156 const double *A1,
int lda1,
157 double *A2,
int lda2,
158 const double *V,
int ldv,
161 int plasma_core_dparfb(plasma_enum_t side, plasma_enum_t trans, plasma_enum_t direct,
162 plasma_enum_t storev,
163 int m1,
int n1,
int m2,
int n2,
int k,
int l,
164 double *A1,
int lda1,
165 double *A2,
int lda2,
166 const double *V,
int ldv,
167 const double *T,
int ldt,
168 double *work,
int ldwork);
170 int plasma_core_dpemv(plasma_enum_t trans,
int storev,
173 const double *A,
int lda,
174 const double *X,
int incx,
179 int plasma_core_dpotrf(plasma_enum_t uplo,
183 void plasma_core_dsymm(plasma_enum_t side, plasma_enum_t uplo,
185 double alpha,
const double *A,
int lda,
186 const double *B,
int ldb,
187 double beta,
double *C,
int ldc);
189 void plasma_core_dsyr2k(
190 plasma_enum_t uplo, plasma_enum_t trans,
192 double alpha,
const double *A,
int lda,
193 const double *B,
int ldb,
194 double beta,
double *C,
int ldc);
196 void plasma_core_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
198 double alpha,
const double *A,
int lda,
199 double beta,
double *C,
int ldc);
201 int plasma_core_dtradd(plasma_enum_t uplo, plasma_enum_t transa,
203 double alpha,
const double *A,
int lda,
204 double beta,
double *B,
int ldb);
206 void plasma_core_dtrmm(plasma_enum_t side, plasma_enum_t uplo,
207 plasma_enum_t transa, plasma_enum_t diag,
209 double alpha,
const double *A,
int lda,
212 void plasma_core_dtrsm(plasma_enum_t side, plasma_enum_t uplo,
213 plasma_enum_t transa, plasma_enum_t diag,
215 double alpha,
const double *A,
int lda,
218 void plasma_core_dtrssq(plasma_enum_t uplo, plasma_enum_t diag,
220 const double *A,
int lda,
221 double *scale,
double *sumsq);
223 int plasma_core_dtrtri(plasma_enum_t uplo, plasma_enum_t diag,
227 int plasma_core_dtslqt(
int m,
int n,
int ib,
228 double *A1,
int lda1,
229 double *A2,
int lda2,
234 int plasma_core_dtsmlq(plasma_enum_t side, plasma_enum_t trans,
235 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
236 double *A1,
int lda1,
237 double *A2,
int lda2,
238 const double *V,
int ldv,
239 const double *T,
int ldt,
240 double *work,
int ldwork);
242 int plasma_core_dtsmqr(plasma_enum_t side, plasma_enum_t trans,
243 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
244 double *A1,
int lda1,
245 double *A2,
int lda2,
246 const double *V,
int ldv,
247 const double *T,
int ldt,
248 double *work,
int ldwork);
250 int plasma_core_dtsqrt(
int m,
int n,
int ib,
251 double *A1,
int lda1,
252 double *A2,
int lda2,
257 int plasma_core_dttlqt(
int m,
int n,
int ib,
258 double *A1,
int lda1,
259 double *A2,
int lda2,
264 int plasma_core_dttmlq(plasma_enum_t side, plasma_enum_t trans,
265 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
266 double *A1,
int lda1,
267 double *A2,
int lda2,
268 const double *V,
int ldv,
269 const double *T,
int ldt,
270 double *work,
int ldwork);
272 int plasma_core_dttmqr(plasma_enum_t side, plasma_enum_t trans,
273 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
274 double *A1,
int lda1,
275 double *A2,
int lda2,
276 const double *V,
int ldv,
277 const double *T,
int ldt,
278 double *work,
int ldwork);
280 int plasma_core_dttqrt(
int m,
int n,
int ib,
281 double *A1,
int lda1,
282 double *A2,
int lda2,
287 int plasma_core_dormlq(plasma_enum_t side, plasma_enum_t trans,
288 int m,
int n,
int k,
int ib,
289 const double *A,
int lda,
290 const double *T,
int ldt,
292 double *work,
int ldwork);
294 int plasma_core_dormqr(plasma_enum_t side, plasma_enum_t trans,
295 int m,
int n,
int k,
int ib,
296 const double *A,
int lda,
297 const double *T,
int ldt,
299 double *work,
int ldwork);
302 void plasma_core_omp_damax(
int colrow,
int m,
int n,
303 const double *A,
int lda,
305 plasma_sequence_t *sequence, plasma_request_t *request);
307 void plasma_core_omp_dgeadd(
308 plasma_enum_t transa,
int m,
int n,
309 double alpha,
const double *A,
int lda,
310 double beta,
double *B,
int ldb,
311 plasma_sequence_t *sequence, plasma_request_t *request);
313 void plasma_core_omp_dgelqt(
int m,
int n,
int ib,
316 plasma_workspace_t work,
317 plasma_sequence_t *sequence, plasma_request_t *request);
319 void plasma_core_omp_dgemm(
320 plasma_enum_t transa, plasma_enum_t transb,
322 double alpha,
const double *A,
int lda,
323 const double *B,
int ldb,
324 double beta,
double *C,
int ldc,
325 plasma_sequence_t *sequence, plasma_request_t *request);
327 void plasma_core_omp_dgeqrt(
int m,
int n,
int ib,
330 plasma_workspace_t work,
331 plasma_sequence_t *sequence, plasma_request_t *request);
333 void plasma_core_omp_dgessq(
int m,
int n,
334 const double *A,
int lda,
335 double *scale,
double *sumsq,
336 plasma_sequence_t *sequence, plasma_request_t *request);
338 void plasma_core_omp_dgessq_aux(
int n,
339 const double *scale,
const double *sumsq,
341 plasma_sequence_t *sequence,
342 plasma_request_t *request);
344 void plasma_core_omp_dsygst(
int itype, plasma_enum_t uplo,
348 plasma_sequence_t *sequence, plasma_request_t *request);
350 void plasma_core_omp_dsymm(
351 plasma_enum_t side, plasma_enum_t uplo,
353 double alpha,
const double *A,
int lda,
354 const double *B,
int ldb,
355 double beta,
double *C,
int ldc,
356 plasma_sequence_t *sequence, plasma_request_t *request);
358 void plasma_core_omp_dsyr2k(
359 plasma_enum_t uplo, plasma_enum_t trans,
361 double alpha,
const double *A,
int lda,
362 const double *B,
int ldb,
363 double beta,
double *C,
int ldc,
364 plasma_sequence_t *sequence, plasma_request_t *request);
366 void plasma_core_omp_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
368 double alpha,
const double *A,
int lda,
369 double beta,
double *C,
int ldc,
370 plasma_sequence_t *sequence, plasma_request_t *request);
372 void plasma_core_omp_dsyssq(plasma_enum_t uplo,
374 const double *A,
int lda,
375 double *scale,
double *sumsq,
376 plasma_sequence_t *sequence, plasma_request_t *request);
378 void plasma_core_omp_dsyssq(plasma_enum_t uplo,
380 const double *A,
int lda,
381 double *scale,
double *sumsq,
382 plasma_sequence_t *sequence, plasma_request_t *request);
384 void plasma_core_omp_dsyssq_aux(
int m,
int n,
385 const double *scale,
const double *sumsq,
387 plasma_sequence_t *sequence,
388 plasma_request_t *request);
390 void plasma_core_omp_dlacpy(plasma_enum_t uplo, plasma_enum_t transa,
392 const double *A,
int lda,
394 plasma_sequence_t *sequence, plasma_request_t *request);
396 void plasma_core_omp_dlacpy_lapack2tile_band(plasma_enum_t uplo,
398 int m,
int n,
int nb,
int kl,
int ku,
399 const double *A,
int lda,
402 void plasma_core_omp_dlacpy_tile2lapack_band(plasma_enum_t uplo,
404 int m,
int n,
int nb,
int kl,
int ku,
405 const double *B,
int ldb,
408 void plasma_core_omp_dlange(plasma_enum_t norm,
410 const double *A,
int lda,
411 double *work,
double *result,
412 plasma_sequence_t *sequence, plasma_request_t *request);
414 void plasma_core_omp_dlange_aux(plasma_enum_t norm,
416 const double *A,
int lda,
418 plasma_sequence_t *sequence,
419 plasma_request_t *request);
421 void plasma_core_omp_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
423 const double *A,
int lda,
424 double *work,
double *value,
425 plasma_sequence_t *sequence, plasma_request_t *request);
427 void plasma_core_omp_dlansy_aux(plasma_enum_t norm, plasma_enum_t uplo,
429 const double *A,
int lda,
431 plasma_sequence_t *sequence,
432 plasma_request_t *request);
434 void plasma_core_omp_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
436 const double *A,
int lda,
437 double *work,
double *value,
438 plasma_sequence_t *sequence, plasma_request_t *request);
440 void plasma_core_omp_dlansy_aux(plasma_enum_t norm, plasma_enum_t uplo,
442 const double *A,
int lda,
444 plasma_sequence_t *sequence,
445 plasma_request_t *request);
447 void plasma_core_omp_dlantr(plasma_enum_t norm, plasma_enum_t uplo, plasma_enum_t diag,
449 const double *A,
int lda,
450 double *work,
double *value,
451 plasma_sequence_t *sequence, plasma_request_t *request);
453 void plasma_core_omp_dlantr_aux(plasma_enum_t norm, plasma_enum_t uplo,
456 const double *A,
int lda,
458 plasma_sequence_t *sequence,
459 plasma_request_t *request);
461 void plasma_core_omp_dlascl(plasma_enum_t uplo,
462 double cfrom,
double cto,
465 plasma_sequence_t *sequence, plasma_request_t *request);
467 void plasma_core_omp_dlaset(plasma_enum_t uplo,
471 double alpha,
double beta,
474 void plasma_core_omp_dlauum(plasma_enum_t uplo,
477 plasma_sequence_t *sequence, plasma_request_t *request);
479 void plasma_core_omp_dpotrf(plasma_enum_t uplo,
483 plasma_sequence_t *sequence, plasma_request_t *request);
485 void plasma_core_omp_dsymm(
486 plasma_enum_t side, plasma_enum_t uplo,
488 double alpha,
const double *A,
int lda,
489 const double *B,
int ldb,
490 double beta,
double *C,
int ldc,
491 plasma_sequence_t *sequence, plasma_request_t *request);
493 void plasma_core_omp_dsyr2k(
494 plasma_enum_t uplo, plasma_enum_t trans,
496 double alpha,
const double *A,
int lda,
497 const double *B,
int ldb,
498 double beta,
double *C,
int ldc,
499 plasma_sequence_t *sequence, plasma_request_t *request);
501 void plasma_core_omp_dsyrk(
502 plasma_enum_t uplo, plasma_enum_t trans,
504 double alpha,
const double *A,
int lda,
505 double beta,
double *C,
int ldc,
506 plasma_sequence_t *sequence, plasma_request_t *request);
508 void plasma_core_omp_dtradd(
509 plasma_enum_t uplo, plasma_enum_t transa,
511 double alpha,
const double *A,
int lda,
512 double beta,
double *B,
int ldb,
513 plasma_sequence_t *sequence, plasma_request_t *request);
515 void plasma_core_omp_dtrmm(
516 plasma_enum_t side, plasma_enum_t uplo,
517 plasma_enum_t transa, plasma_enum_t diag,
519 double alpha,
const double *A,
int lda,
521 plasma_sequence_t *sequence, plasma_request_t *request);
523 void plasma_core_omp_dtrsm(
524 plasma_enum_t side, plasma_enum_t uplo,
525 plasma_enum_t transa, plasma_enum_t diag,
527 double alpha,
const double *A,
int lda,
529 plasma_sequence_t *sequence, plasma_request_t *request);
531 void plasma_core_omp_dtrssq(plasma_enum_t uplo, plasma_enum_t diag,
533 const double *A,
int lda,
534 double *scale,
double *sumsq,
535 plasma_sequence_t *sequence, plasma_request_t *request);
537 void plasma_core_omp_dtrtri(plasma_enum_t uplo, plasma_enum_t diag,
541 plasma_sequence_t *sequence, plasma_request_t *request);
543 void plasma_core_omp_dtslqt(
int m,
int n,
int ib,
544 double *A1,
int lda1,
545 double *A2,
int lda2,
547 plasma_workspace_t work,
548 plasma_sequence_t *sequence, plasma_request_t *request);
550 void plasma_core_omp_dtsmlq(plasma_enum_t side, plasma_enum_t trans,
551 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
552 double *A1,
int lda1,
553 double *A2,
int lda2,
554 const double *V,
int ldv,
555 const double *T,
int ldt,
556 plasma_workspace_t work,
557 plasma_sequence_t *sequence, plasma_request_t *request);
559 void plasma_core_omp_dtsmqr(plasma_enum_t side, plasma_enum_t trans,
560 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
561 double *A1,
int lda1,
562 double *A2,
int lda2,
563 const double *V,
int ldv,
564 const double *T,
int ldt,
565 plasma_workspace_t work,
566 plasma_sequence_t *sequence, plasma_request_t *request);
568 void plasma_core_omp_dtsqrt(
int m,
int n,
int ib,
569 double *A1,
int lda1,
570 double *A2,
int lda2,
572 plasma_workspace_t work,
573 plasma_sequence_t *sequence, plasma_request_t *request);
575 void plasma_core_omp_dttlqt(
int m,
int n,
int ib,
576 double *A1,
int lda1,
577 double *A2,
int lda2,
579 plasma_workspace_t work,
580 plasma_sequence_t *sequence, plasma_request_t *request);
582 void plasma_core_omp_dttmlq(plasma_enum_t side, plasma_enum_t trans,
583 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
584 double *A1,
int lda1,
585 double *A2,
int lda2,
586 const double *V,
int ldv,
587 const double *T,
int ldt,
588 plasma_workspace_t work,
589 plasma_sequence_t *sequence, plasma_request_t *request);
591 void plasma_core_omp_dttmqr(plasma_enum_t side, plasma_enum_t trans,
592 int m1,
int n1,
int m2,
int n2,
int k,
int ib,
593 double *A1,
int lda1,
594 double *A2,
int lda2,
595 const double *V,
int ldv,
596 const double *T,
int ldt,
597 plasma_workspace_t work,
598 plasma_sequence_t *sequence, plasma_request_t *request);
600 void plasma_core_omp_dttqrt(
int m,
int n,
int ib,
601 double *A1,
int lda1,
602 double *A2,
int lda2,
604 plasma_workspace_t work,
605 plasma_sequence_t *sequence, plasma_request_t *request);
607 void plasma_core_omp_dormlq(plasma_enum_t side, plasma_enum_t trans,
608 int m,
int n,
int k,
int ib,
609 const double *A,
int lda,
610 const double *T,
int ldt,
612 plasma_workspace_t work,
613 plasma_sequence_t *sequence, plasma_request_t *request);
615 void plasma_core_omp_dormqr(plasma_enum_t side, plasma_enum_t trans,
616 int m,
int n,
int k,
int ib,
617 const double *A,
int lda,
618 const double *T,
int ldt,
620 plasma_workspace_t work,
621 plasma_sequence_t *sequence, plasma_request_t *request);
629 #endif // PLASMA_CORE_BLAS_D_H Definition: plasma_descriptor.h:40