Cyclops Tensor Framework
parallel arithmetic on multidimensional arrays
lapack_symbs.h
Go to the documentation of this file.
1 #ifndef __LAPACK_SYMBS__
2 #define __LAPACK_SYMBS__
3 #include <stdlib.h>
4 #include <complex>
5 #include <assert.h>
6 
7 namespace CTF_LAPACK{
8  void cdgelsd(int m, int n, int k, double const * A, int lda_A, double * B, int lda_B, double * S, double cond, int * rank, double * work, int lwork, int * iwork, int * info);
9 
10  void cdgeqrf(int M, int N, double * A, int LDA, double * TAU2, double * WORK, int LWORK, int * INFO);
11 
12  void cdormqr(char SIDE, char TRANS, int M, int N, int K, double const * A, int LDA, double const * TAU2, double * C, int LDC, double * WORK, int LWORK, int * INFO);
13 }
14 
15 namespace CTF_SCALAPACK {
16  template <typename dtype>
17  void pgesvd(char JOBU,
18  char JOBVT,
19  int M,
20  int N,
21  dtype * A,
22  int IA,
23  int JA,
24  int * DESCA,
25  dtype * S,
26  dtype * U,
27  int IU,
28  int JU,
29  int * DESCU,
30  dtype * VT,
31  int IVT,
32  int JVT,
33  int * DESCVT,
34  dtype * WORK,
35  int LWORK,
36  int * info) {
37  assert(0);
38  }
39 
40  template <typename dtype>
41  void pgeqrf(int M,
42  int N,
43  dtype * A,
44  int IA,
45  int JA,
46  int const * DESCA,
47  dtype * TAU2,
48  dtype * WORK,
49  int LWORK,
50  int * INFO){
51  assert(0);
52  }
53 
54  template <>
55  void pgeqrf<float>(int M,
56  int N,
57  float * A,
58  int IA,
59  int JA,
60  int const * DESCA,
61  float * TAU2,
62  float * WORK,
63  int LWORK,
64  int * INFO);
65  template <>
66  void pgeqrf<double>(int M,
67  int N,
68  double * A,
69  int IA,
70  int JA,
71  int const * DESCA,
72  double * TAU2,
73  double * WORK,
74  int LWORK,
75  int * INFO);
76  template <>
77  void pgeqrf< std::complex<float> >(int M,
78  int N,
79  std::complex<float> * A,
80  int IA,
81  int JA,
82  int const * DESCA,
83  std::complex<float> * TAU2,
84  std::complex<float> * WORK,
85  int LWORK,
86  int * INFO);
87  template <>
88  void pgeqrf< std::complex<double> >(int M,
89  int N,
90  std::complex<double> * A,
91  int IA,
92  int JA,
93  int const * DESCA,
94  std::complex<double> * TAU2,
95  std::complex<double> * WORK,
96  int LWORK,
97  int * INFO);
98  template <>
99  void pgesvd<float>(char JOBU,
100  char JOBVT,
101  int M,
102  int N,
103  float * A,
104  int IA,
105  int JA,
106  int * DESCA,
107  float * S,
108  float * U,
109  int IU,
110  int JU,
111  int * DESCU,
112  float * VT,
113  int IVT,
114  int JVT,
115  int * DESCVT,
116  float * WORK,
117  int LWORK,
118  int * info);
119 
120  template <>
121  void pgesvd<float>(char JOBU,
122  char JOBVT,
123  int M,
124  int N,
125  float * A,
126  int IA,
127  int JA,
128  int * DESCA,
129  float * S,
130  float * U,
131  int IU,
132  int JU,
133  int * DESCU,
134  float * VT,
135  int IVT,
136  int JVT,
137  int * DESCVT,
138  float * WORK,
139  int LWORK,
140  int * info);
141  template <>
142  void pgesvd<double>(char JOBU,
143  char JOBVT,
144  int M,
145  int N,
146  double * A,
147  int IA,
148  int JA,
149  int * DESCA,
150  double * S,
151  double * U,
152  int IU,
153  int JU,
154  int * DESCU,
155  double * VT,
156  int IVT,
157  int JVT,
158  int * DESCVT,
159  double * WORK,
160  int LWORK,
161  int * info);
162 
163  template <>
164  void pgesvd< std::complex<float> >(char JOBU,
165  char JOBVT,
166  int M,
167  int N,
168  std::complex<float> * A,
169  int IA,
170  int JA,
171  int * DESCA,
172  std::complex<float> * cS,
173  std::complex<float> * U,
174  int IU,
175  int JU,
176  int * DESCU,
177  std::complex<float> * VT,
178  int IVT,
179  int JVT,
180  int * DESCVT,
181  std::complex<float> * WORK,
182  int LWORK,
183  int * info);
184 
185 
186  template <>
187  void pgesvd< std::complex<double> >(char JOBU,
188  char JOBVT,
189  int M,
190  int N,
191  std::complex<double> * A,
192  int IA,
193  int JA,
194  int * DESCA,
195  std::complex<double> * cS,
196  std::complex<double> * U,
197  int IU,
198  int JU,
199  int * DESCU,
200  std::complex<double> * VT,
201  int IVT,
202  int JVT,
203  int * DESCVT,
204  std::complex<double> * WORK,
205  int LWORK,
206  int * info);
207 
208  template <typename dtype>
209  void porgqr(int M,
210  int N,
211  int K,
212  dtype * A,
213  int IA,
214  int JA,
215  int const * DESCA,
216  dtype * TAU2,
217  dtype * WORK,
218  int LWORK,
219  int * INFO){
220  assert(0); // PORGQR not defined for this type
221  }
222 
223  template <>
224  void porgqr<float>(int M,
225  int N,
226  int K,
227  float * A,
228  int IA,
229  int JA,
230  int const * DESCA,
231  float * TAU2,
232  float * WORK,
233  int LWORK,
234  int * INFO);
235 
236  template <>
237  void porgqr<double>(int M,
238  int N,
239  int K,
240  double * A,
241  int IA,
242  int JA,
243  int const * DESCA,
244  double * TAU2,
245  double * WORK,
246  int LWORK,
247  int * INFO);
248 
249  template <>
250  void porgqr< std::complex<float> >(int M,
251  int N,
252  int K,
253  std::complex<float> * A,
254  int IA,
255  int JA,
256  int const * DESCA,
257  std::complex<float> * TAU2,
258  std::complex<float> * WORK,
259  int LWORK,
260  int * INFO);
261 
262 
263  template <>
264  void porgqr< std::complex<double> >(int M,
265  int N,
266  int K,
267  std::complex<double> * A,
268  int IA,
269  int JA,
270  int const * DESCA,
271  std::complex<double> * TAU2,
272  std::complex<double> * WORK,
273  int LWORK,
274  int * INFO);
275 
276  void cdescinit( int * desc,
277  int m,
278  int n,
279  int mb,
280  int nb,
281  int irsrc,
282  int icsrc,
283  int ictxt,
284  int LLD,
285  int * info);
286 
287  void cblacs_pinfo(int * mypnum, int * nprocs);
288 
289  void cblacs_get(int contxt, int what, int * val);
290 
291  void cblacs_gridinit(int * contxt, char * row, int nprow, int npcol);
292 
293  void cblacs_gridinfo(int contxt, int * nprow, int * npcol, int * myprow, int * mypcol);
294 
295  void cblacs_gridmap(int * contxt, int * usermap, int ldup, int nprow0, int npcol0);
296 
297  void cblacs_barrier(int contxt, char * scope);
298 
299  void cblacs_gridexit(int contxt);
300 }
301 #endif
302 
void pgeqrf< double >(int M, int N, double *A, int IA, int JA, int const *DESCA, double *TAU2, double *WORK, int LWORK, int *INFO)
void pgeqrf(int M, int N, dtype *A, int IA, int JA, int const *DESCA, dtype *TAU2, dtype *WORK, int LWORK, int *INFO)
Definition: lapack_symbs.h:41
void cblacs_get(int contxt, int what, int *val)
void pgesvd< float >(char JOBU, char JOBVT, int M, int N, float *A, int IA, int JA, int *DESCA, float *S, float *U, int IU, int JU, int *DESCU, float *VT, int IVT, int JVT, int *DESCVT, float *WORK, int LWORK, int *info)
void cblacs_pinfo(int *mypnum, int *nprocs)
def rank(self)
Definition: core.pyx:312
void pgesvd(char JOBU, char JOBVT, int M, int N, dtype *A, int IA, int JA, int *DESCA, dtype *S, dtype *U, int IU, int JU, int *DESCU, dtype *VT, int IVT, int JVT, int *DESCVT, dtype *WORK, int LWORK, int *info)
Definition: lapack_symbs.h:17
void porgqr< double >(int M, int N, int K, double *A, int IA, int JA, int const *DESCA, double *TAU2, double *WORK, int LWORK, int *INFO)
void cblacs_gridinit(int *contxt, char *row, int nprow, int npcol)
void cdormqr(char SIDE, char TRANS, int M, int N, int K, double const *A, int LDA, double const *TAU2, double *C, int LDC, double *WORK, int LWORK, int *INFO)
void cdgeqrf(int M, int N, double *A, int LDA, double *TAU2, double *WORK, int LWORK, int *INFO)
void cblacs_gridexit(int contxt)
void pgeqrf< float >(int M, int N, float *A, int IA, int JA, int const *DESCA, float *TAU2, float *WORK, int LWORK, int *INFO)
void porgqr< float >(int M, int N, int K, float *A, int IA, int JA, int const *DESCA, float *TAU2, float *WORK, int LWORK, int *INFO)
void cdgelsd(int m, int n, int k, double const *A, int lda_A, double *B, int lda_B, double *S, double cond, int *rank, double *work, int lwork, int *iwork, int *info)
void pgesvd< double >(char JOBU, char JOBVT, int M, int N, double *A, int IA, int JA, int *DESCA, double *S, double *U, int IU, int JU, int *DESCU, double *VT, int IVT, int JVT, int *DESCVT, double *WORK, int LWORK, int *info)
void cdescinit(int *desc, int m, int n, int mb, int nb, int irsrc, int icsrc, int ictxt, int LLD, int *info)
void cblacs_gridmap(int *contxt, int *usermap, int ldup, int nprow0, int npcol0)
void cblacs_gridinfo(int contxt, int *nprow, int *npcol, int *myprow, int *mypcol)
void cblacs_barrier(int contxt, char *scope)
void porgqr(int M, int N, int K, dtype *A, int IA, int JA, int const *DESCA, dtype *TAU2, dtype *WORK, int LWORK, int *INFO)
Definition: lapack_symbs.h:209