COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
carma_magma.h
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------
2 // This file is part of COMPASS <https://anr-compass.github.io/compass/>
3 //
4 // Copyright (C) 2011-2023 COMPASS Team <https://github.com/ANR-COMPASS>
5 // All rights reserved.
6 
7 // -----------------------------------------------------------------------------
8 
15 
16 #ifndef _CARMA_MAGMA_H_
17 #define _CARMA_MAGMA_H_
18 
19 #include <carma_host_obj.h>
20 #include <carma_obj.h>
21 #include <carma_sparse_obj.h>
22 
23 // MAGMA functions
25 // template <class T>
26 // int carma_svd(CarmaObj<T> *imat, CarmaObj<T> *eigenvals,
27 // CarmaObj<T> *mod2act, CarmaObj<T> *mes2mod);
28 template <class T>
29 int carma_magma_syevd(char jobz, CarmaObj<T> *mat,
30  CarmaHostObj<T> *eigenvals);
31 // template <class T, int method>
32 // int carma_magma_syevd(char jobz, CarmaObj<T> *mat, CarmaHostObj<T>
33 // *eigenvals);
34 template <class T>
35 int carma_magma_syevd_m(long ngpu, char jobz, long N, T *mat, T *eigenvals);
36 template <class T>
37 int carma_magma_syevd_m(long ngpu, char jobz, CarmaHostObj<T> *mat,
38  CarmaHostObj<T> *eigenvals);
39 template <class T>
40 int carma_magma_syevd_m(long ngpu, char jobz, CarmaHostObj<T> *mat,
41  CarmaHostObj<T> *eigenvals, CarmaHostObj<T> *U);
42 template <class T>
44 template <class T>
46 template <class T>
47 int carma_magma_potr_inv_m(long num_gpus, CarmaHostObj<T> *h_A,
48  CarmaObj<T> *d_iA);
49 
50 // MAGMA functions (direct access)
51 template <class T>
52 int carma_magma_syevd(char jobz, long N, T *mat, T *eigenvals);
53 // template <class T>
54 // int carma_magma_potr_inv_m(long num_gpus, long N, T *h_A, T *d_iA);
55 
56 template <class T_data>
58  CarmaHostObj<T_data> *eigenvals,
59  CarmaHostObj<T_data> *mod2act,
60  CarmaHostObj<T_data> *mes2mod);
61 template <class T>
63 template <class T>
65 template <class T>
67  CarmaHostObj<T> *eigenvals);
68 
69 // MAGMA functions (direct access)
70 // template <class T>
71 // int carma_magma_svd_cpu(long N, long M, T *imat, T *eigenvals, T *mod2act,
72 // T *mes2mod);
73 template <class T>
74 int carma_magma_getri_cpu(long N, T *h_A);
75 template <class T>
76 int carma_magma_potr_inv_cpu(long N, T *h_A);
77 template <class T>
78 int carma_magma_syevd_cpu(char jobz, long N, T *h_A, T *eigenvals);
79 template <class T>
80 int carma_magma_axpy_cpu(long N, T alpha, T *h_X, long incX, T *h_Y, long incY);
81 template <class T>
82 int carma_gemm_cpu(char transa, char transb, long m, long n, long k, T alpha,
83  T *A, long lda, T *B, long ldb, T beta, T *C, long ldc);
84 
85 template <class T_data>
86 int carma_magma_gemv(char trans, int m, int n, T_data alpha, T_data *matA,
87  int lda, T_data *vectx, int incx, T_data beta,
88  T_data *vecty, int incy);
89 
90 template <class T_data>
92 
93 template <class T_data>
95  CarmaObj<T_data> *dx, T_data beta, CarmaObj<T_data> *dy);
96 
97 template <class T_data>
99 
100 #endif // _CARMA_MAGMA_H_
int carma_magma_spmv(T_data alpha, CarmaSparseObj< T_data > *dA, CarmaObj< T_data > *dx, T_data beta, CarmaObj< T_data > *dy)
int carma_magma_getri(CarmaObj< T > *d_iA)
int carma_magma_syevd_cpu(char jobz, CarmaHostObj< T > *h_A, CarmaHostObj< T > *eigenvals)
int carma_magma_getri_cpu(CarmaHostObj< T > *h_A)
int carma_magma_potr_inv_m(long num_gpus, CarmaHostObj< T > *h_A, CarmaObj< T > *d_iA)
int carma_magma_gemv(char trans, int m, int n, T_data alpha, T_data *matA, int lda, T_data *vectx, int incx, T_data beta, T_data *vecty, int incy)
int carma_magma_potr_inv(CarmaObj< T > *d_iA)
int carma_magma_svd_cpu(CarmaHostObj< T_data > *imat, CarmaHostObj< T_data > *eigenvals, CarmaHostObj< T_data > *mod2act, CarmaHostObj< T_data > *mes2mod)
int carma_gemm_cpu(char transa, char transb, long m, long n, long k, T alpha, T *A, long lda, T *B, long ldb, T beta, T *C, long ldc)
int carma_magma_sparse_free(CarmaSparseObj< T_data > *dA)
int carma_magma_axpy_cpu(long N, T alpha, T *h_X, long incX, T *h_Y, long incY)
int carma_magma_csr2ell(CarmaSparseObj< T_data > *dA)
int carma_magma_potr_inv_cpu(CarmaHostObj< T > *h_A)
int carma_magma_disabled()
int carma_magma_syevd(char jobz, CarmaObj< T > *mat, CarmaHostObj< T > *eigenvals)
int carma_magma_syevd_m(long ngpu, char jobz, long N, T *mat, T *eigenvals)
this class provides wrappers to the generic carma host object
this class provides wrappers to the generic carma sparse object