mkl_dss.fi 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. !===============================================================================
  2. ! Copyright 2004-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. ! Content:
  15. ! Intel(R) oneAPI Math Kernel Library (oneMKL) DSS Fortran header file.
  16. ! Contains main datatypes, routines and constants definition
  17. !
  18. !*******************************************************************************
  19. INTEGER, PARAMETER :: MKL_DSS_DEFAULTS = 0
  20. !
  21. ! Out-of-core level option definitions
  22. !
  23. INTEGER, PARAMETER :: MKL_DSS_OOC_VARIABLE = 1024
  24. INTEGER, PARAMETER :: MKL_DSS_OOC_STRONG = 2048
  25. !
  26. ! Refinement steps on / off
  27. !
  28. INTEGER, PARAMETER :: MKL_DSS_REFINEMENT_OFF = 4096
  29. INTEGER, PARAMETER :: MKL_DSS_REFINEMENT_ON = 8192
  30. !
  31. ! Solver step's substitution
  32. !
  33. INTEGER, PARAMETER :: MKL_DSS_FORWARD_SOLVE = 16384
  34. INTEGER, PARAMETER :: MKL_DSS_DIAGONAL_SOLVE = 32768
  35. INTEGER, PARAMETER :: MKL_DSS_BACKWARD_SOLVE = 49152
  36. INTEGER, PARAMETER :: MKL_DSS_TRANSPOSE_SOLVE = 262144
  37. INTEGER, PARAMETER :: MKL_DSS_CONJUGATE_SOLVE = 524288
  38. !
  39. ! Single precision
  40. !
  41. INTEGER, PARAMETER :: MKL_DSS_SINGLE_PRECISION = 65536
  42. !
  43. ! Zero-based indexing
  44. !
  45. INTEGER, PARAMETER :: MKL_DSS_ZERO_BASED_INDEXING = 131072
  46. !
  47. ! Message level option definitions
  48. !
  49. INTEGER, PARAMETER :: MKL_DSS_MSG_LVL_SUCCESS = -2147483647
  50. INTEGER, PARAMETER :: MKL_DSS_MSG_LVL_DEBUG = -2147483646
  51. INTEGER, PARAMETER :: MKL_DSS_MSG_LVL_INFO = -2147483645
  52. INTEGER, PARAMETER :: MKL_DSS_MSG_LVL_WARNING = -2147483644
  53. INTEGER, PARAMETER :: MKL_DSS_MSG_LVL_ERROR = -2147483643
  54. INTEGER, PARAMETER :: MKL_DSS_MSG_LVL_FATAL = -2147483642
  55. !
  56. ! Termination level option definitions
  57. !
  58. INTEGER, PARAMETER :: MKL_DSS_TERM_LVL_SUCCESS = 1073741832
  59. INTEGER, PARAMETER :: MKL_DSS_TERM_LVL_DEBUG = 1073741840
  60. INTEGER, PARAMETER :: MKL_DSS_TERM_LVL_INFO = 1073741848
  61. INTEGER, PARAMETER :: MKL_DSS_TERM_LVL_WARNING = 1073741856
  62. INTEGER, PARAMETER :: MKL_DSS_TERM_LVL_ERROR = 1073741864
  63. INTEGER, PARAMETER :: MKL_DSS_TERM_LVL_FATAL = 1073741872
  64. !
  65. ! Structure option definitions
  66. !
  67. INTEGER, PARAMETER :: MKL_DSS_SYMMETRIC = 536870976
  68. INTEGER, PARAMETER :: MKL_DSS_SYMMETRIC_STRUCTURE = 536871040
  69. INTEGER, PARAMETER :: MKL_DSS_NON_SYMMETRIC = 536871104
  70. INTEGER, PARAMETER :: MKL_DSS_SYMMETRIC_COMPLEX = 536871168
  71. INTEGER, PARAMETER :: &
  72. & MKL_DSS_SYMMETRIC_STRUCTURE_COMPLEX = 536871232
  73. INTEGER, PARAMETER ::MKL_DSS_NON_SYMMETRIC_COMPLEX = 536871296
  74. !
  75. ! Reordering option definitions
  76. !
  77. INTEGER, PARAMETER :: MKL_DSS_AUTO_ORDER = 268435520
  78. INTEGER, PARAMETER :: MKL_DSS_MY_ORDER = 268435584
  79. INTEGER, PARAMETER :: MKL_DSS_OPTION1_ORDER = 268435648
  80. INTEGER, PARAMETER :: MKL_DSS_GET_ORDER = 268435712
  81. INTEGER, PARAMETER :: MKL_DSS_METIS_ORDER = 268435776
  82. INTEGER, PARAMETER :: MKL_DSS_METIS_OPENMP_ORDER = 268435840
  83. !
  84. ! Factorization option definitions
  85. !
  86. INTEGER, PARAMETER :: MKL_DSS_POSITIVE_DEFINITE = 134217792
  87. INTEGER, PARAMETER :: MKL_DSS_INDEFINITE = 134217856
  88. INTEGER, PARAMETER :: &
  89. & MKL_DSS_HERMITIAN_POSITIVE_DEFINITE = 134217920
  90. INTEGER, PARAMETER :: MKL_DSS_HERMITIAN_INDEFINITE = 134217984
  91. !
  92. ! Return status values
  93. !
  94. INTEGER, PARAMETER :: MKL_DSS_SUCCESS = 0
  95. INTEGER, PARAMETER :: MKL_DSS_ZERO_PIVOT = -1
  96. INTEGER, PARAMETER :: MKL_DSS_OUT_OF_MEMORY = -2
  97. INTEGER, PARAMETER :: MKL_DSS_FAILURE = -3
  98. INTEGER, PARAMETER :: MKL_DSS_ROW_ERR = -4
  99. INTEGER, PARAMETER :: MKL_DSS_COL_ERR = -5
  100. INTEGER, PARAMETER :: MKL_DSS_TOO_FEW_VALUES = -6
  101. INTEGER, PARAMETER :: MKL_DSS_TOO_MANY_VALUES = -7
  102. INTEGER, PARAMETER :: MKL_DSS_NOT_SQUARE = -8
  103. INTEGER, PARAMETER :: MKL_DSS_STATE_ERR = -9
  104. INTEGER, PARAMETER :: MKL_DSS_INVALID_OPTION = -10
  105. INTEGER, PARAMETER :: MKL_DSS_OPTION_CONFLICT = -11
  106. INTEGER, PARAMETER :: MKL_DSS_MSG_LVL_ERR = -12
  107. INTEGER, PARAMETER :: MKL_DSS_TERM_LVL_ERR = -13
  108. INTEGER, PARAMETER :: MKL_DSS_STRUCTURE_ERR = -14
  109. INTEGER, PARAMETER :: MKL_DSS_REORDER_ERR = -15
  110. INTEGER, PARAMETER :: MKL_DSS_VALUES_ERR = -16
  111. INTEGER, PARAMETER :: MKL_DSS_STATISTICS_INVALID_MATRIX = -17
  112. INTEGER, PARAMETER :: MKL_DSS_STATISTICS_INVALID_STATE = -18
  113. INTEGER, PARAMETER :: MKL_DSS_STATISTICS_INVALID_STRING = -19
  114. !
  115. ! Function prototypes for DSS routines
  116. !
  117. INTERFACE
  118. FUNCTION DSS_CREATE( HANDLE, OPT )
  119. INTEGER(KIND=8), INTENT(OUT) :: HANDLE
  120. INTEGER, INTENT(IN) :: OPT
  121. INTEGER :: DSS_CREATE
  122. END FUNCTION DSS_CREATE
  123. END INTERFACE
  124. INTERFACE
  125. FUNCTION DSS_DEFINE_STRUCTURE( HANDLE, OPT, ROWINDEX, NROWS, &
  126. & RCOLS, COLUMNS, NNONZEROS )
  127. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  128. INTEGER, INTENT(IN) :: OPT
  129. INTEGER, INTENT(IN) :: NROWS
  130. INTEGER, INTENT(IN) :: RCOLS
  131. INTEGER, INTENT(IN) :: NNONZEROS
  132. INTEGER, INTENT(IN) :: ROWINDEX( * )
  133. INTEGER, INTENT(IN) :: COLUMNS( * )
  134. INTEGER :: DSS_DEFINE_STRUCTURE
  135. END FUNCTION DSS_DEFINE_STRUCTURE
  136. END INTERFACE
  137. INTERFACE
  138. FUNCTION DSS_REORDER( HANDLE, OPT, PERM )
  139. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  140. INTEGER, INTENT(IN) :: OPT
  141. INTEGER, INTENT(IN) :: PERM( * )
  142. INTEGER :: DSS_REORDER
  143. END FUNCTION DSS_REORDER
  144. END INTERFACE
  145. INTERFACE DSS_FACTOR
  146. FUNCTION DSS_FACTOR_REAL_D( HANDLE, OPT, RVALUES )
  147. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  148. INTEGER, INTENT(IN) :: OPT
  149. REAL(KIND=8), INTENT(IN) :: RVALUES( * )
  150. INTEGER :: DSS_FACTOR_REAL_D
  151. END FUNCTION DSS_FACTOR_REAL_D
  152. FUNCTION DSS_FACTOR_REAL_S( HANDLE, OPT, RVALUES )
  153. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  154. INTEGER, INTENT(IN) :: OPT
  155. REAL(KIND=4), INTENT(IN) :: RVALUES( * )
  156. INTEGER :: DSS_FACTOR_REAL_S
  157. END FUNCTION DSS_FACTOR_REAL_S
  158. FUNCTION DSS_FACTOR_COMPLEX_D( HANDLE, OPT, RVALUES )
  159. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  160. INTEGER, INTENT(IN) :: OPT
  161. COMPLEX(KIND=8), INTENT(IN) :: RVALUES( * )
  162. INTEGER :: DSS_FACTOR_COMPLEX_D
  163. END FUNCTION DSS_FACTOR_COMPLEX_D
  164. FUNCTION DSS_FACTOR_COMPLEX_S( HANDLE, OPT, RVALUES )
  165. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  166. INTEGER, INTENT(IN) :: OPT
  167. COMPLEX(KIND=4), INTENT(IN) :: RVALUES( * )
  168. INTEGER :: DSS_FACTOR_COMPLEX_S
  169. END FUNCTION DSS_FACTOR_COMPLEX_S
  170. END INTERFACE
  171. INTERFACE DSS_FACTOR_REAL
  172. FUNCTION DSS_FACTOR_REAL_D_( HANDLE, OPT, RVALUES )
  173. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  174. INTEGER, INTENT(IN) :: OPT
  175. REAL(KIND=8), INTENT(IN) :: RVALUES( * )
  176. INTEGER :: DSS_FACTOR_REAL_D_
  177. END FUNCTION DSS_FACTOR_REAL_D_
  178. FUNCTION DSS_FACTOR_REAL_S_( HANDLE, OPT, RVALUES )
  179. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  180. INTEGER, INTENT(IN) :: OPT
  181. REAL(KIND=4), INTENT(IN) :: RVALUES( * )
  182. INTEGER :: DSS_FACTOR_REAL_S_
  183. END FUNCTION DSS_FACTOR_REAL_S_
  184. END INTERFACE
  185. INTERFACE DSS_FACTOR_COMPLEX
  186. FUNCTION DSS_FACTOR_COMPLEX_D_( HANDLE, OPT, RVALUES )
  187. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  188. INTEGER, INTENT(IN) :: OPT
  189. COMPLEX(KIND=8), INTENT(IN) :: RVALUES( * )
  190. INTEGER :: DSS_FACTOR_COMPLEX_D_
  191. END FUNCTION DSS_FACTOR_COMPLEX_D_
  192. FUNCTION DSS_FACTOR_COMPLEX_S_( HANDLE, OPT, RVALUES )
  193. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  194. INTEGER, INTENT(IN) :: OPT
  195. COMPLEX(KIND=4), INTENT(IN) :: RVALUES( * )
  196. INTEGER :: DSS_FACTOR_COMPLEX_S_
  197. END FUNCTION DSS_FACTOR_COMPLEX_S_
  198. END INTERFACE
  199. INTERFACE DSS_SOLVE
  200. FUNCTION DSS_SOLVE_REAL_D( HANDLE, OPT, RRHSVALUES, NRHS, &
  201. & RSOLVALUES )
  202. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  203. INTEGER, INTENT(IN) :: OPT
  204. INTEGER, INTENT(IN) :: NRHS
  205. REAL(KIND=8), INTENT(IN) :: RRHSVALUES( * )
  206. REAL(KIND=8), INTENT(OUT) :: RSOLVALUES( * )
  207. INTEGER :: DSS_SOLVE_REAL_D
  208. END FUNCTION DSS_SOLVE_REAL_D
  209. FUNCTION DSS_SOLVE_REAL_S( HANDLE, OPT, RRHSVALUES, NRHS, &
  210. & RSOLVALUES )
  211. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  212. INTEGER, INTENT(IN) :: OPT
  213. INTEGER, INTENT(IN) :: NRHS
  214. REAL(KIND=4), INTENT(IN) :: RRHSVALUES( * )
  215. REAL(KIND=4), INTENT(OUT) :: RSOLVALUES( * )
  216. INTEGER :: DSS_SOLVE_REAL_S
  217. END FUNCTION DSS_SOLVE_REAL_S
  218. FUNCTION DSS_SOLVE_COMPLEX_D( HANDLE, OPT, RRHSVALUES, NRHS, &
  219. & RSOLVALUES )
  220. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  221. INTEGER, INTENT(IN) :: OPT
  222. INTEGER, INTENT(IN) :: NRHS
  223. COMPLEX(KIND=8), INTENT(IN) :: RRHSVALUES( * )
  224. COMPLEX(KIND=8), INTENT(OUT) :: RSOLVALUES( * )
  225. INTEGER :: DSS_SOLVE_COMPLEX_D
  226. END FUNCTION DSS_SOLVE_COMPLEX_D
  227. FUNCTION DSS_SOLVE_COMPLEX_S( HANDLE, OPT, RRHSVALUES, NRHS, &
  228. & RSOLVALUES )
  229. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  230. INTEGER, INTENT(IN) :: OPT
  231. INTEGER, INTENT(IN) :: NRHS
  232. COMPLEX(KIND=4), INTENT(IN) :: RRHSVALUES( * )
  233. COMPLEX(KIND=4), INTENT(OUT) :: RSOLVALUES( * )
  234. INTEGER :: DSS_SOLVE_COMPLEX_S
  235. END FUNCTION DSS_SOLVE_COMPLEX_S
  236. END INTERFACE
  237. INTERFACE DSS_SOLVE_REAL
  238. FUNCTION DSS_SOLVE_REAL_D_( HANDLE, OPT, RRHSVALUES, NRHS, &
  239. & RSOLVALUES )
  240. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  241. INTEGER, INTENT(IN) :: OPT
  242. INTEGER, INTENT(IN) :: NRHS
  243. REAL(KIND=8), INTENT(IN) :: RRHSVALUES( * )
  244. REAL(KIND=8), INTENT(OUT) :: RSOLVALUES( * )
  245. INTEGER :: DSS_SOLVE_REAL_D_
  246. END FUNCTION DSS_SOLVE_REAL_D_
  247. FUNCTION DSS_SOLVE_REAL_S_( HANDLE, OPT, RRHSVALUES, NRHS, &
  248. & RSOLVALUES )
  249. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  250. INTEGER, INTENT(IN) :: OPT
  251. INTEGER, INTENT(IN) :: NRHS
  252. REAL(KIND=4), INTENT(IN) :: RRHSVALUES( * )
  253. REAL(KIND=4), INTENT(OUT) :: RSOLVALUES( * )
  254. INTEGER :: DSS_SOLVE_REAL_S_
  255. END FUNCTION DSS_SOLVE_REAL_S_
  256. END INTERFACE
  257. INTERFACE DSS_SOLVE_COMPLEX
  258. FUNCTION DSS_SOLVE_COMPLEX_D_( HANDLE, OPT, RRHSVALUES, NRHS, &
  259. & RSOLVALUES )
  260. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  261. INTEGER, INTENT(IN) :: OPT
  262. INTEGER, INTENT(IN) :: NRHS
  263. COMPLEX(KIND=8), INTENT(IN) :: RRHSVALUES( * )
  264. COMPLEX(KIND=8), INTENT(OUT) :: RSOLVALUES( * )
  265. INTEGER :: DSS_SOLVE_COMPLEX_D_
  266. END FUNCTION DSS_SOLVE_COMPLEX_D_
  267. FUNCTION DSS_SOLVE_COMPLEX_S_( HANDLE, OPT, RRHSVALUES, NRHS, &
  268. & RSOLVALUES )
  269. INTEGER(KIND=8), INTENT(INOUT) :: HANDLE
  270. INTEGER, INTENT(IN) :: OPT
  271. INTEGER, INTENT(IN) :: NRHS
  272. COMPLEX(KIND=4), INTENT(IN) :: RRHSVALUES( * )
  273. COMPLEX(KIND=4), INTENT(OUT) :: RSOLVALUES( * )
  274. INTEGER :: DSS_SOLVE_COMPLEX_S_
  275. END FUNCTION DSS_SOLVE_COMPLEX_S_
  276. END INTERFACE
  277. INTERFACE
  278. FUNCTION DSS_DELETE( HANDLE, OPT )
  279. INTEGER(KIND=8), INTENT(IN) :: HANDLE
  280. INTEGER, INTENT(IN) :: OPT
  281. INTEGER :: DSS_DELETE
  282. END FUNCTION DSS_DELETE
  283. END INTERFACE
  284. INTERFACE
  285. FUNCTION DSS_STATISTICS( HANDLE, OPT, STAT, RET )
  286. INTEGER(KIND=8), INTENT(IN) :: HANDLE
  287. INTEGER, INTENT(IN) :: OPT
  288. INTEGER, INTENT(IN) :: STAT( * )
  289. REAL(KIND=8), INTENT(OUT) :: RET( * )
  290. INTEGER :: DSS_STATISTICS
  291. END FUNCTION DSS_STATISTICS
  292. END INTERFACE
  293. INTERFACE
  294. SUBROUTINE MKL_CVT_TO_NULL_TERMINATED_STR( DESTSTR, DESTLEN, &
  295. & SRCSTR )
  296. INTEGER, INTENT(OUT) :: DESTSTR( * )
  297. INTEGER, INTENT(IN) :: DESTLEN
  298. CHARACTER(*), INTENT(IN) :: SRCSTR
  299. END SUBROUTINE MKL_CVT_TO_NULL_TERMINATED_STR
  300. END INTERFACE