MAGMA  1.2.0
MatrixAlgebraonGPUandMulticoreArchitectures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
pztile.c
Go to the documentation of this file.
1 
16 #include "common.h"
17 
18 #define AF77(m, n) &(Af77[ ((int64_t)A.nb*(int64_t)lda*(int64_t)(n)) + (int64_t)(A.mb*(m)) ])
19 
20 #undef BLKADDR
21 #define BLKADDR(A, type, m, n) (type *)magma_getaddr(A, m, n)
22 #define ABDL(m, n) BLKADDR(dA, PLASMA_Complex64_t, m, n)
23 
24 void CORE_ztile_zero(int X1, int X2, int Y1, int Y2,
25  PLASMA_Complex64_t *A, int lda);
26 
27 /***************************************************************************/
30 void magma_pzlapack_to_tile(PLASMA_Complex64_t *Af77, int lda, magma_desc_t *dA,
31  magma_sequence_t *sequence, magma_request_t *request)
32 {
33  PLASMA_Complex64_t *f77;
34  PLASMA_Complex64_t *bdl;
35  PLASMA_desc A = dA->desc;
37  int X1, Y1;
38  int X2, Y2;
39  int n, m, ldt;
40 
41  magma = magma_context_self();
42  if (sequence->status != MAGMA_SUCCESS)
43  return;
44 
45  for (m = 0; m < A.mt; m++)
46  {
47  ldt = BLKLDD(dA, m);
48  for (n = 0; n < A.nt; n++)
49  {
50  X1 = n == 0 ? A.j%A.nb : 0;
51  Y1 = m == 0 ? A.i%A.mb : 0;
52  X2 = n == A.nt-1 ? (A.j+A.n-1)%A.nb+1 : A.nb;
53  Y2 = m == A.mt-1 ? (A.i+A.m-1)%A.mb+1 : A.mb;
54 
55  f77 = AF77(m, n);
56  bdl = ABDL(m, n);
57  CORE_zlacpy(
58  PlasmaUpperLower, (Y2-Y1), (X2-X1),
59  &(f77[X1*lda+Y1]), lda,
60  &(bdl[X1*lda+Y1]), ldt);
61  }
62  }
63 }
64 
65 /***************************************************************************/
68 void magma_pztile_to_lapack(magma_desc_t *dA, PLASMA_Complex64_t *Af77, int lda,
69  magma_sequence_t *sequence, magma_request_t *request)
70 {
71  PLASMA_Complex64_t *f77;
72  PLASMA_Complex64_t *bdl;
73  PLASMA_desc A = dA->desc;
75  int X1, Y1;
76  int X2, Y2;
77  int n, m, ldt;
78 
79  magma = magma_context_self();
80  if (sequence->status != MAGMA_SUCCESS)
81  return;
82 
83  for (m = 0; m < A.mt; m++)
84  {
85  ldt = BLKLDD(dA, m);
86  for (n = 0; n < A.nt; n++)
87  {
88  X1 = n == 0 ? A.j%A.nb : 0;
89  Y1 = m == 0 ? A.i%A.mb : 0;
90  X2 = n == A.nt-1 ? (A.j+A.n-1)%A.nb+1 : A.nb;
91  Y2 = m == A.mt-1 ? (A.i+A.m-1)%A.mb+1 : A.mb;
92 
93  f77 = AF77(m, n);
94  bdl = ABDL(m, n);
95  CORE_zlacpy(
96  PlasmaUpperLower, (Y2-Y1), (X2-X1),
97  &(bdl[X1*lda+Y1]), ldt,
98  &(f77[X1*lda+Y1]), lda);
99  }
100  }
101 }
102 
103 /***************************************************************************/
107 {
108  PLASMA_Complex64_t *bdl;
109  PLASMA_desc A = dA->desc;
111  int X1, Y1;
112  int X2, Y2;
113  int n, m, ldt;
114 
115  magma = magma_context_self();
116  if (sequence->status != MAGMA_SUCCESS)
117  return;
118 
119  for (m = 0; m < A.mt; m++)
120  {
121  ldt = BLKLDD(dA, m);
122  for (n = 0; n < A.nt; n++)
123  {
124  X1 = n == 0 ? A.j%A.nb : 0;
125  Y1 = m == 0 ? A.i%A.mb : 0;
126  X2 = n == A.nt-1 ? (A.j+A.n-1)%A.nb+1 : A.nb;
127  Y2 = m == A.mt-1 ? (A.i+A.m-1)%A.mb+1 : A.mb;
128 
129  bdl = ABDL(m, n);
130 
131  CORE_ztile_zero(X1, X2, Y1, Y2, bdl, ldt);
132  }
133  }
134 }
135 
136 /***************************************************************************/
139 void CORE_ztile_zero(int X1, int X2, int Y1, int Y2,
140  PLASMA_Complex64_t *A, int lda)
141 {
142  int x, y;
143 
144  for (x = X1; x < X2; x++)
145  for (y = Y1; y < Y2; y++)
146  A[lda*x+y] = 0.0;
147 }