MAGMA  1.2.0
MatrixAlgebraonGPUandMulticoreArchitectures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
magma_zf77.cpp
Go to the documentation of this file.
1 /*
2  -- MAGMA (version 1.2.0) --
3  Univ. of Tennessee, Knoxville
4  Univ. of California, Berkeley
5  Univ. of Colorado, Denver
6  May 2012
7 
8  @precisions normal z -> s d c
9 
10 */
11 
12 #include <ctype.h>
13 #include <stdio.h>
14 #include <string.h>
15 #include <stddef.h>
16 #include <stdlib.h>
17 #if defined(__GNUC__)
18 #include <stdint.h>
19 #endif /* __GNUC__ */
20 #include <cuda.h>
21 #include <cuda_runtime_api.h>
22 #include <cublas.h>
23 #include "magma.h"
24 
25 /*
26  * typedef comming from fortran.h file provided in $CUDADIR/src directory
27  * it will probably change with future release of cublas when they will use 64bits address
28  */
29 typedef size_t devptr_t;
30 
31 #define PRECISION_z
32 
33 #ifdef PGI_FORTRAN
34 #define DEVPTR(__ptr) ((cuDoubleComplex*)(__ptr))
35 #else
36 #define DEVPTR(__ptr) ((cuDoubleComplex*)(uintptr_t)(*(__ptr)))
37 #endif
38 
39 
40 #ifndef MAGMA_FORTRAN_NAME
41 #if defined(ADD_)
42 #define MAGMA_FORTRAN_NAME(lcname, UCNAME) magmaf_##lcname##_
43 #elif defined(NOCHANGE)
44 #define MAGMA_FORTRAN_NAME(lcname, UCNAME) magmaf_##lcname
45 #elif defined(UPCASE)
46 #define MAGMA_FORTRAN_NAME(lcname, UCNAME) MAGMAF_##UCNAME
47 #endif
48 #endif
49 
50 #ifndef MAGMA_GPU_FORTRAN_NAME
51 #if defined(ADD_)
52 #define MAGMA_GPU_FORTRAN_NAME(lcname, UCNAME) magmaf_##lcname##_gpu_
53 #elif defined(NOCHANGE)
54 #define MAGMA_GPU_FORTRAN_NAME(lcname, UCNAME) magmaf_##lcname##_gpu
55 #elif defined(UPCASE)
56 #define MAGMA_GPU_FORTRAN_NAME(lcname, UCNAME) MAGMAF_##UCNAME##_GPU
57 #endif
58 #endif
59 
60 /* ////////////////////////////////////////////////////////////////////////////
61  -- MAGMA function definitions / Data on CPU
62 */
63 #define MAGMAF_ZGEBRD MAGMA_FORTRAN_NAME(zgebrd, ZGEBRD )
64 #define MAGMAF_ZGEHRD2 MAGMA_FORTRAN_NAME(zgehrd2, ZGEHRD2)
65 #define MAGMAF_ZGEHRD MAGMA_FORTRAN_NAME(zgehrd, ZGEHRD )
66 #define MAGMAF_ZGELQF MAGMA_FORTRAN_NAME(zgelqf, ZGELQF )
67 #define MAGMAF_ZGEQLF MAGMA_FORTRAN_NAME(zgeqlf, ZGEQLF )
68 #define MAGMAF_ZGEQRF MAGMA_FORTRAN_NAME(zgeqrf, ZGEQRF )
69 #define MAGMAF_ZGESV MAGMA_FORTRAN_NAME(zgesv, ZGESV )
70 #define MAGMAF_ZGETRF MAGMA_FORTRAN_NAME(zgetrf, ZGETRF )
71 #define MAGMAF_ZLATRD MAGMA_FORTRAN_NAME(zlatrd, ZLATRD )
72 #define MAGMAF_ZLAHR2 MAGMA_FORTRAN_NAME(zlahr2, ZLAHR2 )
73 #define MAGMAF_ZLAHRU MAGMA_FORTRAN_NAME(zlahru, ZLAHRU )
74 #define MAGMAF_ZPOSV MAGMA_FORTRAN_NAME(zposv, ZPOSV )
75 #define MAGMAF_ZPOTRF MAGMA_FORTRAN_NAME(zpotrf, ZPOTRF )
76 #define MAGMAF_ZHETRD MAGMA_FORTRAN_NAME(zhetrd, ZHETRD )
77 #define MAGMAF_ZUNGQR MAGMA_FORTRAN_NAME(zungqr, ZUNGQR )
78 #define MAGMAF_ZUNMQR MAGMA_FORTRAN_NAME(zunmqr, ZUNMQR )
79 #define MAGMAF_ZUNMTR MAGMA_FORTRAN_NAME(zunmtr, ZUNMTR )
80 #define MAGMAF_ZUNGHR MAGMA_FORTRAN_NAME(zunghr, ZUNGHR )
81 #define MAGMAF_ZGEEV MAGMA_FORTRAN_NAME(zgeev, ZGEEV )
82 #define MAGMAF_ZGESVD MAGMA_FORTRAN_NAME(zgesvd, ZGESVD )
83 #define MAGMAF_ZHEEVD MAGMA_FORTRAN_NAME(zheevd, ZHEEVD )
84 #define MAGMAF_ZHEGVD MAGMA_FORTRAN_NAME(zhegvd, ZHEGVD )
85 
86 /* ////////////////////////////////////////////////////////////////////////////
87  -- MAGMA function definitions / Data on GPU
88 */
89 #define MAGMAF_ZGELS_GPU MAGMA_GPU_FORTRAN_NAME(zgels, ZGELS )
90 #define MAGMAF_ZGEQRF_GPU MAGMA_GPU_FORTRAN_NAME(zgeqrf, ZGEQRF )
91 #define MAGMAF_ZGEQRF2_GPU MAGMA_GPU_FORTRAN_NAME(zgeqrf2, ZGEQRF2)
92 #define MAGMAF_ZGEQRF3_GPU MAGMA_GPU_FORTRAN_NAME(zgeqrf3, ZGEQRF3)
93 #define MAGMAF_ZGEQRS_GPU MAGMA_GPU_FORTRAN_NAME(zgeqrs, ZGEQRS )
94 #define MAGMAF_ZGEQRS3_GPU MAGMA_GPU_FORTRAN_NAME(zgeqrs3, ZGEQRS3)
95 #define MAGMAF_ZGESSM_GPU MAGMA_GPU_FORTRAN_NAME(zgessm, ZGESSM )
96 #define MAGMAF_ZGESV_GPU MAGMA_GPU_FORTRAN_NAME(zgesv, ZGESV )
97 #define MAGMAF_ZGETRL_GPU MAGMA_GPU_FORTRAN_NAME(zgetrl, ZGETRL )
98 #define MAGMAF_ZGETRF_GPU MAGMA_GPU_FORTRAN_NAME(zgetrf, ZGETRF )
99 #define MAGMAF_ZGETRS_GPU MAGMA_GPU_FORTRAN_NAME(zgetrs, ZGETRS )
100 #define MAGMAF_ZLABRD_GPU MAGMA_GPU_FORTRAN_NAME(zlabrd, ZLABRD )
101 #define MAGMAF_ZLARFB_GPU MAGMA_GPU_FORTRAN_NAME(zlarfb, ZLARFB )
102 #define MAGMAF_ZPOSV_GPU MAGMA_GPU_FORTRAN_NAME(zposv, ZPOSV )
103 #define MAGMAF_ZPOTRF_GPU MAGMA_GPU_FORTRAN_NAME(zpotrf, ZPOTRF )
104 #define MAGMAF_ZPOTRS_GPU MAGMA_GPU_FORTRAN_NAME(zpotrs, ZPOTRS )
105 #define MAGMAF_ZSSSSM_GPU MAGMA_GPU_FORTRAN_NAME(zssssm, ZSSSSM )
106 #define MAGMAF_ZTSTRF_GPU MAGMA_GPU_FORTRAN_NAME(ztstrf, ZTSTRF )
107 #define MAGMAF_ZUNGQR_GPU MAGMA_GPU_FORTRAN_NAME(zungqr, ZUNGQR )
108 #define MAGMAF_ZUNMQR_GPU MAGMA_GPU_FORTRAN_NAME(zunmqr, ZUNMQR )
109 
110 #ifdef __cplusplus
111 extern "C" {
112 #endif
113 
114 /***************************************************************************/
118 /* ////////////////////////////////////////////////////////////////////////////
119  -- MAGMA function definitions / Data on CPU
120 */
121 void MAGMAF_ZGEBRD( magma_int_t *m, magma_int_t *n, cuDoubleComplex *A,
122  magma_int_t *lda, double *d, double *e,
123  cuDoubleComplex *tauq, cuDoubleComplex *taup,
124  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info)
125 {
126  magma_zgebrd( *m, *n, A,
127  *lda, d, e,
128  tauq, taup,
129  work, *lwork, info);
130 }
131 
133  cuDoubleComplex *A, magma_int_t *lda, cuDoubleComplex *tau,
134  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info)
135 {
136  magma_zgehrd2(*n, *ilo, *ihi,
137  A, *lda, tau,
138  work, lwork, info);
139 }
140 
142  cuDoubleComplex *A, magma_int_t *lda, cuDoubleComplex *tau,
143  cuDoubleComplex *work, magma_int_t *lwork,
144  cuDoubleComplex *d_T, magma_int_t *info)
145 {
146  magma_zgehrd( *n, *ilo, *ihi,
147  A, *lda, tau,
148  work, *lwork,
149  d_T, info);
150 }
151 
153  cuDoubleComplex *A, magma_int_t *lda, cuDoubleComplex *tau,
154  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info)
155 {
156  magma_zgelqf( *m, *n,
157  A, *lda, tau,
158  work, *lwork, info);
159 }
160 
162  cuDoubleComplex *A, magma_int_t *lda, cuDoubleComplex *tau,
163  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info)
164 {
165  magma_zgeqlf( *m, *n,
166  A, *lda, tau,
167  work, *lwork, info);
168 }
169 
170 void MAGMAF_ZGEQRF( magma_int_t *m, magma_int_t *n, cuDoubleComplex *A,
171  magma_int_t *lda, cuDoubleComplex *tau, cuDoubleComplex *work,
172  magma_int_t *lwork, magma_int_t *info)
173 {
174  magma_zgeqrf( *m, *n, A,
175  *lda, tau, work,
176  *lwork, info);
177 }
178 
180  cuDoubleComplex *A, magma_int_t *lda, magma_int_t *ipiv,
181  cuDoubleComplex *B, magma_int_t *ldb, magma_int_t *info)
182 {
183  magma_zgesv( *n, *nrhs,
184  A, *lda, ipiv,
185  B, *ldb,
186  info);
187 }
188 
189 void MAGMAF_ZGETRF( magma_int_t *m, magma_int_t *n, cuDoubleComplex *A,
190  magma_int_t *lda, magma_int_t *ipiv,
191  magma_int_t *info)
192 {
193  magma_zgetrf( *m, *n, A,
194  *lda, ipiv,
195  info);
196 }
197 
198 // void MAGMAF_ZLATRD( char *uplo, magma_int_t *n, magma_int_t *nb, cuDoubleComplex *a,
199 // magma_int_t *lda, double *e, cuDoubleComplex *tau,
200 // cuDoubleComplex *w, magma_int_t *ldw,
201 // cuDoubleComplex *da, magma_int_t *ldda,
202 // cuDoubleComplex *dw, magma_int_t *lddw)
203 // {
204 // magma_zlatrd( uplo[0], *n, *nb, a,
205 // *lda, e, tau,
206 // w, *ldw,
207 // da, *ldda,
208 // dw, *lddw);
209 // }
210 
211  /* This has nothing to do here, it should be a GPU function */
212 // void MAGMAF_ZLAHR2( magma_int_t *m, magma_int_t *n, magma_int_t *nb,
213 // cuDoubleComplex *da, cuDoubleComplex *dv, cuDoubleComplex *a,
214 // magma_int_t *lda, cuDoubleComplex *tau, cuDoubleComplex *t,
215 // magma_int_t *ldt, cuDoubleComplex *y, magma_int_t *ldy)
216 // {
217 // magma_zlahr2( *m, *n, *nb,
218 // da, dv, a,
219 // *lda, tau, t,
220 // *ldt, y, *ldy);
221 // }
222 
223 // void MAGMAF_ZLAHRU( magma_int_t *m, magma_int_t *n, magma_int_t *nb,
224 // cuDoubleComplex *a, magma_int_t *lda,
225 // cuDoubleComplex *da, cuDoubleComplex *y,
226 // cuDoubleComplex *v, cuDoubleComplex *t,
227 // cuDoubleComplex *dwork)
228 // {
229 // magma_zlahru( *m, *n, *nb,
230 // a, *lda,
231 // da, y,
232 // v, t,
233 // dwork);
234 // }
235 
236 void MAGMAF_ZPOSV( char *uplo, magma_int_t *n, magma_int_t *nrhs,
237  cuDoubleComplex *A, magma_int_t *lda,
238  cuDoubleComplex *B, magma_int_t *ldb, magma_int_t *info)
239 {
240  magma_zposv( uplo[0], *n, *nrhs,
241  A, *lda,
242  B, *ldb, info);
243 }
244 
245 void MAGMAF_ZPOTRF( char *uplo, magma_int_t *n, cuDoubleComplex *A,
246  magma_int_t *lda, magma_int_t *info)
247 {
248  magma_zpotrf( uplo[0], *n, A,
249  *lda, info);
250 }
251 
252 void MAGMAF_ZHETRD( char *uplo, magma_int_t *n, cuDoubleComplex *A,
253  magma_int_t *lda, double *d, double *e,
254  cuDoubleComplex *tau, cuDoubleComplex *work, magma_int_t *lwork,
255  magma_int_t *info)
256 {
257  magma_zhetrd( uplo[0], *n, A,
258  *lda, d, e,
259  tau, work, *lwork,
260  info);
261 }
262 
263 // void MAGMAF_ZUNGQR( magma_int_t *m, magma_int_t *n, magma_int_t *k,
264 // cuDoubleComplex *a, magma_int_t *lda,
265 // cuDoubleComplex *tau, cuDoubleComplex *dwork,
266 // magma_int_t *nb, magma_int_t *info )
267 // {
268 // magma_zungqr( *m, *n, *k,
269 // a, *lda,
270 // tau, dwork,
271 // *nb, info );
272 // }
273 
274 void MAGMAF_ZUNMQR( char *side, char *trans,
275  magma_int_t *m, magma_int_t *n, magma_int_t *k,
276  cuDoubleComplex *a, magma_int_t *lda, cuDoubleComplex *tau,
277  cuDoubleComplex *c, magma_int_t *ldc,
278  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info)
279 {
280  magma_zunmqr( side[0], trans[0],
281  *m, *n, *k,
282  a, *lda, tau,
283  c, *ldc,
284  work, *lwork, info);
285 }
286 
287 void MAGMAF_ZUNMTR( char *side, char *uplo, char *trans,
288  magma_int_t *m, magma_int_t *n,
289  cuDoubleComplex *a, magma_int_t *lda,
290  cuDoubleComplex *tau,
291  cuDoubleComplex *c, magma_int_t *ldc,
292  cuDoubleComplex *work, magma_int_t *lwork,
293  magma_int_t *info)
294 {
295  magma_zunmtr( side[0], uplo[0], trans[0],
296  *m, *n,
297  a, *lda,
298  tau,
299  c, *ldc,
300  work, *lwork,
301  info);
302 }
303 
304 // void MAGMAF_ZUNGHR( magma_int_t *n, magma_int_t *ilo, magma_int_t *ihi,
305 // cuDoubleComplex *a, magma_int_t *lda,
306 // cuDoubleComplex *tau,
307 // cuDoubleComplex *dT, magma_int_t *nb,
308 // magma_int_t *info)
309 // {
310 // magma_zunghr( *n, *ilo, *ihi,
311 // a, *lda,
312 // tau,
313 // dT, *nb,
314 // info);
315 // }
316 
317 #if defined(PRECISION_z) || defined(PRECISION_c)
318 void MAGMAF_ZGEEV( char *jobvl, char *jobvr, magma_int_t *n,
319  cuDoubleComplex *a, magma_int_t *lda,
320  cuDoubleComplex *w,
321  cuDoubleComplex *vl, magma_int_t *ldvl,
322  cuDoubleComplex *vr, magma_int_t *ldvr,
323  cuDoubleComplex *work, magma_int_t *lwork,
324  double *rwork, magma_int_t *info)
325 {
326  magma_zgeev( jobvl[0], jobvr[0], *n,
327  a, *lda,
328  w,
329  vl, *ldvl,
330  vr, *ldvr,
331  work, *lwork,
332  rwork, info);
333 }
334 
335 void MAGMAF_ZGESVD( char *jobu, char *jobvt, magma_int_t *m, magma_int_t *n,
336  cuDoubleComplex *a, magma_int_t *lda, double *s,
337  cuDoubleComplex *u, magma_int_t *ldu,
338  cuDoubleComplex *vt, magma_int_t *ldvt,
339  cuDoubleComplex *work, magma_int_t *lwork,
340  double *rwork, magma_int_t *info )
341 {
342  magma_zgesvd( jobu[0], jobvt[0], *m, *n,
343  a, *lda, s,
344  u, *ldu,
345  vt, *ldvt,
346  work, *lwork,
347  rwork, info );
348 }
349 
350 void MAGMAF_ZHEEVD( char *jobz, char *uplo, magma_int_t *n,
351  cuDoubleComplex *a, magma_int_t *lda, double *w,
352  cuDoubleComplex *work, magma_int_t *lwork,
353  double *rwork, magma_int_t *lrwork,
354  magma_int_t *iwork, magma_int_t *liwork, magma_int_t *info)
355 {
356  magma_zheevd( jobz[0], uplo[0], *n,
357  a, *lda, w,
358  work, *lwork,
359  rwork, *lrwork,
360  iwork, *liwork, info);
361 }
362 
363 void MAGMAF_ZHEGVD(magma_int_t *itype, char *jobz, char *uplo, magma_int_t *n,
364  cuDoubleComplex *a, magma_int_t *lda,
365  cuDoubleComplex *b, magma_int_t *ldb,
366  double *w, cuDoubleComplex *work, magma_int_t *lwork,
367  double *rwork, magma_int_t *lrwork,
368  magma_int_t *iwork, magma_int_t *liwork, magma_int_t *info)
369 {
370  magma_zhegvd( *itype, jobz[0], uplo[0], *n,
371  a, *lda, b, *ldb,
372  w, work, *lwork,
373  rwork, *lrwork,
374  iwork, *liwork, info);
375 }
376 
377 #else
378 void MAGMAF_ZGEEV( char *jobvl, char *jobvr, magma_int_t *n,
379  cuDoubleComplex *a, magma_int_t *lda,
380  cuDoubleComplex *wr, cuDoubleComplex *wi,
381  cuDoubleComplex *vl, magma_int_t *ldvl,
382  cuDoubleComplex *vr, magma_int_t *ldvr,
383  cuDoubleComplex *work, magma_int_t *lwork,
384  magma_int_t *info)
385 {
386  magma_zgeev( jobvl[0], jobvr[0], *n,
387  a, *lda,
388  wr, wi,
389  vl, *ldvl,
390  vr, *ldvr,
391  work, *lwork,
392  info);
393 }
394 
395 void MAGMAF_ZGESVD( char *jobu, char *jobvt, magma_int_t *m, magma_int_t *n,
396  cuDoubleComplex *a, magma_int_t *lda, double *s,
397  cuDoubleComplex *u, magma_int_t *ldu,
398  cuDoubleComplex *vt, magma_int_t *ldvt,
399  cuDoubleComplex *work, magma_int_t *lwork,
400  magma_int_t *info )
401 {
402  magma_zgesvd( jobu[0], jobvt[0], *m, *n,
403  a, *lda, s,
404  u, *ldu,
405  vt, *ldvt,
406  work, *lwork,
407  info );
408 }
409 
410 void MAGMAF_ZHEEVD( char *jobz, char *uplo, magma_int_t *n,
411  cuDoubleComplex *a, magma_int_t *lda, double *w,
412  cuDoubleComplex *work, magma_int_t *lwork,
413  magma_int_t *iwork, magma_int_t *liwork, magma_int_t *info)
414 {
415  magma_zheevd( jobz[0], uplo[0], *n,
416  a, *lda, w,
417  work, *lwork,
418  iwork, *liwork, info);
419 }
420 
421 void MAGMAF_ZHEGVD(magma_int_t *itype, char *jobz, char *uplo, magma_int_t *n,
422  cuDoubleComplex *a, magma_int_t *lda,
423  cuDoubleComplex *b, magma_int_t *ldb,
424  double *w, cuDoubleComplex *work, magma_int_t *lwork,
425  magma_int_t *iwork, magma_int_t *liwork, magma_int_t *info)
426 {
427  magma_zhegvd( *itype, jobz[0], uplo[0], *n,
428  a, *lda, b, *ldb,
429  w, work, *lwork,
430  iwork, *liwork, info);
431 }
432 
433 
434 #endif
435 
436 /* ////////////////////////////////////////////////////////////////////////////
437  -- MAGMA function definitions / Data on GPU
438 */
440  devptr_t *dA, magma_int_t *ldda,
441  devptr_t *dB, magma_int_t *lddb,
442  cuDoubleComplex *hwork, magma_int_t *lwork,
443  magma_int_t *info)
444 {
445  magma_zgels_gpu( trans[0], *m, *n, *nrhs,
446  DEVPTR(dA), *ldda,
447  DEVPTR(dB), *lddb,
448  hwork, *lwork, info);
449 }
450 
452  devptr_t *dA, magma_int_t *ldda,
453  cuDoubleComplex *tau, devptr_t *dT,
454  magma_int_t *info)
455 {
456  magma_zgeqrf_gpu( *m, *n,
457  DEVPTR(dA), *ldda,
458  tau,
459  DEVPTR(dT), info);
460 }
461 
463  devptr_t *dA, magma_int_t *ldda,
464  cuDoubleComplex *tau, magma_int_t *info)
465 {
466  magma_zgeqrf2_gpu(*m, *n,
467  DEVPTR(dA), *ldda,
468  tau, info);
469 }
470 
472  devptr_t *dA, magma_int_t *ldda,
473  cuDoubleComplex *tau, devptr_t *dT,
474  magma_int_t *info)
475 {
476  magma_zgeqrf3_gpu(*m, *n,
477  DEVPTR(dA), *ldda,
478  tau, DEVPTR(dT), info);
479 }
480 
482  devptr_t *dA, magma_int_t *ldda,
483  cuDoubleComplex *tau, devptr_t *dT,
484  devptr_t *dB, magma_int_t *lddb,
485  cuDoubleComplex *hwork, magma_int_t *lhwork,
486  magma_int_t *info)
487 {
488  magma_zgeqrs_gpu( *m, *n, *nrhs,
489  DEVPTR(dA), *ldda,
490  tau,
491  DEVPTR(dT),
492  DEVPTR(dB), *lddb,
493  hwork, *lhwork, info);
494 }
495 
497  devptr_t *dA, magma_int_t *ldda,
498  cuDoubleComplex *tau, devptr_t *dT,
499  devptr_t *dB, magma_int_t *lddb,
500  cuDoubleComplex *hwork, magma_int_t *lhwork,
501  magma_int_t *info)
502 {
503  magma_zgeqrs3_gpu(*m, *n, *nrhs,
504  DEVPTR(dA), *ldda,
505  tau,
506  DEVPTR(dT),
507  DEVPTR(dB), *lddb,
508  hwork, *lhwork, info);
509 }
510 
511 void MAGMAF_ZGESSM_GPU( char *storev, magma_int_t *m, magma_int_t *n, magma_int_t *k, magma_int_t *ib,
512  magma_int_t *ipiv,
513  devptr_t *dL1, magma_int_t *lddl1,
514  devptr_t *dL, magma_int_t *lddl,
515  devptr_t *dA, magma_int_t *ldda,
516  magma_int_t *info)
517 {
518  magma_zgessm_gpu( storev[0], *m, *n, *k, *ib, ipiv,
519  DEVPTR(dL1), *lddl1,
520  DEVPTR(dL), *lddl,
521  DEVPTR(dA), *ldda, info);
522 }
523 
525  devptr_t *dA, magma_int_t *ldda, magma_int_t *ipiv,
526  devptr_t *dB, magma_int_t *lddb, magma_int_t *info)
527 {
528  magma_zgesv_gpu( *n, *nrhs,
529  DEVPTR(dA), *ldda, ipiv,
530  DEVPTR(dB), *lddb, info);
531 }
532 
534  devptr_t *dA, magma_int_t *ldda,
535  magma_int_t *ipiv, magma_int_t *info)
536 {
537  magma_zgetrf_gpu( *m, *n,
538  DEVPTR(dA), *ldda, ipiv, info);
539 }
540 
542  devptr_t *dA, magma_int_t *ldda, magma_int_t *ipiv,
543  devptr_t *dB, magma_int_t *lddb, magma_int_t *info)
544 {
545  magma_zgetrs_gpu( trans[0], *n, *nrhs,
546  DEVPTR(dA), *ldda, ipiv,
547  DEVPTR(dB), *lddb, info);
548 }
549 
551  cuDoubleComplex *a, magma_int_t *lda, devptr_t *da, magma_int_t *ldda,
552  double *d, double *e, cuDoubleComplex *tauq, cuDoubleComplex *taup,
553  cuDoubleComplex *x, magma_int_t *ldx, devptr_t *dx, magma_int_t *lddx,
554  cuDoubleComplex *y, magma_int_t *ldy, devptr_t *dy, magma_int_t *lddy)
555 {
556  magma_zlabrd_gpu( *m, *n, *nb,
557  a, *lda, DEVPTR(da), *ldda,
558  d, e, tauq, taup,
559  x, *ldx, DEVPTR(dx), *lddx,
560  y, *ldy, DEVPTR(dy), *lddy);
561 }
562 
563 void MAGMAF_ZLARFB_GPU( char *side, char *trans, char *direct, char *storev,
565  devptr_t *dv, magma_int_t *ldv, devptr_t *dt, magma_int_t *ldt,
566  devptr_t *dc, magma_int_t *ldc, devptr_t *dowrk, magma_int_t *ldwork )
567 {
568  magma_zlarfb_gpu( side[0], trans[0], direct[0], storev[0], *m, *n, *k,
569  DEVPTR(dv), *ldv, DEVPTR(dt), *ldt,
570  DEVPTR(dc), *ldc, DEVPTR(dowrk), *ldwork);
571 }
572 
574  devptr_t *dA, magma_int_t *ldda,
575  devptr_t *dB, magma_int_t *lddb, magma_int_t *info)
576 {
577  magma_zposv_gpu( uplo[0], *n, *nrhs,
578  DEVPTR(dA), *ldda,
579  DEVPTR(dB), *lddb, info);
580 }
581 
583  devptr_t *dA, magma_int_t *ldda, magma_int_t *info)
584 {
585  magma_zpotrf_gpu( uplo[0], *n,
586  DEVPTR(dA), *ldda, info); }
587 
589  devptr_t *dA, magma_int_t *ldda,
590  devptr_t *dB, magma_int_t *lddb, magma_int_t *info)
591 {
592  magma_zpotrs_gpu( uplo[0], *n, *nrhs,
593  DEVPTR(dA), *ldda,
594  DEVPTR(dB), *lddb, info);
595 }
596 
597 void MAGMAF_ZSSSSM_GPU( char *storev, magma_int_t *m1, magma_int_t *n1,
598  magma_int_t *m2, magma_int_t *n2, magma_int_t *k, magma_int_t *ib,
599  devptr_t *dA1, magma_int_t *ldda1,
600  devptr_t *dA2, magma_int_t *ldda2,
601  devptr_t *dL1, magma_int_t *lddl1,
602  devptr_t *dL2, magma_int_t *lddl2,
603  magma_int_t *IPIV, magma_int_t *info)
604 {
605  magma_zssssm_gpu( storev[0], *m1, *n1, *m2, *n2, *k, *ib,
606  DEVPTR(dA1), *ldda1,
607  DEVPTR(dA2), *ldda2,
608  DEVPTR(dL1), *lddl1,
609  DEVPTR(dL2), *lddl2,
610  IPIV, info);
611 }
612 
614  devptr_t *da, magma_int_t *ldda,
615  cuDoubleComplex *tau, devptr_t *dwork,
616  magma_int_t *nb, magma_int_t *info )
617 {
618  magma_zungqr_gpu( *m, *n, *k,
619  DEVPTR(da), *ldda, tau,
620  DEVPTR(dwork), *nb, info );
621 }
622 
623 void MAGMAF_ZUNMQR_GPU( char *side, char *trans,
625  devptr_t *a, magma_int_t *lda, cuDoubleComplex *tau,
626  devptr_t *c, magma_int_t *ldc,
627  devptr_t *work, magma_int_t *lwork,
628  devptr_t *td, magma_int_t *nb, magma_int_t *info)
629 {
630  magma_zunmqr_gpu( side[0], trans[0], *m, *n, *k,
631  DEVPTR(a), *lda, tau,
632  DEVPTR(c), *ldc,
633  DEVPTR(work), *lwork,
634  DEVPTR(td), *nb, info);
635 }
636 
637 #ifdef __cplusplus
638 }
639 #endif