MAGMA  1.2.0
MatrixAlgebraonGPUandMulticoreArchitectures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
magma_sfortran.f90
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 ! @generated s Thu May 10 22:26:27 2012
9 !
10 
11 #define PRECISION_s
12 
14 
15  use magma_param, only: sizeof_real
16 
17  implicit none
18 
19  !---- Fortran interfaces to MAGMA subroutines ----
20  interface
21 
22  subroutine magmaf_sgetptr( m, n, A, lda, d, e,tauq, taup, work, lwork, info)
23  integer :: m
24  integer :: n
25  real :: a(*)
26  integer :: lda
27  real:: d(*)
28  real:: e(*)
29  real :: tauq(*)
30  real :: taup(*)
31  real :: work(*)
32  integer :: lwork
33  integer :: info
34  end subroutine magmaf_sgetptr
35 
36 
37  subroutine magmaf_sgebrd( m, n, A, lda, d, e,tauq, taup, work, lwork, info)
38  integer :: m
39  integer :: n
40  real :: a(*)
41  integer :: lda
42  real:: d(*)
43  real:: e(*)
44  real :: tauq(*)
45  real :: taup(*)
46  real :: work(*)
47  integer :: lwork
48  integer :: info
49  end subroutine magmaf_sgebrd
50 
51  subroutine magmaf_sgehrd2(n, ilo, ihi,A, lda, tau, work, lwork, info)
52  integer :: n
53  integer :: ilo
54  integer :: ihi
55  real :: a(*)
56  integer :: lda
57  real :: tau(*)
58  real :: work(*)
59  integer :: lwork
60  integer :: info
61  end subroutine magmaf_sgehrd2
62 
63  subroutine magmaf_sgehrd(n, ilo, ihi,A, lda, tau, work, lwork, d_T, info)
64  integer :: n
65  integer :: ilo
66  integer :: ihi
67  real :: a(*)
68  integer :: lda
69  real :: tau(*)
70  real :: work(*)
71  integer :: lwork
72  real :: d_t(*)
73  integer :: info
74  end subroutine magmaf_sgehrd
75 
76  subroutine magmaf_sgelqf( m, n, A, lda, tau, work, lwork, info)
77  integer :: m
78  integer :: n
79  real :: a(*)
80  integer :: lda
81  real :: tau(*)
82  real :: work(*)
83  integer :: lwork
84  integer :: info
85  end subroutine magmaf_sgelqf
86 
87  subroutine magmaf_sgeqlf( m, n, A, lda, tau, work, lwork, info)
88  integer :: m
89  integer :: n
90  real :: a(*)
91  integer :: lda
92  real :: tau(*)
93  real :: work(*)
94  integer :: lwork
95  integer :: info
96  end subroutine magmaf_sgeqlf
97 
98  subroutine magmaf_sgeqrf( m, n, A, lda, tau, work, lwork, info)
99  integer :: m
100  integer :: n
101  real :: a(*)
102  integer :: lda
103  real :: tau(*)
104  real :: work(*)
105  integer :: lwork
106  integer :: info
107  end subroutine magmaf_sgeqrf
108 
109  subroutine magmaf_sgesv( n, nrhs, A, lda, ipiv, B, ldb, info)
110  integer :: n
111  integer :: nrhs
112  real :: a
113  integer :: lda
114  integer :: ipiv(*)
115  real :: b
116  integer :: ldb
117  integer :: info
118  end subroutine magmaf_sgesv
119 
120  subroutine magmaf_sgetrf( m, n, A, lda, ipiv, info)
121  integer :: m
122  integer :: n
123  real :: a(*)
124  integer :: lda
125  integer :: ipiv(*)
126  integer :: info
127  end subroutine magmaf_sgetrf
128 
129  subroutine magmaf_sposv( uplo, n, nrhs, dA, ldda, dB, lddb, info)
130  character :: uplo
131  integer :: n
132  integer :: nrhs
133  magma_devptr_t:: da
134  integer :: ldda
135  magma_devptr_t:: db
136  integer :: lddb
137  integer :: info
138  end subroutine magmaf_sposv
139 
140  subroutine magmaf_spotrf( uplo, n, A, lda, info)
141  character :: uplo
142  integer :: n
143  real :: a(*)
144  integer :: lda
145  integer :: info
146  end subroutine magmaf_spotrf
147 
148  subroutine magmaf_ssytrd( uplo, n, A, lda, d, e, tau, work, lwork, info)
149  character :: uplo
150  integer :: n
151  real :: a(*)
152  integer :: lda
153  real:: d(*)
154  real:: e(*)
155  real :: tau(*)
156  real :: work(*)
157  integer :: lwork
158  integer :: info
159  end subroutine magmaf_ssytrd
160 
161  subroutine magmaf_sormqr( side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
162  character :: side
163  character :: trans
164  integer :: m
165  integer :: n
166  integer :: k
167  real :: a(*)
168  integer :: lda
169  real :: tau(*)
170  real :: c(*)
171  integer :: ldc
172  real :: work(*)
173  integer :: lwork
174  integer :: info
175  end subroutine magmaf_sormqr
176 
177  subroutine magmaf_sormtr( side, uplo, trans, m, n, a, lda,tau,c, ldc,work, lwork,info)
178  character :: side
179  character :: uplo
180  character :: trans
181  integer :: m
182  integer :: n
183  real :: a(*)
184  integer :: lda
185  real :: tau(*)
186  real :: c(*)
187  integer :: ldc
188  real :: work(*)
189  integer :: lwork
190  integer :: info
191  end subroutine magmaf_sormtr
192 #if defined(PRECISION_z) || defined(PRECISION_c)
193 
194  subroutine magmaf_sgeev( jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info)
195  character :: jobvl
196  character :: jobvr
197  integer :: n
198  real :: a(*)
199  integer :: lda
200  real :: w(*)
201  real :: vl(*)
202  integer :: ldvl
203  real :: vr(*)
204  integer :: ldvr
205  real :: work(*)
206  integer :: lwork
207  real:: rwork(*)
208  integer :: info
209  end subroutine magmaf_sgeev
210 
211  subroutine magmaf_sgesvd( jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info)
212  character :: jobu
213  character :: jobvt
214  integer :: m
215  integer :: n
216  real :: a(*)
217  integer :: lda
218  real:: s(*)
219  real :: u(*)
220  integer :: ldu
221  real :: vt(*)
222  integer :: ldvt
223  real :: work(*)
224  integer :: lwork
225  real:: rwork(*)
226  integer :: info
227  end subroutine magmaf_sgesvd
228 
229  subroutine magmaf_ssyevd( jobz, uplo, n, a, lda, w, work, lwork, rwork, lrwork, iwork, liwork, info)
230  character :: jobz
231  character :: uplo
232  integer :: n
233  real :: a(*)
234  integer :: lda
235  real:: w(*)
236  real :: work(*)
237  integer :: lwork
238  real:: rwork(*)
239  integer :: lrwork
240  integer :: iwork(*)
241  integer :: liwork
242  integer :: info
243  end subroutine magmaf_ssyevd
244 
245  subroutine magmaf_ssygvd( itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork, lrwork, iwork, liwork, info)
246  integer :: itype
247  character :: jobz
248  character :: uplo
249  integer :: n
250  real :: a(*)
251  integer :: lda
252  real :: b(*)
253  integer :: ldb
254  real:: w(*)
255  real :: work(*)
256  integer :: lwork
257  real:: rwork(*)
258  integer :: lrwork
259  integer :: iwork(*)
260  integer :: liwork
261  integer :: info
262  end subroutine magmaf_ssygvd
263 
264 #else
265  subroutine magmaf_sgeev( jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info)
266  character :: jobvl
267  character :: jobvr
268  integer :: n
269  real :: a(*)
270  integer :: lda
271  real :: wr(*)
272  real :: wi(*)
273  real :: vl(*)
274  integer :: ldvl
275  real :: vr(*)
276  integer :: ldvr
277  real :: work(*)
278  integer :: lwork
279  integer :: info
280  end subroutine magmaf_sgeev
281 
282  subroutine magmaf_sgesvd( jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info)
283  character :: jobu
284  character :: jobvt
285  integer :: m
286  integer :: n
287  real :: a(*)
288  integer :: lda
289  real:: s(*)
290  real :: u(*)
291  integer :: ldu
292  real :: vt(*)
293  integer :: ldvt
294  real :: work(*)
295  integer :: lwork
296  integer :: info
297  end subroutine magmaf_sgesvd
298 
299  subroutine magmaf_ssyevd( jobz, uplo, n, a, lda, w, work, lwork, iwork, liwork, info)
300  character :: jobz
301  character :: uplo
302  integer :: n
303  real :: a(*)
304  integer :: lda
305  real:: w(*)
306  real :: work(*)
307  integer :: lwork
308  integer :: iwork(*)
309  integer :: liwork
310  integer :: info
311  end subroutine magmaf_ssyevd
312 
313  subroutine magmaf_ssygvd( itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, iwork, liwork, info)
314  integer :: itype
315  character :: jobz
316  character :: uplo
317  integer :: n
318  real :: a(*)
319  integer :: lda
320  real :: b(*)
321  integer :: ldb
322  real:: w(*)
323  real :: work(*)
324  integer :: lwork
325  integer :: iwork(*)
326  integer :: liwork
327  integer :: info
328  end subroutine magmaf_ssygvd
329 #endif
330 
331  subroutine magmaf_sgels_gpu( trans, m, n, nrhs, dA, ldda, dB, lddb, hwork, lwork, info)
332  character :: trans
333  integer :: m
334  integer :: n
335  integer :: nrhs
336  magma_devptr_t:: da
337  integer :: ldda
338  magma_devptr_t:: db
339  integer :: lddb
340  real :: hwork(*)
341  integer :: lwork
342  integer :: info
343  end subroutine magmaf_sgels_gpu
344 
345  subroutine magmaf_sgeqrf_gpu( m, n, dA, ldda, tau, dT, info)
346  integer :: m
347  integer :: n
348  magma_devptr_t:: da
349  integer :: ldda
350  real :: tau(*)
351  magma_devptr_t:: dt
352  integer :: info
353  end subroutine magmaf_sgeqrf_gpu
354 
355  subroutine magmaf_sgeqrf2_gpu(m, n, dA, ldda, tau, info)
356  integer :: m
357  integer :: n
358  magma_devptr_t:: da
359  integer :: ldda
360  real :: tau(*)
361  integer :: info
362  end subroutine magmaf_sgeqrf2_gpu
363 
364  subroutine magmaf_sgeqrf3_gpu(m, n, dA, ldda, tau, dT, info)
365  integer :: m
366  integer :: n
367  magma_devptr_t:: da
368  integer :: ldda
369  real :: tau(*)
370  magma_devptr_t:: dt
371  integer :: info
372  end subroutine magmaf_sgeqrf3_gpu
373 
374  subroutine magmaf_sgeqrs_gpu( m, n, nrhs, dA, ldda, tau, dT, dB, lddb, hwork, lhwork, info)
375  integer :: m
376  integer :: n
377  integer :: nrhs
378  magma_devptr_t:: da
379  integer :: ldda
380  real :: tau
381  magma_devptr_t:: dt
382  magma_devptr_t:: db
383  integer :: lddb
384  real :: hwork(*)
385  integer :: lhwork
386  integer :: info
387  end subroutine magmaf_sgeqrs_gpu
388 
389  subroutine magmaf_sgeqrs3_gpu( m, n, nrhs, dA, ldda, tau, dT, dB, lddb, hwork, lhwork, info)
390  integer :: m
391  integer :: n
392  integer :: nrhs
393  magma_devptr_t:: da
394  integer :: ldda
395  real :: tau
396  magma_devptr_t:: dt
397  magma_devptr_t:: db
398  integer :: lddb
399  real :: hwork(*)
400  integer :: lhwork
401  integer :: info
402  end subroutine magmaf_sgeqrs3_gpu
403 
404  subroutine magmaf_sgessm_gpu( storev, m, n, k, ib, ipiv, dL1, lddl1, dL, lddl, dA, ldda, info)
405  character :: storev
406  integer :: m
407  integer :: n
408  integer :: k
409  integer :: ib
410  integer :: ipiv(*)
411  magma_devptr_t:: dl1
412  integer :: lddl1
413  magma_devptr_t:: dl
414  integer :: lddl
415  magma_devptr_t:: da
416  integer :: ldda
417  integer :: info
418  end subroutine magmaf_sgessm_gpu
419 
420  subroutine magmaf_sgesv_gpu( n, nrhs, dA, ldda, ipiv, dB, lddb, info)
421  integer :: n
422  integer :: nrhs
423  magma_devptr_t:: da
424  integer :: ldda
425  integer :: ipiv(*)
426  magma_devptr_t:: db
427  integer :: lddb
428  integer :: info
429  end subroutine magmaf_sgesv_gpu
430 
431  subroutine magmaf_sgetrf_gpu( m, n, dA, ldda, ipiv, info)
432  integer :: m
433  integer :: n
434  magma_devptr_t:: da
435  integer :: ldda
436  integer :: ipiv(*)
437  integer :: info
438  end subroutine magmaf_sgetrf_gpu
439 
440  subroutine magmaf_sgetrs_gpu( trans, n, nrhs, dA, ldda, ipiv, dB, lddb, info)
441  character :: trans
442  integer :: n
443  integer :: nrhs
444  magma_devptr_t:: da
445  integer :: ldda
446  integer :: ipiv(*)
447  magma_devptr_t:: db
448  integer :: lddb
449  integer :: info
450  end subroutine magmaf_sgetrs_gpu
451 
452  subroutine magmaf_slabrd_gpu( m, n, nb, a, lda, da, ldda, d, e, tauq, taup, x, ldx, dx, lddx, y, ldy, dy, lddy)
453  integer :: m
454  integer :: n
455  integer :: nb
456  real :: a(*)
457  integer :: lda
458  magma_devptr_t:: da
459  integer :: ldda
460  real:: d(*)
461  real:: e(*)
462  real :: tauq(*)
463  real :: taup(*)
464  real :: x(*)
465  integer :: ldx
466  magma_devptr_t:: dx
467  integer :: lddx
468  real :: y(*)
469  integer :: ldy
470  magma_devptr_t:: dy
471  integer :: lddy
472  end subroutine magmaf_slabrd_gpu
473 
474  subroutine magmaf_slarfb_gpu( side, trans, direct, storev, m, n, k, dv, ldv, dt, ldt, dc, ldc, dowrk, ldwork)
475  character :: side
476  character :: trans
477  character :: direct
478  character :: storev
479  integer :: m
480  integer :: n
481  integer :: k
482  magma_devptr_t:: dv
483  integer :: ldv
484  magma_devptr_t:: dt
485  integer :: ldt
486  magma_devptr_t:: dc
487  integer :: ldc
488  magma_devptr_t:: dowrk
489  integer :: ldwork
490  end subroutine magmaf_slarfb_gpu
491 
492  subroutine magmaf_sposv_gpu( uplo, n, nrhs, dA, ldda, dB, lddb, info)
493  character :: uplo
494  integer :: n
495  integer :: nrhs
496  magma_devptr_t:: da
497  integer :: ldda
498  magma_devptr_t:: db
499  integer :: lddb
500  integer :: info
501  end subroutine magmaf_sposv_gpu
502 
503  subroutine magmaf_spotrf_gpu( uplo, n, dA, ldda, info)
504  character :: uplo
505  integer :: n
506  magma_devptr_t:: da
507  integer :: ldda
508  integer :: info
509  end subroutine magmaf_spotrf_gpu
510 
511  subroutine magmaf_spotrs_gpu( uplo, n, nrhs, dA, ldda, dB, lddb, info)
512  character :: uplo
513  integer :: n
514  integer :: nrhs
515  magma_devptr_t:: da
516  integer :: ldda
517  magma_devptr_t:: db
518  integer :: lddb
519  integer :: info
520  end subroutine magmaf_spotrs_gpu
521 
522  subroutine magmaf_sssssm_gpu( storev, m1, n1, m2, n2, k, ib, dA1, ldda1, dA2, ldda2, dL1, lddl1, dL2, lddl2, IPIV, info)
523  character :: storev
524  integer :: m1
525  integer :: n1
526  integer :: m2
527  integer :: n2
528  integer :: k
529  integer :: ib
530  magma_devptr_t:: da1
531  integer :: ldda1
532  magma_devptr_t:: da2
533  integer :: ldda2
534  magma_devptr_t:: dl1
535  integer :: lddl1
536  magma_devptr_t:: dl2
537  integer :: lddl2
538  integer :: ipiv(*)
539  integer :: info
540  end subroutine magmaf_sssssm_gpu
541 
542  subroutine magmaf_sorgqr_gpu( m, n, k, da, ldda, tau, dwork, nb, info)
543  integer :: m
544  integer :: n
545  integer :: k
546  magma_devptr_t:: da
547  integer :: ldda
548  real :: tau(*)
549  magma_devptr_t:: dwork
550  integer :: nb
551  integer :: info
552  end subroutine magmaf_sorgqr_gpu
553 
554  subroutine magmaf_sormqr_gpu( side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, td, nb, info)
555  character :: side
556  character :: trans
557  integer :: m
558  integer :: n
559  integer :: k
560  magma_devptr_t:: a
561  integer :: lda
562  real :: tau(*)
563  magma_devptr_t:: c
564  integer :: ldc
565  magma_devptr_t:: work
566  integer :: lwork
567  magma_devptr_t:: td
568  integer :: nb
569  integer :: info
570  end subroutine magmaf_sormqr_gpu
571 
572  end interface
573 
574 contains
575 
576  subroutine magmaf_soff1d( ptrNew, ptrOld, inc, i)
577  magma_devptr_t :: ptrnew
578  magma_devptr_t :: ptrold
579  integer :: inc, i
580 
581  ptrnew = ptrold + (i-1) * inc * sizeof_real
582 
583  end subroutine magmaf_soff1d
584 
585  subroutine magmaf_soff2d( ptrNew, ptrOld, lda, i, j)
586  magma_devptr_t :: ptrnew
587  magma_devptr_t :: ptrold
588  integer :: lda, i, j
589 
590  ptrnew = ptrold + ((j-1) * lda + (i-1)) * sizeof_real
591 
592  end subroutine magmaf_soff2d
593 
594 end module magma_sfortran