PLASMA  2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
pzungqr.c
Go to the documentation of this file.
1 
17 #include "common.h"
18 
19 #define A(m,n) BLKADDR(A, PLASMA_Complex64_t, m, n)
20 #define Q(m,n) BLKADDR(Q, PLASMA_Complex64_t, m, n)
21 #define T(m,n) BLKADDR(T, PLASMA_Complex64_t, m, n)
22 /***************************************************************************/
26  PLASMA_sequence *sequence, PLASMA_request *request)
27 {
30 
31  int k, m, n;
32  int ldak, ldqk, ldam, ldqm;
33  int tempmm, tempnn, tempkmin, tempkm;
34  int tempAkm, tempAkn;
35  int ib;
36 
37  plasma = plasma_context_self();
38  if (sequence->status != PLASMA_SUCCESS)
39  return;
40  QUARK_Task_Flag_Set(&task_flags, TASK_SEQUENCE, (intptr_t)sequence->quark_sequence);
41 
42  ib = PLASMA_IB;
43  for (k = min(A.mt, A.nt)-1; k >= 0; k--) {
44  tempAkm = k == A.mt-1 ? A.m-k*A.mb : A.mb;
45  tempAkn = k == A.nt-1 ? A.n-k*A.nb : A.nb;
46  tempkmin = min( tempAkn, tempAkm );
47  tempkm = k == Q.mt-1 ? Q.m-k*Q.mb : Q.mb;
48  ldak = BLKLDD(A, k);
49  ldqk = BLKLDD(Q, k);
50  for (m = Q.mt - 1; m > k; m--) {
51  tempmm = m == Q.mt-1 ? Q.m-m*Q.mb : Q.mb;
52  ldam = BLKLDD(A, m);
53  ldqm = BLKLDD(Q, m);
54  for (n = 0; n < Q.nt; n++) {
55  tempnn = n == Q.nt-1 ? Q.n-n*Q.nb : Q.nb;
57  plasma->quark, &task_flags,
59  Q.mb, tempnn, tempmm, tempnn, tempAkn, ib, T.nb,
60  Q(k, n), ldqk,
61  Q(m, n), ldqm,
62  A(m, k), ldam,
63  T(m, k), T.mb);
64  }
65  }
66  for (n = 0; n < Q.nt; n++) {
67  tempnn = n == Q.nt-1 ? Q.n-n*Q.nb : Q.nb;
69  plasma->quark, &task_flags,
71  tempkm, tempnn, tempkmin, ib, T.nb,
72  A(k, k), ldak,
73  T(k, k), T.mb,
74  Q(k, n), ldqk);
75  }
76  }
77 }