PLASMA
Parallel Linear Algebra Software for Multicore Architectures
core_blas_d.h
1 
12 #ifndef ICL_CORE_BLAS_D_H
13 #define ICL_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 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 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 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 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 core_dgessq(int m, int n,
57  const double *A, int lda,
58  double *scale, double *sumsq);
59 
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);
63 
64 int core_dsygst(int itype, plasma_enum_t uplo,
65  int n,
66  double *A, int lda,
67  double *B, int ldb);
68 
69 void 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 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 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 core_dsyssq(plasma_enum_t uplo,
87  int n,
88  const double *A, int lda,
89  double *scale, double *sumsq);
90 
91 void core_dsyssq(plasma_enum_t uplo,
92  int n,
93  const double *A, int lda,
94  double *scale, double *sumsq);
95 
96 void 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 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 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 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 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 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 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 core_dlascl(plasma_enum_t uplo,
134  double cfrom, double cto,
135  int m, int n,
136  double *A, int lda);
137 
138 void core_dlaset(plasma_enum_t uplo,
139  int m, int n,
140  double alpha, double beta,
141  double *A, int lda);
142 
143 void core_dgeswp(plasma_enum_t colrow,
144  plasma_desc_t A, int k1, int k2, const int *ipiv, int incx);
145 
146 void core_dsyswp(int uplo, plasma_desc_t A, int k1, int k2, const int *ipiv,
147  int incx);
148 
149 int core_dlauum(plasma_enum_t uplo,
150  int n,
151  double *A, int lda);
152 
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,
158  double *W, int ldw);
159 
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);
168 
169 int core_dpemv(plasma_enum_t trans, int storev,
170  int m, int n, int l,
171  double alpha,
172  const double *A, int lda,
173  const double *X, int incx,
174  double beta,
175  double *Y, int incy,
176  double *work);
177 
178 int core_dpotrf(plasma_enum_t uplo,
179  int n,
180  double *A, int lda);
181 
182 void core_dsymm(plasma_enum_t side, plasma_enum_t uplo,
183  int m, int n,
184  double alpha, const double *A, int lda,
185  const double *B, int ldb,
186  double beta, double *C, int ldc);
187 
188 void core_dsyr2k(
189  plasma_enum_t uplo, plasma_enum_t trans,
190  int n, int k,
191  double alpha, const double *A, int lda,
192  const double *B, int ldb,
193  double beta, double *C, int ldc);
194 
195 void core_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
196  int n, int k,
197  double alpha, const double *A, int lda,
198  double beta, double *C, int ldc);
199 
200 int core_dtradd(plasma_enum_t uplo, plasma_enum_t transa,
201  int m, int n,
202  double alpha, const double *A, int lda,
203  double beta, double *B, int ldb);
204 
205 void core_dtrmm(plasma_enum_t side, plasma_enum_t uplo,
206  plasma_enum_t transa, plasma_enum_t diag,
207  int m, int n,
208  double alpha, const double *A, int lda,
209  double *B, int ldb);
210 
211 void core_dtrsm(plasma_enum_t side, plasma_enum_t uplo,
212  plasma_enum_t transa, plasma_enum_t diag,
213  int m, int n,
214  double alpha, const double *A, int lda,
215  double *B, int ldb);
216 
217 void core_dtrssq(plasma_enum_t uplo, plasma_enum_t diag,
218  int m, int n,
219  const double *A, int lda,
220  double *scale, double *sumsq);
221 
222 int core_dtrtri(plasma_enum_t uplo, plasma_enum_t diag,
223  int n,
224  double *A, int lda);
225 
226 int core_dtslqt(int m, int n, int ib,
227  double *A1, int lda1,
228  double *A2, int lda2,
229  double *T, int ldt,
230  double *tau,
231  double *work);
232 
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);
240 
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);
248 
249 int core_dtsqrt(int m, int n, int ib,
250  double *A1, int lda1,
251  double *A2, int lda2,
252  double *T, int ldt,
253  double *tau,
254  double *work);
255 
256 int core_dttlqt(int m, int n, int ib,
257  double *A1, int lda1,
258  double *A2, int lda2,
259  double *T, int ldt,
260  double *tau,
261  double *work);
262 
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);
270 
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);
278 
279 int core_dttqrt(int m, int n, int ib,
280  double *A1, int lda1,
281  double *A2, int lda2,
282  double *T, int ldt,
283  double *tau,
284  double *work);
285 
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,
290  double *C, int ldc,
291  double *work, int ldwork);
292 
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,
297  double *C, int ldc,
298  double *work, int ldwork);
299 
300 /******************************************************************************/
301 void core_omp_damax(int colrow, int m, int n,
302  const double *A, int lda,
303  double *values,
304  plasma_sequence_t *sequence, plasma_request_t *request);
305 
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);
311 
312 void core_omp_dgelqt(int m, int n, int ib,
313  double *A, int lda,
314  double *T, int ldt,
315  plasma_workspace_t work,
316  plasma_sequence_t *sequence, plasma_request_t *request);
317 
318 void core_omp_dgemm(
319  plasma_enum_t transa, plasma_enum_t transb,
320  int m, int n, int k,
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);
325 
326 void core_omp_dgeqrt(int m, int n, int ib,
327  double *A, int lda,
328  double *T, int ldt,
329  plasma_workspace_t work,
330  plasma_sequence_t *sequence, plasma_request_t *request);
331 
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);
336 
337 void core_omp_dgessq_aux(int n,
338  const double *scale, const double *sumsq,
339  double *value,
340  plasma_sequence_t *sequence,
341  plasma_request_t *request);
342 
343 void core_omp_dsygst(int itype, plasma_enum_t uplo,
344  int n,
345  double *A, int lda,
346  double *B, int ldb,
347  plasma_sequence_t *sequence, plasma_request_t *request);
348 
349 void core_omp_dsymm(
350  plasma_enum_t side, plasma_enum_t uplo,
351  int m, int n,
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);
356 
357 void core_omp_dsyr2k(
358  plasma_enum_t uplo, plasma_enum_t trans,
359  int n, int k,
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);
364 
365 void core_omp_dsyrk(plasma_enum_t uplo, plasma_enum_t trans,
366  int n, int k,
367  double alpha, const double *A, int lda,
368  double beta, double *C, int ldc,
369  plasma_sequence_t *sequence, plasma_request_t *request);
370 
371 void core_omp_dsyssq(plasma_enum_t uplo,
372  int n,
373  const double *A, int lda,
374  double *scale, double *sumsq,
375  plasma_sequence_t *sequence, plasma_request_t *request);
376 
377 void core_omp_dsyssq(plasma_enum_t uplo,
378  int n,
379  const double *A, int lda,
380  double *scale, double *sumsq,
381  plasma_sequence_t *sequence, plasma_request_t *request);
382 
383 void core_omp_dsyssq_aux(int m, int n,
384  const double *scale, const double *sumsq,
385  double *value,
386  plasma_sequence_t *sequence,
387  plasma_request_t *request);
388 
389 void core_omp_dlacpy(plasma_enum_t uplo, plasma_enum_t transa,
390  int m, int n,
391  const double *A, int lda,
392  double *B, int ldb,
393  plasma_sequence_t *sequence, plasma_request_t *request);
394 
395 void core_omp_dlacpy_lapack2tile_band(plasma_enum_t uplo,
396  int it, int jt,
397  int m, int n, int nb, int kl, int ku,
398  const double *A, int lda,
399  double *B, int ldb);
400 
401 void core_omp_dlacpy_tile2lapack_band(plasma_enum_t uplo,
402  int it, int jt,
403  int m, int n, int nb, int kl, int ku,
404  const double *B, int ldb,
405  double *A, int lda);
406 
407 void core_omp_dlange(plasma_enum_t norm,
408  int m, int n,
409  const double *A, int lda,
410  double *work, double *result,
411  plasma_sequence_t *sequence, plasma_request_t *request);
412 
413 void core_omp_dlange_aux(plasma_enum_t norm,
414  int m, int n,
415  const double *A, int lda,
416  double *value,
417  plasma_sequence_t *sequence,
418  plasma_request_t *request);
419 
420 void core_omp_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
421  int n,
422  const double *A, int lda,
423  double *work, double *value,
424  plasma_sequence_t *sequence, plasma_request_t *request);
425 
426 void core_omp_dlansy_aux(plasma_enum_t norm, plasma_enum_t uplo,
427  int n,
428  const double *A, int lda,
429  double *value,
430  plasma_sequence_t *sequence,
431  plasma_request_t *request);
432 
433 void core_omp_dlansy(plasma_enum_t norm, plasma_enum_t uplo,
434  int n,
435  const double *A, int lda,
436  double *work, double *value,
437  plasma_sequence_t *sequence, plasma_request_t *request);
438 
439 void core_omp_dlansy_aux(plasma_enum_t norm, plasma_enum_t uplo,
440  int n,
441  const double *A, int lda,
442  double *value,
443  plasma_sequence_t *sequence,
444  plasma_request_t *request);
445 
446 void core_omp_dlantr(plasma_enum_t norm, plasma_enum_t uplo, plasma_enum_t diag,
447  int m, int n,
448  const double *A, int lda,
449  double *work, double *value,
450  plasma_sequence_t *sequence, plasma_request_t *request);
451 
452 void core_omp_dlantr_aux(plasma_enum_t norm, plasma_enum_t uplo,
453  plasma_enum_t diag,
454  int m, int n,
455  const double *A, int lda,
456  double *value,
457  plasma_sequence_t *sequence,
458  plasma_request_t *request);
459 
460 void core_omp_dlascl(plasma_enum_t uplo,
461  double cfrom, double cto,
462  int m, int n,
463  double *A, int lda,
464  plasma_sequence_t *sequence, plasma_request_t *request);
465 
466 void core_omp_dlaset(plasma_enum_t uplo,
467  int mb, int nb,
468  int i, int j,
469  int m, int n,
470  double alpha, double beta,
471  double *A);
472 
473 void core_omp_dlauum(plasma_enum_t uplo,
474  int n,
475  double *A, int lda,
476  plasma_sequence_t *sequence, plasma_request_t *request);
477 
478 void core_omp_dpotrf(plasma_enum_t uplo,
479  int n,
480  double *A, int lda,
481  int iinfo,
482  plasma_sequence_t *sequence, plasma_request_t *request);
483 
484 void core_omp_dsymm(
485  plasma_enum_t side, plasma_enum_t uplo,
486  int m, int n,
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);
491 
492 void core_omp_dsyr2k(
493  plasma_enum_t uplo, plasma_enum_t trans,
494  int n, int k,
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);
499 
500 void core_omp_dsyrk(
501  plasma_enum_t uplo, plasma_enum_t trans,
502  int n, int k,
503  double alpha, const double *A, int lda,
504  double beta, double *C, int ldc,
505  plasma_sequence_t *sequence, plasma_request_t *request);
506 
507 void core_omp_dtradd(
508  plasma_enum_t uplo, plasma_enum_t transa,
509  int m, int n,
510  double alpha, const double *A, int lda,
511  double beta, double *B, int ldb,
512  plasma_sequence_t *sequence, plasma_request_t *request);
513 
514 void core_omp_dtrmm(
515  plasma_enum_t side, plasma_enum_t uplo,
516  plasma_enum_t transa, plasma_enum_t diag,
517  int m, int n,
518  double alpha, const double *A, int lda,
519  double *B, int ldb,
520  plasma_sequence_t *sequence, plasma_request_t *request);
521 
522 void core_omp_dtrsm(
523  plasma_enum_t side, plasma_enum_t uplo,
524  plasma_enum_t transa, plasma_enum_t diag,
525  int m, int n,
526  double alpha, const double *A, int lda,
527  double *B, int ldb,
528  plasma_sequence_t *sequence, plasma_request_t *request);
529 
530 void core_omp_dtrssq(plasma_enum_t uplo, plasma_enum_t diag,
531  int m, int n,
532  const double *A, int lda,
533  double *scale, double *sumsq,
534  plasma_sequence_t *sequence, plasma_request_t *request);
535 
536 void core_omp_dtrtri(plasma_enum_t uplo, plasma_enum_t diag,
537  int n,
538  double *A, int lda,
539  int iinfo,
540  plasma_sequence_t *sequence, plasma_request_t *request);
541 
542 void core_omp_dtslqt(int m, int n, int ib,
543  double *A1, int lda1,
544  double *A2, int lda2,
545  double *T, int ldt,
546  plasma_workspace_t work,
547  plasma_sequence_t *sequence, plasma_request_t *request);
548 
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);
557 
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);
566 
567 void core_omp_dtsqrt(int m, int n, int ib,
568  double *A1, int lda1,
569  double *A2, int lda2,
570  double *T, int ldt,
571  plasma_workspace_t work,
572  plasma_sequence_t *sequence, plasma_request_t *request);
573 
574 void core_omp_dttlqt(int m, int n, int ib,
575  double *A1, int lda1,
576  double *A2, int lda2,
577  double *T, int ldt,
578  plasma_workspace_t work,
579  plasma_sequence_t *sequence, plasma_request_t *request);
580 
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);
589 
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);
598 
599 void core_omp_dttqrt(int m, int n, int ib,
600  double *A1, int lda1,
601  double *A2, int lda2,
602  double *T, int ldt,
603  plasma_workspace_t work,
604  plasma_sequence_t *sequence, plasma_request_t *request);
605 
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,
610  double *C, int ldc,
611  plasma_workspace_t work,
612  plasma_sequence_t *sequence, plasma_request_t *request);
613 
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,
618  double *C, int ldc,
619  plasma_workspace_t work,
620  plasma_sequence_t *sequence, plasma_request_t *request);
621 
622 #undef REAL
623 
624 #ifdef __cplusplus
625 } // extern "C"
626 #endif
627 
628 #endif // ICL_CORE_BLAS_D_H
Definition: plasma_descriptor.h:40