mkl_service.fi 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. !===============================================================================
  2. ! Copyright 1999-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) FORTRAN interface
  16. ! for service routines
  17. !*******************************************************************************
  18. INTEGER*4 MKL_DOMAIN_ALL
  19. INTEGER*4 MKL_DOMAIN_BLAS
  20. INTEGER*4 MKL_DOMAIN_FFT
  21. INTEGER*4 MKL_DOMAIN_VML
  22. INTEGER*4 MKL_DOMAIN_PARDISO
  23. INTEGER*4 MKL_DYNAMIC_TRUE
  24. INTEGER*4 MKL_DYNAMIC_FALSE
  25. INTEGER*4 MKL_ENABLE_SSE4_2
  26. INTEGER*4 MKL_ENABLE_AVX
  27. INTEGER*4 MKL_ENABLE_AVX2
  28. INTEGER*4 MKL_ENABLE_AVX512
  29. INTEGER*4 MKL_ENABLE_AVX512_MIC
  30. INTEGER*4 MKL_ENABLE_AVX512_MIC_E1
  31. INTEGER*4 MKL_ENABLE_AVX512_E1
  32. INTEGER*4 MKL_ENABLE_AVX512_E2
  33. INTEGER*4 MKL_ENABLE_AVX512_E3
  34. INTEGER*4 MKL_ENABLE_AVX512_E4
  35. INTEGER*4 MKL_INTERFACE_LP64
  36. INTEGER*4 MKL_INTERFACE_ILP64
  37. INTEGER*4 MKL_INTERFACE_GNU
  38. INTEGER*4 MKL_THREADING_INTEL
  39. INTEGER*4 MKL_THREADING_SEQUENTIAL
  40. INTEGER*4 MKL_THREADING_PGI
  41. INTEGER*4 MKL_THREADING_GNU
  42. INTEGER*4 MKL_THREADING_TBB
  43. INTEGER*4 MKL_CBWR_BRANCH
  44. INTEGER*4 MKL_CBWR_ALL
  45. INTEGER*4 MKL_CBWR_OFF
  46. INTEGER*4 MKL_CBWR_UNSET_ALL
  47. INTEGER*4 MKL_CBWR_BRANCH_OFF
  48. INTEGER*4 MKL_CBWR_AUTO
  49. INTEGER*4 MKL_CBWR_COMPATIBLE
  50. INTEGER*4 MKL_CBWR_SSE2
  51. INTEGER*4 MKL_CBWR_SSSE3
  52. INTEGER*4 MKL_CBWR_SSE4_1
  53. INTEGER*4 MKL_CBWR_SSE4_2
  54. INTEGER*4 MKL_CBWR_AVX
  55. INTEGER*4 MKL_CBWR_AVX2
  56. INTEGER*4 MKL_CBWR_AVX512_MIC
  57. INTEGER*4 MKL_CBWR_AVX512
  58. INTEGER*4 MKL_CBWR_AVX512_MIC_E1
  59. INTEGER*4 MKL_CBWR_AVX512_E1
  60. INTEGER*4 MKL_CBWR_STRICT
  61. INTEGER*4 MKL_CBWR_SUCCESS
  62. INTEGER*4 MKL_CBWR_ERR_INVALID_SETTINGS
  63. INTEGER*4 MKL_CBWR_ERR_INVALID_INPUT
  64. INTEGER*4 MKL_CBWR_ERR_UNSUPPORTED_BRANCH
  65. INTEGER*4 MKL_CBWR_ERR_UNKNOWN_BRANCH
  66. INTEGER*4 MKL_CBWR_ERR_MODE_CHANGE_FAILURE
  67. INTEGER*4 MKL_PEAK_MEM_ENABLE
  68. INTEGER*4 MKL_PEAK_MEM_RESET
  69. INTEGER*4 MKL_PEAK_MEM
  70. INTEGER*4 MKL_PEAK_MEM_DISABLE
  71. INTEGER*4 MKL_MEM_MCDRAM
  72. PARAMETER (MKL_DOMAIN_ALL = 0)
  73. PARAMETER (MKL_DOMAIN_BLAS = 1)
  74. PARAMETER (MKL_DOMAIN_FFT = 2)
  75. PARAMETER (MKL_DOMAIN_VML = 3)
  76. PARAMETER (MKL_DOMAIN_PARDISO = 4)
  77. PARAMETER (MKL_DYNAMIC_TRUE = 1)
  78. PARAMETER (MKL_DYNAMIC_FALSE = 0)
  79. PARAMETER (MKL_ENABLE_SSE4_2 = 0)
  80. PARAMETER (MKL_ENABLE_AVX = 1)
  81. PARAMETER (MKL_ENABLE_AVX2 = 2)
  82. PARAMETER (MKL_ENABLE_AVX512_MIC = 3)
  83. PARAMETER (MKL_ENABLE_AVX512 = 4)
  84. PARAMETER (MKL_ENABLE_AVX512_MIC_E1 = 5)
  85. PARAMETER (MKL_ENABLE_AVX512_E1 = 6)
  86. PARAMETER (MKL_ENABLE_AVX512_E2 = 7)
  87. PARAMETER (MKL_ENABLE_AVX512_E3 = 8)
  88. PARAMETER (MKL_ENABLE_AVX512_E4 = 9)
  89. PARAMETER (MKL_INTERFACE_LP64 = INT( Z"00000000" ))
  90. PARAMETER (MKL_INTERFACE_ILP64 = INT( Z"00000001" ))
  91. PARAMETER (MKL_INTERFACE_GNU = INT( Z"00000002" ))
  92. PARAMETER (MKL_THREADING_INTEL = 0)
  93. PARAMETER (MKL_THREADING_SEQUENTIAL = 1)
  94. PARAMETER (MKL_THREADING_PGI = 2)
  95. PARAMETER (MKL_THREADING_GNU = 3)
  96. PARAMETER (MKL_THREADING_TBB = 4)
  97. PARAMETER (MKL_CBWR_BRANCH = 1)
  98. PARAMETER (MKL_CBWR_ALL = -1)
  99. PARAMETER (MKL_CBWR_OFF = 0)
  100. PARAMETER (MKL_CBWR_UNSET_ALL = 0)
  101. PARAMETER (MKL_CBWR_BRANCH_OFF = 1)
  102. PARAMETER (MKL_CBWR_AUTO = 2)
  103. PARAMETER (MKL_CBWR_COMPATIBLE = 3)
  104. PARAMETER (MKL_CBWR_SSE2 = 4)
  105. PARAMETER (MKL_CBWR_SSSE3 = 6)
  106. PARAMETER (MKL_CBWR_SSE4_1 = 7)
  107. PARAMETER (MKL_CBWR_SSE4_2 = 8)
  108. PARAMETER (MKL_CBWR_AVX = 9)
  109. PARAMETER (MKL_CBWR_AVX2 = 10)
  110. PARAMETER (MKL_CBWR_AVX512_MIC = 11)
  111. PARAMETER (MKL_CBWR_AVX512 = 12)
  112. PARAMETER (MKL_CBWR_AVX512_MIC_E1 = 13)
  113. PARAMETER (MKL_CBWR_AVX512_E1 = 14)
  114. PARAMETER (MKL_CBWR_STRICT = 65536)
  115. PARAMETER (MKL_CBWR_SUCCESS = 0)
  116. PARAMETER (MKL_CBWR_ERR_INVALID_SETTINGS = -1)
  117. PARAMETER (MKL_CBWR_ERR_INVALID_INPUT = -2)
  118. PARAMETER (MKL_CBWR_ERR_UNSUPPORTED_BRANCH = -3)
  119. PARAMETER (MKL_CBWR_ERR_UNKNOWN_BRANCH = -4)
  120. PARAMETER (MKL_CBWR_ERR_MODE_CHANGE_FAILURE = -8)
  121. PARAMETER (MKL_PEAK_MEM_DISABLE = 0)
  122. PARAMETER (MKL_PEAK_MEM_ENABLE = 1)
  123. PARAMETER (MKL_PEAK_MEM_RESET = -1)
  124. PARAMETER (MKL_PEAK_MEM = 2)
  125. PARAMETER (MKL_MEM_MCDRAM = 1)
  126. INTERFACE
  127. SUBROUTINE MKL_GET_VERSION_STRING(BUF)
  128. CHARACTER*(*) BUF
  129. END SUBROUTINE
  130. END INTERFACE
  131. INTERFACE
  132. DOUBLE PRECISION FUNCTION MKL_GET_CPU_FREQUENCY()
  133. END FUNCTION
  134. END INTERFACE
  135. INTERFACE
  136. DOUBLE PRECISION FUNCTION MKL_GET_MAX_CPU_FREQUENCY()
  137. END FUNCTION
  138. END INTERFACE
  139. INTERFACE
  140. DOUBLE PRECISION FUNCTION MKL_GET_CLOCKS_FREQUENCY()
  141. END FUNCTION
  142. END INTERFACE
  143. INTERFACE
  144. SUBROUTINE MKL_GET_CPU_CLOCKS(CPU_CLOCKS)
  145. INTEGER*8 CPU_CLOCKS
  146. END SUBROUTINE
  147. END INTERFACE
  148. ! Threading control functions
  149. INTERFACE
  150. INTEGER*4 FUNCTION MKL_GET_MAX_THREADS()
  151. END FUNCTION
  152. END INTERFACE
  153. INTERFACE
  154. INTEGER*4 FUNCTION MKL_GET_NUM_STRIPES()
  155. END FUNCTION
  156. END INTERFACE
  157. INTERFACE
  158. INTEGER*4 FUNCTION MKL_DOMAIN_GET_MAX_THREADS(DOMAIN)
  159. INTEGER*4 DOMAIN
  160. END FUNCTION
  161. END INTERFACE
  162. INTERFACE
  163. INTEGER*4 FUNCTION MKL_SET_NUM_THREADS_LOCAL(NTHRS)
  164. INTEGER*4 NTHRS
  165. END FUNCTION
  166. END INTERFACE
  167. INTERFACE
  168. SUBROUTINE MKL_SET_NUM_THREADS(NTHRS)
  169. INTEGER*4 NTHRS
  170. END SUBROUTINE
  171. END INTERFACE
  172. INTERFACE
  173. SUBROUTINE MKL_SET_NUM_STRIPES(NSTRP)
  174. INTEGER*4 NSTRP
  175. END SUBROUTINE
  176. END INTERFACE
  177. INTERFACE
  178. INTEGER*4 FUNCTION MKL_DOMAIN_SET_NUM_THREADS(NTHRS,DOMAIN)
  179. INTEGER*4 NTHRS
  180. INTEGER*4 DOMAIN
  181. END FUNCTION
  182. END INTERFACE
  183. INTERFACE
  184. INTEGER*4 FUNCTION MKL_GET_DYNAMIC()
  185. END FUNCTION
  186. END INTERFACE
  187. INTERFACE
  188. SUBROUTINE MKL_SET_DYNAMIC(MKL_DYNAMIC)
  189. INTEGER*4 MKL_DYNAMIC
  190. END SUBROUTINE
  191. END INTERFACE
  192. ! Memory functions
  193. INTERFACE
  194. FUNCTION MKL_MALLOC(SIZE,ALIGN)
  195. USE ISO_C_BINDING
  196. INTEGER(KIND=C_INTPTR_T) MKL_MALLOC
  197. INTEGER(KIND=C_SIZE_T) SIZE
  198. INTEGER*4 ALIGN
  199. END FUNCTION MKL_MALLOC
  200. END INTERFACE
  201. INTERFACE
  202. FUNCTION MKL_CALLOC(NUM,SIZE,ALIGN)
  203. USE ISO_C_BINDING
  204. INTEGER(KIND=C_INTPTR_T) MKL_CALLOC
  205. INTEGER(KIND=C_SIZE_T) NUM,SIZE
  206. INTEGER*4 ALIGN
  207. END FUNCTION MKL_CALLOC
  208. END INTERFACE
  209. INTERFACE
  210. FUNCTION MKL_REALLOC(PTR,SIZE)
  211. USE ISO_C_BINDING
  212. INTEGER(KIND=C_INTPTR_T) MKL_REALLOC,PTR
  213. INTEGER(KIND=C_SIZE_T) SIZE
  214. END FUNCTION MKL_REALLOC
  215. END INTERFACE
  216. INTERFACE
  217. SUBROUTINE MKL_FREE(PTR)
  218. USE ISO_C_BINDING
  219. INTEGER(KIND=C_INTPTR_T) PTR
  220. END SUBROUTINE MKL_FREE
  221. END INTERFACE
  222. INTERFACE
  223. INTEGER*8 FUNCTION MKL_MEM_STAT(N_BUFF)
  224. INTEGER*4 N_BUFF
  225. END FUNCTION
  226. END INTERFACE
  227. INTERFACE
  228. INTEGER*8 FUNCTION MKL_PEAK_MEM_USAGE(RESET)
  229. INTEGER*4 RESET
  230. END FUNCTION
  231. END INTERFACE
  232. INTERFACE
  233. SUBROUTINE MKL_FREE_BUFFERS()
  234. END SUBROUTINE
  235. END INTERFACE
  236. INTERFACE
  237. SUBROUTINE MKL_THREAD_FREE_BUFFERS()
  238. END SUBROUTINE
  239. END INTERFACE
  240. INTERFACE
  241. INTEGER*4 FUNCTION MKL_DISABLE_FAST_MM()
  242. END FUNCTION
  243. END INTERFACE
  244. INTERFACE
  245. INTEGER*4 FUNCTION MKL_SET_MEMORY_LIMIT(MEM_TYPE,LIMIT)
  246. USE ISO_C_BINDING
  247. INTEGER*4 MEM_TYPE
  248. INTEGER(KIND=C_SIZE_T) LIMIT
  249. END FUNCTION
  250. END INTERFACE
  251. ! oneMKL Progress routine
  252. INTERFACE
  253. FUNCTION MKL_PROGRESS( THREAD, STEP, STAGE )
  254. INTEGER*4 THREAD,STEP
  255. CHARACTER*(*) STAGE
  256. INTEGER MKL_PROGRESS
  257. END FUNCTION
  258. END INTERFACE
  259. INTERFACE
  260. INTEGER*4 FUNCTION MKL_ENABLE_INSTRUCTIONS(TYPE)
  261. INTEGER*4 TYPE
  262. END FUNCTION
  263. END INTERFACE
  264. ! oneMKL dynamic interface
  265. INTERFACE
  266. INTEGER*4 FUNCTION MKL_SET_INTERFACE_LAYER(MKL_INTERFACE)
  267. INTEGER*4 MKL_INTERFACE
  268. END FUNCTION
  269. END INTERFACE
  270. INTERFACE
  271. INTEGER*4 FUNCTION MKL_SET_THREADING_LAYER(MKL_THREADING)
  272. INTEGER*4 MKL_THREADING
  273. END FUNCTION
  274. END INTERFACE
  275. ! oneMKL CBWR functions
  276. INTERFACE
  277. INTEGER*4 FUNCTION MKL_CBWR_GET(MKL_CBWR)
  278. INTEGER*4 MKL_CBWR
  279. END FUNCTION
  280. END INTERFACE
  281. INTERFACE
  282. INTEGER*4 FUNCTION MKL_CBWR_SET(MKL_CBWR)
  283. INTEGER*4 MKL_CBWR
  284. END FUNCTION
  285. END INTERFACE
  286. INTERFACE
  287. INTEGER*4 FUNCTION MKL_CBWR_GET_AUTO_BRANCH()
  288. END FUNCTION
  289. END INTERFACE
  290. ! oneMKL MPI routines
  291. INTEGER*4 MKL_BLACS_CUSTOM
  292. INTEGER*4 MKL_BLACS_MSMPI
  293. INTEGER*4 MKL_BLACS_INTELMPI
  294. INTEGER*4 MKL_BLACS_MPICH2
  295. PARAMETER (MKL_BLACS_CUSTOM = 0)
  296. PARAMETER (MKL_BLACS_MSMPI = 1)
  297. PARAMETER (MKL_BLACS_INTELMPI = 2)
  298. PARAMETER (MKL_BLACS_MPICH2 = 3)
  299. INTERFACE
  300. INTEGER*4 FUNCTION MKL_SET_MPI(VERBOSE, CUSTOM_LIBRARY_NAME)
  301. INTEGER*4 VERBOSE
  302. CHARACTER*(*) CUSTOM_LIBRARY_NAME
  303. END FUNCTION
  304. END INTERFACE
  305. ! oneMKL verbose function
  306. INTERFACE
  307. INTEGER*4 FUNCTION MKL_VERBOSE(ENABLE)
  308. INTEGER*4 ENABLE
  309. END FUNCTION
  310. END INTERFACE
  311. INTERFACE
  312. INTEGER*4 FUNCTION MKL_VERBOSE_OUTPUT_FILE(FILE_PATH)
  313. CHARACTER*(*) FILE_PATH
  314. END FUNCTION
  315. END INTERFACE
  316. INTERFACE
  317. INTEGER*4 FUNCTION MKL_SET_ENV_MODE(MODE)
  318. INTEGER*4 MODE
  319. END FUNCTION
  320. END INTERFACE
  321. ! Obsolete names
  322. INTEGER*4 MKL_CBWR_SSE3
  323. PARAMETER (MKL_CBWR_SSE3 = 5)
  324. !*******************************************************************************