PLASMA
Parallel Linear Algebra Software for Multicore Architectures
plasma_core_blas_d.h
1 
12 #ifndef PLASMA_CORE_BLAS_D_H
13 #define PLASMA_CORE_BLAS_D_H
14 
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"
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #define REAL
27 
28 /******************************************************************************/
29 #ifdef COMPLEX
30 double fabs(double alpha);
31 #endif
32 
33 int plasma_core_dgeadd(plasma_enum_t transa,
34  int m, int n,
35  double alpha, const double *A, int lda,
36  double beta, double *B, int ldb);
37 
38 int plasma_core_dgelqt(int m, int n, int ib,
39  double *A, int lda,
40  double *T, int ldt,
41  double *tau,
42  double *work);
43 
44 void plasma_core_dgemm(plasma_enum_t transa, plasma_enum_t transb,
45  int m, int n, int k,
46  double alpha, const double *A, int lda,
47  const double *B, int ldb,
48  double beta, double *C, int ldc);
49 
50 int plasma_core_dgeqrt(int m, int n, int ib,
51  double *A, int lda,
52  double *T, int ldt,
53  double *tau,
54  double *work);
55 
56 void plasma_core_dgessq(int m, int n,
57  const double *A, int lda,
58  double *scale, double *sumsq);
59 
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);
63 
64 int plasma_core_dsygst(int itype, plasma_enum_t uplo,
65  int n,
66  double *A, int lda,
67  double *B, int ldb);
68 
69 void plasma_core_dsymm(plasma_enum_t side, plasma_enum_t uplo,
70  int m, int n,
71  double alpha, const double *A, int lda,
72  const double *B, int ldb,
73  double beta, double *C, int ldc);
74 
75 void plasma_core_dsyr2k(plasma_enum_t uplo, plasma_enum_t trans,
76  int n, int k,
77  double alpha, const double *A, int lda,
78  const double *B, int ldb,
79  double beta, double *C, int ldc);
80 
81 void plasma_core_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
82  int n, int k,
83  double alpha, const double *A, int lda,
84  double beta, double *C, int ldc);
85 
86 void plasma_core_dsyssq(plasma_enum_t uplo,
87  int n,
88  const double *A, int lda,
89  double *scale, double *sumsq);
90 
91 void plasma_core_dsyssq(plasma_enum_t uplo,
92  int n,
93  const double *A, int lda,
94  double *scale, double *sumsq);
95 
96 void plasma_core_dlacpy(plasma_enum_t uplo, plasma_enum_t transa,
97  int m, int n,
98  const double *A, int lda,
99  double *B, int ldb);
100 
101 void plasma_core_dlacpy_lapack2tile_band(plasma_enum_t uplo,
102  int it, int jt,
103  int m, int n, int nb, int kl, int ku,
104  const double *A, int lda,
105  double *B, int ldb);
106 
107 void plasma_core_dlacpy_tile2lapack_band(plasma_enum_t uplo,
108  int it, int jt,
109  int m, int n, int nb, int kl, int ku,
110  const double *B, int ldb,
111  double *A, int lda);
112 
113 void plasma_core_dlange(plasma_enum_t norm,
114  int m, int n,
115  const double *A, int lda,
116  double *work, double *result);
117 
118 void plasma_core_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
119  int n,
120  const double *A, int lda,
121  double *work, double *value);
122 
123 void plasma_core_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
124  int n,
125  const double *A, int lda,
126  double *work, double *value);
127 
128 void plasma_core_dlantr(plasma_enum_t norm, plasma_enum_t uplo, plasma_enum_t diag,
129  int m, int n,
130  const double *A, int lda,
131  double *work, double *value);
132 
133 void plasma_core_dlascl(plasma_enum_t uplo,
134  double cfrom, double cto,
135  int m, int n,
136  double *A, int lda);
137 
138 void plasma_core_dlaset(plasma_enum_t uplo,
139  int m, int n,
140  double alpha, double beta,
141  double *A, int lda);
142 
143 void plasma_core_dgeswp(plasma_enum_t colrow,
144  plasma_desc_t A, int k1, int k2, const int *ipiv, int incx);
145 
146 void plasma_core_dsyswp(int rank, int num_threads,
147  int uplo, plasma_desc_t A, int k1, int k2, const int *ipiv,
148  int incx, plasma_barrier_t *barrier);
149 
150 int plasma_core_dlauum(plasma_enum_t uplo,
151  int n,
152  double *A, int lda);
153 
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,
159  double *W, int ldw);
160 
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);
169 
170 int plasma_core_dpemv(plasma_enum_t trans, int storev,
171  int m, int n, int l,
172  double alpha,
173  const double *A, int lda,
174  const double *X, int incx,
175  double beta,
176  double *Y, int incy,
177  double *work);
178 
179 int plasma_core_dpotrf(plasma_enum_t uplo,
180  int n,
181  double *A, int lda);
182 
183 void plasma_core_dsymm(plasma_enum_t side, plasma_enum_t uplo,
184  int m, int n,
185  double alpha, const double *A, int lda,
186  const double *B, int ldb,
187  double beta, double *C, int ldc);
188 
189 void plasma_core_dsyr2k(
190  plasma_enum_t uplo, plasma_enum_t trans,
191  int n, int k,
192  double alpha, const double *A, int lda,
193  const double *B, int ldb,
194  double beta, double *C, int ldc);
195 
196 void plasma_core_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
197  int n, int k,
198  double alpha, const double *A, int lda,
199  double beta, double *C, int ldc);
200 
201 int plasma_core_dtradd(plasma_enum_t uplo, plasma_enum_t transa,
202  int m, int n,
203  double alpha, const double *A, int lda,
204  double beta, double *B, int ldb);
205 
206 void plasma_core_dtrmm(plasma_enum_t side, plasma_enum_t uplo,
207  plasma_enum_t transa, plasma_enum_t diag,
208  int m, int n,
209  double alpha, const double *A, int lda,
210  double *B, int ldb);
211 
212 void plasma_core_dtrsm(plasma_enum_t side, plasma_enum_t uplo,
213  plasma_enum_t transa, plasma_enum_t diag,
214  int m, int n,
215  double alpha, const double *A, int lda,
216  double *B, int ldb);
217 
218 void plasma_core_dtrssq(plasma_enum_t uplo, plasma_enum_t diag,
219  int m, int n,
220  const double *A, int lda,
221  double *scale, double *sumsq);
222 
223 int plasma_core_dtrtri(plasma_enum_t uplo, plasma_enum_t diag,
224  int n,
225  double *A, int lda);
226 
227 int plasma_core_dtslqt(int m, int n, int ib,
228  double *A1, int lda1,
229  double *A2, int lda2,
230  double *T, int ldt,
231  double *tau,
232  double *work);
233 
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);
241 
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);
249 
250 int plasma_core_dtsqrt(int m, int n, int ib,
251  double *A1, int lda1,
252  double *A2, int lda2,
253  double *T, int ldt,
254  double *tau,
255  double *work);
256 
257 int plasma_core_dttlqt(int m, int n, int ib,
258  double *A1, int lda1,
259  double *A2, int lda2,
260  double *T, int ldt,
261  double *tau,
262  double *work);
263 
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);
271 
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);
279 
280 int plasma_core_dttqrt(int m, int n, int ib,
281  double *A1, int lda1,
282  double *A2, int lda2,
283  double *T, int ldt,
284  double *tau,
285  double *work);
286 
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,
291  double *C, int ldc,
292  double *work, int ldwork);
293 
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,
298  double *C, int ldc,
299  double *work, int ldwork);
300 
301 /******************************************************************************/
302 void plasma_core_omp_damax(int colrow, int m, int n,
303  const double *A, int lda,
304  double *values,
305  plasma_sequence_t *sequence, plasma_request_t *request);
306 
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);
312 
313 void plasma_core_omp_dgelqt(int m, int n, int ib,
314  double *A, int lda,
315  double *T, int ldt,
316  plasma_workspace_t work,
317  plasma_sequence_t *sequence, plasma_request_t *request);
318 
319 void plasma_core_omp_dgemm(
320  plasma_enum_t transa, plasma_enum_t transb,
321  int m, int n, int k,
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);
326 
327 void plasma_core_omp_dgeqrt(int m, int n, int ib,
328  double *A, int lda,
329  double *T, int ldt,
330  plasma_workspace_t work,
331  plasma_sequence_t *sequence, plasma_request_t *request);
332 
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);
337 
338 void plasma_core_omp_dgessq_aux(int n,
339  const double *scale, const double *sumsq,
340  double *value,
341  plasma_sequence_t *sequence,
342  plasma_request_t *request);
343 
344 void plasma_core_omp_dsygst(int itype, plasma_enum_t uplo,
345  int n,
346  double *A, int lda,
347  double *B, int ldb,
348  plasma_sequence_t *sequence, plasma_request_t *request);
349 
350 void plasma_core_omp_dsymm(
351  plasma_enum_t side, plasma_enum_t uplo,
352  int m, int n,
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);
357 
358 void plasma_core_omp_dsyr2k(
359  plasma_enum_t uplo, plasma_enum_t trans,
360  int n, int k,
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);
365 
366 void plasma_core_omp_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
367  int n, int k,
368  double alpha, const double *A, int lda,
369  double beta, double *C, int ldc,
370  plasma_sequence_t *sequence, plasma_request_t *request);
371 
372 void plasma_core_omp_dsyssq(plasma_enum_t uplo,
373  int n,
374  const double *A, int lda,
375  double *scale, double *sumsq,
376  plasma_sequence_t *sequence, plasma_request_t *request);
377 
378 void plasma_core_omp_dsyssq(plasma_enum_t uplo,
379  int n,
380  const double *A, int lda,
381  double *scale, double *sumsq,
382  plasma_sequence_t *sequence, plasma_request_t *request);
383 
384 void plasma_core_omp_dsyssq_aux(int m, int n,
385  const double *scale, const double *sumsq,
386  double *value,
387  plasma_sequence_t *sequence,
388  plasma_request_t *request);
389 
390 void plasma_core_omp_dlacpy(plasma_enum_t uplo, plasma_enum_t transa,
391  int m, int n,
392  const double *A, int lda,
393  double *B, int ldb,
394  plasma_sequence_t *sequence, plasma_request_t *request);
395 
396 void plasma_core_omp_dlacpy_lapack2tile_band(plasma_enum_t uplo,
397  int it, int jt,
398  int m, int n, int nb, int kl, int ku,
399  const double *A, int lda,
400  double *B, int ldb);
401 
402 void plasma_core_omp_dlacpy_tile2lapack_band(plasma_enum_t uplo,
403  int it, int jt,
404  int m, int n, int nb, int kl, int ku,
405  const double *B, int ldb,
406  double *A, int lda);
407 
408 void plasma_core_omp_dlange(plasma_enum_t norm,
409  int m, int n,
410  const double *A, int lda,
411  double *work, double *result,
412  plasma_sequence_t *sequence, plasma_request_t *request);
413 
414 void plasma_core_omp_dlange_aux(plasma_enum_t norm,
415  int m, int n,
416  const double *A, int lda,
417  double *value,
418  plasma_sequence_t *sequence,
419  plasma_request_t *request);
420 
421 void plasma_core_omp_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
422  int n,
423  const double *A, int lda,
424  double *work, double *value,
425  plasma_sequence_t *sequence, plasma_request_t *request);
426 
427 void plasma_core_omp_dlansy_aux(plasma_enum_t norm, plasma_enum_t uplo,
428  int n,
429  const double *A, int lda,
430  double *value,
431  plasma_sequence_t *sequence,
432  plasma_request_t *request);
433 
434 void plasma_core_omp_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
435  int n,
436  const double *A, int lda,
437  double *work, double *value,
438  plasma_sequence_t *sequence, plasma_request_t *request);
439 
440 void plasma_core_omp_dlansy_aux(plasma_enum_t norm, plasma_enum_t uplo,
441  int n,
442  const double *A, int lda,
443  double *value,
444  plasma_sequence_t *sequence,
445  plasma_request_t *request);
446 
447 void plasma_core_omp_dlantr(plasma_enum_t norm, plasma_enum_t uplo, plasma_enum_t diag,
448  int m, int n,
449  const double *A, int lda,
450  double *work, double *value,
451  plasma_sequence_t *sequence, plasma_request_t *request);
452 
453 void plasma_core_omp_dlantr_aux(plasma_enum_t norm, plasma_enum_t uplo,
454  plasma_enum_t diag,
455  int m, int n,
456  const double *A, int lda,
457  double *value,
458  plasma_sequence_t *sequence,
459  plasma_request_t *request);
460 
461 void plasma_core_omp_dlascl(plasma_enum_t uplo,
462  double cfrom, double cto,
463  int m, int n,
464  double *A, int lda,
465  plasma_sequence_t *sequence, plasma_request_t *request);
466 
467 void plasma_core_omp_dlaset(plasma_enum_t uplo,
468  int mb, int nb,
469  int i, int j,
470  int m, int n,
471  double alpha, double beta,
472  double *A);
473 
474 void plasma_core_omp_dlauum(plasma_enum_t uplo,
475  int n,
476  double *A, int lda,
477  plasma_sequence_t *sequence, plasma_request_t *request);
478 
479 void plasma_core_omp_dpotrf(plasma_enum_t uplo,
480  int n,
481  double *A, int lda,
482  int iinfo,
483  plasma_sequence_t *sequence, plasma_request_t *request);
484 
485 void plasma_core_omp_dsymm(
486  plasma_enum_t side, plasma_enum_t uplo,
487  int m, int n,
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);
492 
493 void plasma_core_omp_dsyr2k(
494  plasma_enum_t uplo, plasma_enum_t trans,
495  int n, int k,
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);
500 
501 void plasma_core_omp_dsyrk(
502  plasma_enum_t uplo, plasma_enum_t trans,
503  int n, int k,
504  double alpha, const double *A, int lda,
505  double beta, double *C, int ldc,
506  plasma_sequence_t *sequence, plasma_request_t *request);
507 
508 void plasma_core_omp_dtradd(
509  plasma_enum_t uplo, plasma_enum_t transa,
510  int m, int n,
511  double alpha, const double *A, int lda,
512  double beta, double *B, int ldb,
513  plasma_sequence_t *sequence, plasma_request_t *request);
514 
515 void plasma_core_omp_dtrmm(
516  plasma_enum_t side, plasma_enum_t uplo,
517  plasma_enum_t transa, plasma_enum_t diag,
518  int m, int n,
519  double alpha, const double *A, int lda,
520  double *B, int ldb,
521  plasma_sequence_t *sequence, plasma_request_t *request);
522 
523 void plasma_core_omp_dtrsm(
524  plasma_enum_t side, plasma_enum_t uplo,
525  plasma_enum_t transa, plasma_enum_t diag,
526  int m, int n,
527  double alpha, const double *A, int lda,
528  double *B, int ldb,
529  plasma_sequence_t *sequence, plasma_request_t *request);
530 
531 void plasma_core_omp_dtrssq(plasma_enum_t uplo, plasma_enum_t diag,
532  int m, int n,
533  const double *A, int lda,
534  double *scale, double *sumsq,
535  plasma_sequence_t *sequence, plasma_request_t *request);
536 
537 void plasma_core_omp_dtrtri(plasma_enum_t uplo, plasma_enum_t diag,
538  int n,
539  double *A, int lda,
540  int iinfo,
541  plasma_sequence_t *sequence, plasma_request_t *request);
542 
543 void plasma_core_omp_dtslqt(int m, int n, int ib,
544  double *A1, int lda1,
545  double *A2, int lda2,
546  double *T, int ldt,
547  plasma_workspace_t work,
548  plasma_sequence_t *sequence, plasma_request_t *request);
549 
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);
558 
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);
567 
568 void plasma_core_omp_dtsqrt(int m, int n, int ib,
569  double *A1, int lda1,
570  double *A2, int lda2,
571  double *T, int ldt,
572  plasma_workspace_t work,
573  plasma_sequence_t *sequence, plasma_request_t *request);
574 
575 void plasma_core_omp_dttlqt(int m, int n, int ib,
576  double *A1, int lda1,
577  double *A2, int lda2,
578  double *T, int ldt,
579  plasma_workspace_t work,
580  plasma_sequence_t *sequence, plasma_request_t *request);
581 
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);
590 
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);
599 
600 void plasma_core_omp_dttqrt(int m, int n, int ib,
601  double *A1, int lda1,
602  double *A2, int lda2,
603  double *T, int ldt,
604  plasma_workspace_t work,
605  plasma_sequence_t *sequence, plasma_request_t *request);
606 
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,
611  double *C, int ldc,
612  plasma_workspace_t work,
613  plasma_sequence_t *sequence, plasma_request_t *request);
614 
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,
619  double *C, int ldc,
620  plasma_workspace_t work,
621  plasma_sequence_t *sequence, plasma_request_t *request);
622 
623 #undef REAL
624 
625 #ifdef __cplusplus
626 } // extern "C"
627 #endif
628 
629 #endif // PLASMA_CORE_BLAS_D_H
Definition: plasma_descriptor.h:40