mkl_compact.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. /*******************************************************************************
  2. * Copyright 2017-2022 Intel Corporation.
  3. *
  4. * This software and the related documents are Intel copyrighted materials, and
  5. * your use of them is governed by the express license under which they were
  6. * provided to you (License). Unless the License provides otherwise, you may not
  7. * use, modify, copy, publish, distribute, disclose or transmit this software or
  8. * the related documents without Intel's prior written permission.
  9. *
  10. * This software and the related documents are provided as is, with no express
  11. * or implied warranties, other than those that are expressly stated in the
  12. * License.
  13. *******************************************************************************/
  14. /*
  15. ! Content:
  16. ! Intel(R) oneAPI Math Kernel Library (oneMKL) interfaces for Compact format
  17. !******************************************************************************/
  18. #ifndef _MKL_COMPACT_H
  19. #define _MKL_COMPACT_H
  20. #include "mkl_types.h"
  21. #ifndef mkl_compact_complex_float
  22. #define mkl_compact_complex_float MKL_Complex8
  23. #endif
  24. #ifndef mkl_compact_complex_double
  25. #define mkl_compact_complex_double MKL_Complex16
  26. #endif
  27. #ifdef __cplusplus
  28. extern "C" { /* Assume C declarations for C++ */
  29. #endif /* __cplusplus */
  30. MKL_COMPACT_PACK mkl_get_format_compact( void );
  31. MKL_INT mkl_sget_size_compact( MKL_INT ld, MKL_INT sd,
  32. MKL_COMPACT_PACK format, MKL_INT nm );
  33. void mkl_sgepack_compact( MKL_LAYOUT layout, MKL_INT rows, MKL_INT columns,
  34. const float * const *a, MKL_INT lda, float *ap, MKL_INT ldap,
  35. MKL_COMPACT_PACK format, MKL_INT nm );
  36. void mkl_sgeunpack_compact( MKL_LAYOUT layout, MKL_INT rows, MKL_INT columns,
  37. float * const *a, MKL_INT lda, const float *ap, MKL_INT ldap,
  38. MKL_COMPACT_PACK format, MKL_INT nm );
  39. void mkl_sgemm_compact( MKL_LAYOUT layout, MKL_TRANSPOSE transa,
  40. MKL_TRANSPOSE transb, MKL_INT m, MKL_INT n,
  41. MKL_INT k, float alpha, const float *ap,
  42. MKL_INT ldap, const float *bp, MKL_INT ldbp,
  43. float beta, float *cp, MKL_INT ldcp,
  44. MKL_COMPACT_PACK format, MKL_INT nm );
  45. void mkl_strsm_compact( MKL_LAYOUT layout, MKL_SIDE side,
  46. MKL_UPLO uplo, MKL_TRANSPOSE transa,
  47. MKL_DIAG diag, MKL_INT m, MKL_INT n,
  48. float alpha, const float *ap, MKL_INT ldap,
  49. float *bp, MKL_INT ldbp,
  50. MKL_COMPACT_PACK format, MKL_INT nm );
  51. MKL_INT mkl_dget_size_compact( MKL_INT ld, MKL_INT sd,
  52. MKL_COMPACT_PACK format, MKL_INT nm );
  53. void mkl_dgepack_compact( MKL_LAYOUT layout, MKL_INT rows, MKL_INT columns,
  54. const double * const *a, MKL_INT lda, double *ap, MKL_INT ldap,
  55. MKL_COMPACT_PACK format, MKL_INT nm );
  56. void mkl_dgeunpack_compact( MKL_LAYOUT layout, MKL_INT rows, MKL_INT columns,
  57. double * const *a, MKL_INT lda, const double *ap, MKL_INT ldap,
  58. MKL_COMPACT_PACK format, MKL_INT nm );
  59. void mkl_dgemm_compact( MKL_LAYOUT layout, MKL_TRANSPOSE transa,
  60. MKL_TRANSPOSE transb, MKL_INT m, MKL_INT n,
  61. MKL_INT k, double alpha, const double *a,
  62. MKL_INT ldap, const double *b, MKL_INT ldbp,
  63. double beta, double *c, MKL_INT ldcp,
  64. MKL_COMPACT_PACK format, MKL_INT nm );
  65. void mkl_dtrsm_compact( MKL_LAYOUT layout, MKL_SIDE side,
  66. MKL_UPLO uplo, MKL_TRANSPOSE transa,
  67. MKL_DIAG diag, MKL_INT m, MKL_INT n,
  68. double alpha, const double *a, MKL_INT ldap,
  69. double *b, MKL_INT ldbp,
  70. MKL_COMPACT_PACK format, MKL_INT nm );
  71. MKL_INT mkl_cget_size_compact( MKL_INT ld, MKL_INT sd,
  72. MKL_COMPACT_PACK format, MKL_INT nm );
  73. void mkl_cgepack_compact( MKL_LAYOUT layout, MKL_INT rows, MKL_INT columns,
  74. const mkl_compact_complex_float * const *a, MKL_INT lda, float *ap, MKL_INT ldap,
  75. MKL_COMPACT_PACK format, MKL_INT nm );
  76. void mkl_cgeunpack_compact( MKL_LAYOUT layout, MKL_INT rows, MKL_INT columns,
  77. mkl_compact_complex_float * const *a, MKL_INT lda, const float *ap, MKL_INT ldap,
  78. MKL_COMPACT_PACK format, MKL_INT nm );
  79. void mkl_cgemm_compact( MKL_LAYOUT layout, MKL_TRANSPOSE transa,
  80. MKL_TRANSPOSE transb, MKL_INT m, MKL_INT n,
  81. MKL_INT k, const mkl_compact_complex_float *alpha, const float *a,
  82. MKL_INT ldap, const float *b, MKL_INT ldbp,
  83. const mkl_compact_complex_float *beta, float *c, MKL_INT ldcp,
  84. MKL_COMPACT_PACK format, MKL_INT nm );
  85. void mkl_ctrsm_compact( MKL_LAYOUT layout, MKL_SIDE side,
  86. MKL_UPLO uplo, MKL_TRANSPOSE transa,
  87. MKL_DIAG diag, MKL_INT m, MKL_INT n,
  88. const mkl_compact_complex_float *alpha, const float *a, MKL_INT ldap,
  89. float *b, MKL_INT ldbp,
  90. MKL_COMPACT_PACK format, MKL_INT nm );
  91. MKL_INT mkl_zget_size_compact( MKL_INT ld, MKL_INT sd,
  92. MKL_COMPACT_PACK format, MKL_INT nm );
  93. void mkl_zgepack_compact( MKL_LAYOUT layout, MKL_INT rows, MKL_INT columns,
  94. const mkl_compact_complex_double * const *a, MKL_INT lda, double *ap, MKL_INT ldap,
  95. MKL_COMPACT_PACK format, MKL_INT nm );
  96. void mkl_zgeunpack_compact( MKL_LAYOUT layout, MKL_INT rows, MKL_INT columns,
  97. mkl_compact_complex_double * const *a, MKL_INT lda, const double *ap, MKL_INT ldap,
  98. MKL_COMPACT_PACK format, MKL_INT nm );
  99. void mkl_zgemm_compact( MKL_LAYOUT layout, MKL_TRANSPOSE transa,
  100. MKL_TRANSPOSE transb, MKL_INT m, MKL_INT n,
  101. MKL_INT k, const mkl_compact_complex_double *alpha, const double *a,
  102. MKL_INT ldap, const double *b, MKL_INT ldbp,
  103. const mkl_compact_complex_double *beta, double *c, MKL_INT ldcp,
  104. MKL_COMPACT_PACK format, MKL_INT nm );
  105. void mkl_ztrsm_compact( MKL_LAYOUT layout, MKL_SIDE side,
  106. MKL_UPLO uplo, MKL_TRANSPOSE transa,
  107. MKL_DIAG diag, MKL_INT m, MKL_INT n,
  108. const mkl_compact_complex_double *alpha, const double *a, MKL_INT ldap,
  109. double *b, MKL_INT ldbp,
  110. MKL_COMPACT_PACK format, MKL_INT nm );
  111. /* LAPACK compact routines */
  112. void mkl_cgetrinp_compact( MKL_LAYOUT layout, MKL_INT n, float* ap,
  113. MKL_INT ldap, float* work, MKL_INT lwork,
  114. MKL_INT* info, MKL_COMPACT_PACK format, MKL_INT nm );
  115. void mkl_dgetrinp_compact( MKL_LAYOUT layout, MKL_INT n, double* ap, MKL_INT ldap,
  116. double* work, MKL_INT lwork, MKL_INT* info,
  117. MKL_COMPACT_PACK format, MKL_INT nm );
  118. void mkl_sgetrinp_compact( MKL_LAYOUT layout, MKL_INT n, float* ap, MKL_INT ldap,
  119. float* work, MKL_INT lwork, MKL_INT* info,
  120. MKL_COMPACT_PACK format, MKL_INT nm );
  121. void mkl_zgetrinp_compact( MKL_LAYOUT layout, MKL_INT n, double* ap,
  122. MKL_INT ldap, double* work, MKL_INT lwork,
  123. MKL_INT* info, MKL_COMPACT_PACK format, MKL_INT nm );
  124. void mkl_cgetrfnp_compact( MKL_LAYOUT layout, MKL_INT m, MKL_INT n,
  125. float* ap, MKL_INT ldap, MKL_INT* info,
  126. MKL_COMPACT_PACK format, MKL_INT nm );
  127. void mkl_dgetrfnp_compact( MKL_LAYOUT layout, MKL_INT m, MKL_INT n, double* ap,
  128. MKL_INT ldap, MKL_INT* info, MKL_COMPACT_PACK format,
  129. MKL_INT nm );
  130. void mkl_sgetrfnp_compact( MKL_LAYOUT layout, MKL_INT m, MKL_INT n, float* ap,
  131. MKL_INT ldap, MKL_INT* info, MKL_COMPACT_PACK format,
  132. MKL_INT nm );
  133. void mkl_zgetrfnp_compact( MKL_LAYOUT layout, MKL_INT m, MKL_INT n,
  134. double* ap, MKL_INT ldap, MKL_INT* info,
  135. MKL_COMPACT_PACK format, MKL_INT nm );
  136. void mkl_cpotrf_compact( MKL_LAYOUT layout, MKL_UPLO uplo, MKL_INT n,
  137. float* ap, MKL_INT ldap, MKL_INT* info,
  138. MKL_COMPACT_PACK format, MKL_INT nm );
  139. void mkl_dpotrf_compact( MKL_LAYOUT layout, MKL_UPLO uplo, MKL_INT n, double* ap,
  140. MKL_INT ldap, MKL_INT* info, MKL_COMPACT_PACK format,
  141. MKL_INT nm );
  142. void mkl_spotrf_compact( MKL_LAYOUT layout, MKL_UPLO uplo, MKL_INT n, float* ap,
  143. MKL_INT ldap, MKL_INT* info, MKL_COMPACT_PACK format,
  144. MKL_INT nm );
  145. void mkl_zpotrf_compact( MKL_LAYOUT layout, MKL_UPLO uplo, MKL_INT n,
  146. double* ap, MKL_INT ldap, MKL_INT* info,
  147. MKL_COMPACT_PACK format, MKL_INT nm );
  148. void mkl_cgeqrf_compact( MKL_LAYOUT layout, MKL_INT m, MKL_INT n, float* ap,
  149. MKL_INT ldap, float* taup, float* work, MKL_INT lwork,
  150. MKL_INT* info, MKL_COMPACT_PACK format, MKL_INT nm );
  151. void mkl_dgeqrf_compact( MKL_LAYOUT layout, MKL_INT m, MKL_INT n, double* ap,
  152. MKL_INT ldap, double* taup, double* work,
  153. MKL_INT lwork, MKL_INT* info, MKL_COMPACT_PACK format,
  154. MKL_INT nm );
  155. void mkl_sgeqrf_compact( MKL_LAYOUT layout, MKL_INT m, MKL_INT n, float* ap,
  156. MKL_INT ldap, float* taup, float* work, MKL_INT lwork,
  157. MKL_INT* info, MKL_COMPACT_PACK format, MKL_INT nm );
  158. void mkl_zgeqrf_compact( MKL_LAYOUT layout, MKL_INT m, MKL_INT n, double* ap,
  159. MKL_INT ldap, double* taup, double* work,
  160. MKL_INT lwork, MKL_INT* info, MKL_COMPACT_PACK format,
  161. MKL_INT nm );
  162. MKL_INT64 mkl_sget_size_compact_64( MKL_INT64 ld, MKL_INT64 sd,
  163. MKL_COMPACT_PACK format, MKL_INT64 nm );
  164. MKL_INT64 mkl_dget_size_compact_64( MKL_INT64 ld, MKL_INT64 sd,
  165. MKL_COMPACT_PACK format, MKL_INT64 nm );
  166. MKL_INT64 mkl_cget_size_compact_64( MKL_INT64 ld, MKL_INT64 sd,
  167. MKL_COMPACT_PACK format, MKL_INT64 nm );
  168. MKL_INT64 mkl_zget_size_compact_64( MKL_INT64 ld, MKL_INT64 sd,
  169. MKL_COMPACT_PACK format, MKL_INT64 nm );
  170. #ifdef __cplusplus
  171. }
  172. #endif /* __cplusplus */
  173. #endif /* _MKL_COMPACT_H */