mat_utils.hpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /**
  2. * \file mat_utils.hpp
  3. * \author Dhairya Malhotra, dhairya.malhotra@gmail.com
  4. * \date 2-11-2011
  5. * \brief This file contains BLAS and LAPACK wrapper functions.
  6. */
  7. #include <pvfmm_common.hpp>
  8. #ifndef _PVFMM_MAT_UTILS_
  9. #define _PVFMM_MAT_UTILS_
  10. #ifdef __INTEL_OFFLOAD
  11. #pragma offload_attribute(push,target(mic))
  12. #endif
  13. namespace pvfmm{
  14. namespace mat{
  15. template <class T>
  16. void gemm(char TransA, char TransB, int M, int N, int K, T alpha, T *A, int lda, T *B, int ldb, T beta, T *C, int ldc);
  17. template <class T>
  18. void svd(char *JOBU, char *JOBVT, int *M, int *N, T *A, int *LDA,
  19. T *S, T *U, int *LDU, T *VT, int *LDVT, T *WORK, int *LWORK,
  20. int *INFO);
  21. /**
  22. * \brief Computes the pseudo inverse of matrix M(n1xn2) (in row major form)
  23. * and returns the output M_(n2xn1).
  24. */
  25. template <class T>
  26. void pinv(T* M, int n1, int n2, T eps, T* M_);
  27. }//end namespace
  28. }//end namespace
  29. #ifdef __INTEL_OFFLOAD
  30. #pragma offload_attribute(pop)
  31. #endif
  32. #include <mat_utils.txx>
  33. #endif //_PVFMM_MAT_UTILS_