mkl_lapack_omp_variant_lp64.f90 75 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689
  1. !===============================================================================
  2. ! Copyright 2020-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 for
  16. ! OpenMP offload for LAPACK
  17. !*******************************************************************************
  18. interface
  19. subroutine mkl_lapack_cgebrd_omp_offload_lp64(m, n, a, lda, d, e,&
  20. tauq, taup, work, &
  21. lwork, &
  22. info) bind(c)
  23. integer, intent(in) :: m
  24. integer, intent(in) :: n
  25. integer, intent(in) :: lda
  26. integer, intent(in) :: lwork
  27. integer, intent(out) :: info
  28. complex*8, intent(inout) :: a(lda,*)
  29. real, intent(out) :: d(*)
  30. real, intent(out) :: e(*)
  31. complex*8, intent(out) :: tauq(*)
  32. complex*8, intent(out) :: taup(*)
  33. complex*8, intent(out) :: work(*)
  34. end subroutine mkl_lapack_cgebrd_omp_offload_lp64
  35. subroutine mkl_lapack_dgebrd_omp_offload_lp64(m, n, a, lda, d, e,&
  36. tauq, taup, work, &
  37. lwork, &
  38. info) bind(c)
  39. integer, intent(in) :: m
  40. integer, intent(in) :: n
  41. integer, intent(in) :: lda
  42. integer, intent(in) :: lwork
  43. integer, intent(out) :: info
  44. double precision, intent(inout) :: a(lda,*)
  45. double precision, intent(out) :: d(*)
  46. double precision, intent(out) :: e(*)
  47. double precision, intent(out) :: tauq(*)
  48. double precision, intent(out) :: taup(*)
  49. double precision, intent(out) :: work(*)
  50. end subroutine mkl_lapack_dgebrd_omp_offload_lp64
  51. subroutine mkl_lapack_sgebrd_omp_offload_lp64(m, n, a, lda, d, e,&
  52. tauq, taup, work, &
  53. lwork, &
  54. info) bind(c)
  55. integer, intent(in) :: m
  56. integer, intent(in) :: n
  57. integer, intent(in) :: lda
  58. integer, intent(in) :: lwork
  59. integer, intent(out) :: info
  60. real, intent(inout) :: a(lda,*)
  61. real, intent(out) :: d(*)
  62. real, intent(out) :: e(*)
  63. real, intent(out) :: tauq(*)
  64. real, intent(out) :: taup(*)
  65. real, intent(out) :: work(*)
  66. end subroutine mkl_lapack_sgebrd_omp_offload_lp64
  67. subroutine mkl_lapack_zgebrd_omp_offload_lp64(m, n, a, lda, d, e,&
  68. tauq, taup, work, &
  69. lwork, &
  70. info) bind(c)
  71. integer, intent(in) :: m
  72. integer, intent(in) :: n
  73. integer, intent(in) :: lda
  74. integer, intent(in) :: lwork
  75. integer, intent(out) :: info
  76. complex*16, intent(inout) :: a(lda,*)
  77. double precision, intent(out) :: d(*)
  78. double precision, intent(out) :: e(*)
  79. complex*16, intent(out) :: tauq(*)
  80. complex*16, intent(out) :: taup(*)
  81. complex*16, intent(out) :: work(*)
  82. end subroutine mkl_lapack_zgebrd_omp_offload_lp64
  83. subroutine mkl_lapack_cgeqrf_omp_offload_lp64(m, n, a, lda, tau, &
  84. work, lwork, &
  85. info) bind(c)
  86. integer, intent(in) :: m
  87. integer, intent(in) :: n
  88. complex*8, intent(inout) :: a(lda,*)
  89. integer, intent(in) :: lda
  90. complex*8, intent(out) :: tau(*)
  91. complex*8, intent(out) :: work(*)
  92. integer, intent(in) :: lwork
  93. integer, intent(out) :: info
  94. end subroutine mkl_lapack_cgeqrf_omp_offload_lp64
  95. subroutine mkl_lapack_dgeqrf_omp_offload_lp64(m, n, a, lda, tau, &
  96. work, lwork, &
  97. info) bind(c)
  98. integer, intent(in) :: m
  99. integer, intent(in) :: n
  100. double precision, intent(inout) :: a(lda,*)
  101. integer, intent(in) :: lda
  102. double precision, intent(out) :: tau(*)
  103. double precision, intent(out) :: work(*)
  104. integer, intent(in) :: lwork
  105. integer, intent(out) :: info
  106. end subroutine mkl_lapack_dgeqrf_omp_offload_lp64
  107. subroutine mkl_lapack_sgeqrf_omp_offload_lp64(m, n, a, lda, tau, &
  108. work, lwork, &
  109. info) bind(c)
  110. integer, intent(in) :: m
  111. integer, intent(in) :: n
  112. real, intent(inout) :: a(lda,*)
  113. integer, intent(in) :: lda
  114. real, intent(out) :: tau(*)
  115. real, intent(out) :: work(*)
  116. integer, intent(in) :: lwork
  117. integer, intent(out) :: info
  118. end subroutine mkl_lapack_sgeqrf_omp_offload_lp64
  119. subroutine mkl_lapack_zgeqrf_omp_offload_lp64(m, n, a, lda, tau, &
  120. work, lwork, &
  121. info) bind(c)
  122. integer, intent(in) :: m
  123. integer, intent(in) :: n
  124. complex*16, intent(inout) :: a(lda,*)
  125. integer, intent(in) :: lda
  126. complex*16, intent(out) :: tau(*)
  127. complex*16, intent(out) :: work(*)
  128. integer, intent(in) :: lwork
  129. integer, intent(out) :: info
  130. end subroutine mkl_lapack_zgeqrf_omp_offload_lp64
  131. subroutine mkl_lapack_cgesvd_omp_offload_lp64(jobu, jobvt, m, n, &
  132. a, lda, s, u, ldu, &
  133. vt, ldvt, work, &
  134. lwork, rwork, &
  135. info) bind(c)
  136. character*1, intent(in) :: jobu
  137. character*1, intent(in) :: jobvt
  138. integer, intent(in) :: m
  139. integer, intent(in) :: n
  140. integer, intent(in) :: lda
  141. integer, intent(in) :: ldu
  142. integer, intent(in) :: ldvt
  143. integer, intent(in) :: lwork
  144. integer, intent(out) :: info
  145. complex*8, intent(inout) :: a(lda,*)
  146. real, intent(out) :: s(*)
  147. complex*8, intent(out) :: u(ldu,*)
  148. complex*8, intent(out) :: vt(ldvt,*)
  149. complex*8, intent(out) :: work(*)
  150. real, intent(out) :: rwork(*)
  151. end subroutine mkl_lapack_cgesvd_omp_offload_lp64
  152. subroutine mkl_lapack_zgesvd_omp_offload_lp64(jobu, jobvt, m, n, &
  153. a, lda, s, u, ldu, &
  154. vt, ldvt, work, &
  155. lwork, rwork, &
  156. info) bind(c)
  157. character*1, intent(in) :: jobu
  158. character*1, intent(in) :: jobvt
  159. integer, intent(in) :: m
  160. integer, intent(in) :: n
  161. integer, intent(in) :: lda
  162. integer, intent(in) :: ldu
  163. integer, intent(in) :: ldvt
  164. integer, intent(in) :: lwork
  165. integer, intent(out) :: info
  166. complex*16, intent(inout) :: a(lda,*)
  167. double precision, intent(out) :: s(*)
  168. complex*16, intent(out) :: u(ldu,*)
  169. complex*16, intent(out) :: vt(ldvt,*)
  170. complex*16, intent(out) :: work(*)
  171. double precision, intent(out) :: rwork(*)
  172. end subroutine mkl_lapack_zgesvd_omp_offload_lp64
  173. subroutine mkl_lapack_dgesvd_omp_offload_lp64(jobu, jobvt, m, n, &
  174. a, lda, s, u, ldu, &
  175. vt, ldvt, work, &
  176. lwork, &
  177. info) bind(c)
  178. character*1, intent(in) :: jobu
  179. character*1, intent(in) :: jobvt
  180. integer, intent(in) :: m
  181. integer, intent(in) :: n
  182. integer, intent(in) :: lda
  183. integer, intent(in) :: ldu
  184. integer, intent(in) :: ldvt
  185. integer, intent(in) :: lwork
  186. integer, intent(out) :: info
  187. double precision, intent(inout) :: a(lda,*)
  188. double precision, intent(out) :: s(*)
  189. double precision, intent(out) :: u(ldu,*)
  190. double precision, intent(out) :: vt(ldvt,*)
  191. double precision, intent(out) :: work(*)
  192. end subroutine mkl_lapack_dgesvd_omp_offload_lp64
  193. subroutine mkl_lapack_sgesvd_omp_offload_lp64(jobu, jobvt, m, n, &
  194. a, lda, s, u, ldu, &
  195. vt, ldvt, work, &
  196. lwork, &
  197. info) bind(c)
  198. character*1, intent(in) :: jobu
  199. character*1, intent(in) :: jobvt
  200. integer, intent(in) :: m
  201. integer, intent(in) :: n
  202. integer, intent(in) :: lda
  203. integer, intent(in) :: ldu
  204. integer, intent(in) :: ldvt
  205. integer, intent(in) :: lwork
  206. integer, intent(out) :: info
  207. real, intent(inout) :: a(lda,*)
  208. real, intent(out) :: s(*)
  209. real, intent(out) :: u(ldu,*)
  210. real, intent(out) :: vt(ldvt,*)
  211. real, intent(out) :: work(*)
  212. end subroutine mkl_lapack_sgesvd_omp_offload_lp64
  213. subroutine mkl_lapack_cgetrf_omp_offload_lp64(m, n, a, lda, ipiv,&
  214. info) bind(c)
  215. integer, intent(in) :: m
  216. integer, intent(in) :: n
  217. integer, intent(in) :: lda
  218. integer, intent(out) :: info
  219. complex*8, intent(inout) :: a(lda,*)
  220. integer, intent(out) :: ipiv(*)
  221. end subroutine mkl_lapack_cgetrf_omp_offload_lp64
  222. subroutine mkl_lapack_dgetrf_omp_offload_lp64(m, n, a, lda, ipiv,&
  223. info) bind(c)
  224. integer, intent(in) :: m
  225. integer, intent(in) :: n
  226. integer, intent(in) :: lda
  227. integer, intent(out) :: info
  228. double precision, intent(inout) :: a(lda,*)
  229. integer, intent(out) :: ipiv(*)
  230. end subroutine mkl_lapack_dgetrf_omp_offload_lp64
  231. subroutine mkl_lapack_sgetrf_omp_offload_lp64(m, n, a, lda, ipiv,&
  232. info) bind(c)
  233. integer, intent(in) :: m
  234. integer, intent(in) :: n
  235. integer, intent(in) :: lda
  236. integer, intent(out) :: info
  237. real, intent(inout) :: a(lda,*)
  238. integer, intent(out) :: ipiv(*)
  239. end subroutine mkl_lapack_sgetrf_omp_offload_lp64
  240. subroutine mkl_lapack_zgetrf_omp_offload_lp64(m, n, a, lda, ipiv,&
  241. info) bind(c)
  242. integer, intent(in) :: m
  243. integer, intent(in) :: n
  244. integer, intent(in) :: lda
  245. integer, intent(out) :: info
  246. complex*16, intent(inout) :: a(lda,*)
  247. integer, intent(out) :: ipiv(*)
  248. end subroutine mkl_lapack_zgetrf_omp_offload_lp64
  249. subroutine mkl_lapack_cgetrf_batch_strided_omp_offload_lp64(m, n,&
  250. a, lda, &
  251. stride_a, &
  252. ipiv, &
  253. stride_ipiv, &
  254. batch_size, &
  255. info) bind(c)
  256. integer, intent(in) :: m
  257. integer, intent(in) :: n
  258. integer, intent(in) :: lda
  259. integer, intent(in) :: stride_a
  260. integer, intent(in) :: stride_ipiv
  261. integer, intent(in) :: batch_size
  262. complex*8, intent(inout) :: a(stride_a,*)
  263. integer, intent(out) :: ipiv(stride_ipiv,*)
  264. integer, intent(out) :: info(*)
  265. end subroutine mkl_lapack_cgetrf_batch_strided_omp_offload_lp64
  266. subroutine mkl_lapack_dgetrf_batch_strided_omp_offload_lp64(m, n,&
  267. a, lda, &
  268. stride_a, &
  269. ipiv, &
  270. stride_ipiv, &
  271. batch_size, &
  272. info) bind(c)
  273. integer, intent(in) :: m
  274. integer, intent(in) :: n
  275. integer, intent(in) :: lda
  276. integer, intent(in) :: stride_a
  277. integer, intent(in) :: stride_ipiv
  278. integer, intent(in) :: batch_size
  279. double precision, intent(inout) :: a(stride_a,*)
  280. integer, intent(out) :: ipiv(stride_ipiv,*)
  281. integer, intent(out) :: info(*)
  282. end subroutine mkl_lapack_dgetrf_batch_strided_omp_offload_lp64
  283. subroutine mkl_lapack_sgetrf_batch_strided_omp_offload_lp64(m, n,&
  284. a, lda, &
  285. stride_a, &
  286. ipiv, &
  287. stride_ipiv, &
  288. batch_size, &
  289. info) bind(c)
  290. integer, intent(in) :: m
  291. integer, intent(in) :: n
  292. integer, intent(in) :: lda
  293. integer, intent(in) :: stride_a
  294. integer, intent(in) :: stride_ipiv
  295. integer, intent(in) :: batch_size
  296. real, intent(inout) :: a(stride_a,*)
  297. integer, intent(out) :: ipiv(stride_ipiv,*)
  298. integer, intent(out) :: info(*)
  299. end subroutine mkl_lapack_sgetrf_batch_strided_omp_offload_lp64
  300. subroutine mkl_lapack_zgetrf_batch_strided_omp_offload_lp64(m, n,&
  301. a, lda, &
  302. stride_a, &
  303. ipiv, &
  304. stride_ipiv, &
  305. batch_size, &
  306. info) bind(c)
  307. integer, intent(in) :: m
  308. integer, intent(in) :: n
  309. integer, intent(in) :: lda
  310. integer, intent(in) :: stride_a
  311. integer, intent(in) :: stride_ipiv
  312. integer, intent(in) :: batch_size
  313. complex*16, intent(inout) :: a(stride_a,*)
  314. integer, intent(out) :: ipiv(stride_ipiv,*)
  315. integer, intent(out) :: info(*)
  316. end subroutine mkl_lapack_zgetrf_batch_strided_omp_offload_lp64
  317. subroutine mkl_lapack_cgetri_omp_offload_lp64(n, a, lda, ipiv, &
  318. work, lwork, &
  319. info) bind(c)
  320. integer, intent(in) :: n
  321. integer, intent(in) :: lda
  322. integer, intent(in) :: lwork
  323. integer, intent(out) :: info
  324. complex*8, intent(inout) :: a(lda,*)
  325. integer, intent(in) :: ipiv(*)
  326. complex*8, intent(out) :: work(*)
  327. end subroutine mkl_lapack_cgetri_omp_offload_lp64
  328. subroutine mkl_lapack_dgetri_omp_offload_lp64(n, a, lda, ipiv, &
  329. work, lwork, &
  330. info) bind(c)
  331. integer, intent(in) :: n
  332. integer, intent(in) :: lda
  333. integer, intent(in) :: lwork
  334. integer, intent(out) :: info
  335. double precision, intent(inout) :: a(lda,*)
  336. integer, intent(in) :: ipiv(*)
  337. double precision, intent(out) :: work(*)
  338. end subroutine mkl_lapack_dgetri_omp_offload_lp64
  339. subroutine mkl_lapack_sgetri_omp_offload_lp64(n, a, lda, ipiv, &
  340. work, lwork, &
  341. info) bind(c)
  342. integer, intent(in) :: n
  343. integer, intent(in) :: lda
  344. integer, intent(in) :: lwork
  345. integer, intent(out) :: info
  346. real, intent(inout) :: a(lda,*)
  347. integer, intent(in) :: ipiv(*)
  348. real, intent(out) :: work(*)
  349. end subroutine mkl_lapack_sgetri_omp_offload_lp64
  350. subroutine mkl_lapack_zgetri_omp_offload_lp64(n, a, lda, ipiv, &
  351. work, lwork, &
  352. info) bind(c)
  353. integer, intent(in) :: n
  354. integer, intent(in) :: lda
  355. integer, intent(in) :: lwork
  356. integer, intent(out) :: info
  357. complex*16, intent(inout) :: a(lda,*)
  358. integer, intent(in) :: ipiv(*)
  359. complex*16, intent(out) :: work(*)
  360. end subroutine mkl_lapack_zgetri_omp_offload_lp64
  361. subroutine mkl_lapack_cgetri_oop_batch_strided_omp_offload_lp64(n,&
  362. a, lda, &
  363. stride_a, &
  364. ipiv, &
  365. stride_ipiv, &
  366. ainv, ldainv, &
  367. stride_ainv, &
  368. batch_size, &
  369. info) bind(c)
  370. integer, intent(in) :: n
  371. integer, intent(in) :: lda
  372. integer, intent(in) :: stride_a
  373. integer, intent(in) :: stride_ipiv
  374. integer, intent(in) :: ldainv
  375. integer, intent(in) :: stride_ainv
  376. integer, intent(in) :: batch_size
  377. complex*8, intent(in) :: a(stride_a,*)
  378. integer, intent(in) :: ipiv(stride_ipiv,*)
  379. complex*8, intent(inout) :: ainv(stride_ainv,*)
  380. integer, intent(out) :: info(*)
  381. end subroutine mkl_lapack_cgetri_oop_batch_strided_omp_offload_lp64
  382. subroutine mkl_lapack_dgetri_oop_batch_strided_omp_offload_lp64(n,&
  383. a, lda, &
  384. stride_a, &
  385. ipiv, &
  386. stride_ipiv, &
  387. ainv, ldainv, &
  388. stride_ainv, &
  389. batch_size, &
  390. info) bind(c)
  391. integer, intent(in) :: n
  392. integer, intent(in) :: lda
  393. integer, intent(in) :: stride_a
  394. integer, intent(in) :: stride_ipiv
  395. integer, intent(in) :: ldainv
  396. integer, intent(in) :: stride_ainv
  397. integer, intent(in) :: batch_size
  398. double precision, intent(in) :: a(stride_a,*)
  399. integer, intent(in) :: ipiv(stride_ipiv,*)
  400. double precision, intent(inout) :: ainv(stride_ainv,*)
  401. integer, intent(out) :: info(*)
  402. end subroutine mkl_lapack_dgetri_oop_batch_strided_omp_offload_lp64
  403. subroutine mkl_lapack_sgetri_oop_batch_strided_omp_offload_lp64(n,&
  404. a, lda, &
  405. stride_a, &
  406. ipiv, &
  407. stride_ipiv, &
  408. ainv, ldainv, &
  409. stride_ainv, &
  410. batch_size, &
  411. info) bind(c)
  412. integer, intent(in) :: n
  413. integer, intent(in) :: lda
  414. integer, intent(in) :: stride_a
  415. integer, intent(in) :: stride_ipiv
  416. integer, intent(in) :: ldainv
  417. integer, intent(in) :: stride_ainv
  418. integer, intent(in) :: batch_size
  419. real, intent(in) :: a(stride_a,*)
  420. integer, intent(in) :: ipiv(stride_ipiv,*)
  421. real, intent(inout) :: ainv(stride_ainv,*)
  422. integer, intent(out) :: info(*)
  423. end subroutine mkl_lapack_sgetri_oop_batch_strided_omp_offload_lp64
  424. subroutine mkl_lapack_zgetri_oop_batch_strided_omp_offload_lp64(n,&
  425. a, lda, &
  426. stride_a, &
  427. ipiv, &
  428. stride_ipiv, &
  429. ainv, ldainv, &
  430. stride_ainv, &
  431. batch_size, &
  432. info) bind(c)
  433. integer, intent(in) :: n
  434. integer, intent(in) :: lda
  435. integer, intent(in) :: stride_a
  436. integer, intent(in) :: stride_ipiv
  437. integer, intent(in) :: ldainv
  438. integer, intent(in) :: stride_ainv
  439. integer, intent(in) :: batch_size
  440. complex*16, intent(in) :: a(stride_a,*)
  441. integer, intent(in) :: ipiv(stride_ipiv,*)
  442. complex*16, intent(inout) :: ainv(stride_ainv,*)
  443. integer, intent(out) :: info(*)
  444. end subroutine mkl_lapack_zgetri_oop_batch_strided_omp_offload_lp64
  445. subroutine mkl_lapack_cgetrs_omp_offload_lp64(trans, n, nrhs, a, &
  446. lda, ipiv, b, ldb, &
  447. info) bind(c)
  448. character*1, intent(in) :: trans
  449. integer, intent(in) :: n
  450. integer, intent(in) :: nrhs
  451. integer, intent(in) :: lda
  452. integer, intent(in) :: ldb
  453. integer, intent(out) :: info
  454. complex*8, intent(in) :: a(lda,*)
  455. integer, intent(in) :: ipiv(*)
  456. complex*8, intent(inout) :: b(ldb,*)
  457. end subroutine mkl_lapack_cgetrs_omp_offload_lp64
  458. subroutine mkl_lapack_dgetrs_omp_offload_lp64(trans, n, nrhs, a, &
  459. lda, ipiv, b, ldb, &
  460. info) bind(c)
  461. character*1, intent(in) :: trans
  462. integer, intent(in) :: n
  463. integer, intent(in) :: nrhs
  464. integer, intent(in) :: lda
  465. integer, intent(in) :: ldb
  466. integer, intent(out) :: info
  467. double precision, intent(in) :: a(lda,*)
  468. integer, intent(in) :: ipiv(*)
  469. double precision, intent(inout) :: b(ldb,*)
  470. end subroutine mkl_lapack_dgetrs_omp_offload_lp64
  471. subroutine mkl_lapack_sgetrs_omp_offload_lp64(trans, n, nrhs, a, &
  472. lda, ipiv, b, ldb, &
  473. info) bind(c)
  474. character*1, intent(in) :: trans
  475. integer, intent(in) :: n
  476. integer, intent(in) :: nrhs
  477. integer, intent(in) :: lda
  478. integer, intent(in) :: ldb
  479. integer, intent(out) :: info
  480. real, intent(in) :: a(lda,*)
  481. integer, intent(in) :: ipiv(*)
  482. real, intent(inout) :: b(ldb,*)
  483. end subroutine mkl_lapack_sgetrs_omp_offload_lp64
  484. subroutine mkl_lapack_zgetrs_omp_offload_lp64(trans, n, nrhs, a, &
  485. lda, ipiv, b, ldb, &
  486. info) bind(c)
  487. character*1, intent(in) :: trans
  488. integer, intent(in) :: n
  489. integer, intent(in) :: nrhs
  490. integer, intent(in) :: lda
  491. integer, intent(in) :: ldb
  492. integer, intent(out) :: info
  493. complex*16, intent(in) :: a(lda,*)
  494. integer, intent(in) :: ipiv(*)
  495. complex*16, intent(inout) :: b(ldb,*)
  496. end subroutine mkl_lapack_zgetrs_omp_offload_lp64
  497. subroutine mkl_lapack_cheev_omp_offload_lp64(jobz, uplo, n, a, &
  498. lda, w, work, lwork,&
  499. rwork, info) bind(c)
  500. character*1, intent(in) :: jobz
  501. character*1, intent(in) :: uplo
  502. integer, intent(in) :: n
  503. integer, intent(in) :: lda
  504. integer, intent(in) :: lwork
  505. integer, intent(out) :: info
  506. complex*8, intent(inout) :: a(lda,*)
  507. real, intent(out) :: w(*)
  508. complex*8, intent(out) :: work(*)
  509. real, intent(out) :: rwork(*)
  510. end subroutine mkl_lapack_cheev_omp_offload_lp64
  511. subroutine mkl_lapack_zheev_omp_offload_lp64(jobz, uplo, n, a, &
  512. lda, w, work, lwork,&
  513. rwork, info) bind(c)
  514. character*1, intent(in) :: jobz
  515. character*1, intent(in) :: uplo
  516. integer, intent(in) :: n
  517. integer, intent(in) :: lda
  518. integer, intent(in) :: lwork
  519. integer, intent(out) :: info
  520. complex*16, intent(inout) :: a(lda,*)
  521. double precision, intent(out) :: w(*)
  522. complex*16, intent(out) :: work(*)
  523. double precision, intent(out) :: rwork(*)
  524. end subroutine mkl_lapack_zheev_omp_offload_lp64
  525. subroutine mkl_lapack_cheevd_omp_offload_lp64(jobz, uplo, n, a, &
  526. lda, w, work, &
  527. lwork, rwork, &
  528. lrwork, iwork, &
  529. liwork, &
  530. info) bind(c)
  531. character*1, intent(in) :: jobz
  532. character*1, intent(in) :: uplo
  533. integer, intent(in) :: n
  534. integer, intent(in) :: lda
  535. integer, intent(in) :: lwork
  536. integer, intent(in) :: lrwork
  537. integer, intent(in) :: liwork
  538. integer, intent(out) :: info
  539. complex*8, intent(inout) :: a(lda,*)
  540. real, intent(out) :: w(*)
  541. complex*8, intent(out) :: work(*)
  542. real, intent(out) :: rwork(*)
  543. integer, intent(out) :: iwork(*)
  544. end subroutine mkl_lapack_cheevd_omp_offload_lp64
  545. subroutine mkl_lapack_zheevd_omp_offload_lp64(jobz, uplo, n, a, &
  546. lda, w, work, &
  547. lwork, rwork, &
  548. lrwork, iwork, &
  549. liwork, &
  550. info) bind(c)
  551. character*1, intent(in) :: jobz
  552. character*1, intent(in) :: uplo
  553. integer, intent(in) :: n
  554. integer, intent(in) :: lda
  555. integer, intent(in) :: lwork
  556. integer, intent(in) :: lrwork
  557. integer, intent(in) :: liwork
  558. integer, intent(out) :: info
  559. complex*16, intent(inout) :: a(lda,*)
  560. double precision, intent(out) :: w(*)
  561. complex*16, intent(out) :: work(*)
  562. double precision, intent(out) :: rwork(*)
  563. integer, intent(out) :: iwork(*)
  564. end subroutine mkl_lapack_zheevd_omp_offload_lp64
  565. subroutine mkl_lapack_cheevx_omp_offload_lp64(jobz, range, uplo, &
  566. n, a, lda, vl, vu, &
  567. il, iu, abstol, m, &
  568. w, z, ldz, work, &
  569. lwork, rwork, &
  570. iwork, ifail, &
  571. info) bind(c)
  572. character*1, intent(in) :: jobz
  573. character*1, intent(in) :: range
  574. character*1, intent(in) :: uplo
  575. integer, intent(in) :: n
  576. integer, intent(in) :: lda
  577. real, intent(in) :: vl
  578. real, intent(in) :: vu
  579. integer, intent(in) :: il
  580. integer, intent(in) :: iu
  581. real, intent(in) :: abstol
  582. integer, intent(out) :: m
  583. integer, intent(in) :: ldz
  584. integer, intent(in) :: lwork
  585. integer, intent(out) :: info
  586. complex*8, intent(inout) :: a(lda,*)
  587. real, intent(out) :: w(*)
  588. complex*8, intent(out) :: z(ldz,*)
  589. complex*8, intent(out) :: work(*)
  590. real, intent(out) :: rwork(*)
  591. integer, intent(out) :: iwork(*)
  592. integer, intent(out) :: ifail(*)
  593. end subroutine mkl_lapack_cheevx_omp_offload_lp64
  594. subroutine mkl_lapack_zheevx_omp_offload_lp64(jobz, range, uplo, &
  595. n, a, lda, vl, vu, &
  596. il, iu, abstol, m, &
  597. w, z, ldz, work, &
  598. lwork, rwork, &
  599. iwork, ifail, &
  600. info) bind(c)
  601. character*1, intent(in) :: jobz
  602. character*1, intent(in) :: range
  603. character*1, intent(in) :: uplo
  604. integer, intent(in) :: n
  605. integer, intent(in) :: lda
  606. double precision, intent(in) :: vl
  607. double precision, intent(in) :: vu
  608. integer, intent(in) :: il
  609. integer, intent(in) :: iu
  610. double precision, intent(in) :: abstol
  611. integer, intent(out) :: m
  612. integer, intent(in) :: ldz
  613. integer, intent(in) :: lwork
  614. integer, intent(out) :: info
  615. complex*16, intent(inout) :: a(lda,*)
  616. double precision, intent(out) :: w(*)
  617. complex*16, intent(out) :: z(ldz,*)
  618. complex*16, intent(out) :: work(*)
  619. double precision, intent(out) :: rwork(*)
  620. integer, intent(out) :: iwork(*)
  621. integer, intent(out) :: ifail(*)
  622. end subroutine mkl_lapack_zheevx_omp_offload_lp64
  623. subroutine mkl_lapack_chegvd_omp_offload_lp64(itype, jobz, uplo, &
  624. n, a, lda, b, ldb, &
  625. w, work, lwork, &
  626. rwork, lrwork, &
  627. iwork, liwork, &
  628. info) bind(c)
  629. integer, intent(in) :: itype
  630. character*1, intent(in) :: jobz
  631. character*1, intent(in) :: uplo
  632. integer, intent(in) :: n
  633. integer, intent(in) :: lda
  634. integer, intent(in) :: ldb
  635. integer, intent(in) :: lwork
  636. integer, intent(in) :: lrwork
  637. integer, intent(in) :: liwork
  638. integer, intent(out) :: info
  639. complex*8, intent(inout) :: a(lda,*)
  640. complex*8, intent(inout) :: b(ldb,*)
  641. real, intent(out) :: w(*)
  642. complex*8, intent(out) :: work(*)
  643. real, intent(out) :: rwork(*)
  644. integer, intent(out) :: iwork(*)
  645. end subroutine mkl_lapack_chegvd_omp_offload_lp64
  646. subroutine mkl_lapack_zhegvd_omp_offload_lp64(itype, jobz, uplo, &
  647. n, a, lda, b, ldb, &
  648. w, work, lwork, &
  649. rwork, lrwork, &
  650. iwork, liwork, &
  651. info) bind(c)
  652. integer, intent(in) :: itype
  653. character*1, intent(in) :: jobz
  654. character*1, intent(in) :: uplo
  655. integer, intent(in) :: n
  656. integer, intent(in) :: lda
  657. integer, intent(in) :: ldb
  658. integer, intent(in) :: lwork
  659. integer, intent(in) :: lrwork
  660. integer, intent(in) :: liwork
  661. integer, intent(out) :: info
  662. complex*16, intent(inout) :: a(lda,*)
  663. complex*16, intent(inout) :: b(ldb,*)
  664. double precision, intent(out) :: w(*)
  665. complex*16, intent(out) :: work(*)
  666. double precision, intent(out) :: rwork(*)
  667. integer, intent(out) :: iwork(*)
  668. end subroutine mkl_lapack_zhegvd_omp_offload_lp64
  669. subroutine mkl_lapack_chegvx_omp_offload_lp64(itype, jobz, range,&
  670. uplo, n, a, lda, b,&
  671. ldb, vl, vu, il, &
  672. iu, abstol, m, w, &
  673. z, ldz, work, &
  674. lwork, rwork, &
  675. iwork, ifail, &
  676. info) bind(c)
  677. integer, intent(in) :: itype
  678. character*1, intent(in) :: jobz
  679. character*1, intent(in) :: range
  680. character*1, intent(in) :: uplo
  681. integer, intent(in) :: n
  682. integer, intent(in) :: lda
  683. integer, intent(in) :: ldb
  684. real, intent(in) :: vl
  685. real, intent(in) :: vu
  686. integer, intent(in) :: il
  687. integer, intent(in) :: iu
  688. real, intent(in) :: abstol
  689. integer, intent(out) :: m
  690. integer, intent(in) :: ldz
  691. integer, intent(in) :: lwork
  692. integer, intent(out) :: info
  693. complex*8, intent(inout) :: a(lda,*)
  694. complex*8, intent(inout) :: b(ldb,*)
  695. real, intent(out) :: w(*)
  696. complex*8, intent(out) :: z(ldz,*)
  697. complex*8, intent(out) :: work(*)
  698. real, intent(out) :: rwork(*)
  699. integer, intent(out) :: iwork(*)
  700. integer, intent(out) :: ifail(*)
  701. end subroutine mkl_lapack_chegvx_omp_offload_lp64
  702. subroutine mkl_lapack_zhegvx_omp_offload_lp64(itype, jobz, range,&
  703. uplo, n, a, lda, b,&
  704. ldb, vl, vu, il, &
  705. iu, abstol, m, w, &
  706. z, ldz, work, &
  707. lwork, rwork, &
  708. iwork, ifail, &
  709. info) bind(c)
  710. integer, intent(in) :: itype
  711. character*1, intent(in) :: jobz
  712. character*1, intent(in) :: range
  713. character*1, intent(in) :: uplo
  714. integer, intent(in) :: n
  715. integer, intent(in) :: lda
  716. integer, intent(in) :: ldb
  717. double precision, intent(in) :: vl
  718. double precision, intent(in) :: vu
  719. integer, intent(in) :: il
  720. integer, intent(in) :: iu
  721. double precision, intent(in) :: abstol
  722. integer, intent(out) :: m
  723. integer, intent(in) :: ldz
  724. integer, intent(in) :: lwork
  725. integer, intent(out) :: info
  726. complex*16, intent(inout) :: a(lda,*)
  727. complex*16, intent(inout) :: b(ldb,*)
  728. double precision, intent(out) :: w(*)
  729. complex*16, intent(out) :: z(ldz,*)
  730. complex*16, intent(out) :: work(*)
  731. double precision, intent(out) :: rwork(*)
  732. integer, intent(out) :: iwork(*)
  733. integer, intent(out) :: ifail(*)
  734. end subroutine mkl_lapack_zhegvx_omp_offload_lp64
  735. subroutine mkl_lapack_chetrd_omp_offload_lp64(uplo, n, a, lda, d,&
  736. e, tau, work, &
  737. lwork, &
  738. info) bind(c)
  739. character*1, intent(in) :: uplo
  740. integer, intent(in) :: n
  741. integer, intent(in) :: lda
  742. integer, intent(in) :: lwork
  743. integer, intent(out) :: info
  744. complex*8, intent(inout) :: a(lda,*)
  745. real, intent(out) :: d(*)
  746. real, intent(out) :: e(*)
  747. complex*8, intent(out) :: tau(*)
  748. complex*8, intent(out) :: work(*)
  749. end subroutine mkl_lapack_chetrd_omp_offload_lp64
  750. subroutine mkl_lapack_zhetrd_omp_offload_lp64(uplo, n, a, lda, d,&
  751. e, tau, work, &
  752. lwork, &
  753. info) bind(c)
  754. character*1, intent(in) :: uplo
  755. integer, intent(in) :: n
  756. integer, intent(in) :: lda
  757. integer, intent(in) :: lwork
  758. integer, intent(out) :: info
  759. complex*16, intent(inout) :: a(lda,*)
  760. double precision, intent(out) :: d(*)
  761. double precision, intent(out) :: e(*)
  762. complex*16, intent(out) :: tau(*)
  763. complex*16, intent(out) :: work(*)
  764. end subroutine mkl_lapack_zhetrd_omp_offload_lp64
  765. subroutine mkl_lapack_dorgqr_omp_offload_lp64(m, n, k, a, lda, &
  766. tau, work, lwork, &
  767. info) bind(c)
  768. integer, intent(in) :: m
  769. integer, intent(in) :: n
  770. integer, intent(in) :: k
  771. integer, intent(in) :: lda
  772. integer, intent(in) :: lwork
  773. integer, intent(out) :: info
  774. double precision, intent(inout) :: a(lda,*)
  775. double precision, intent(in) :: tau(*)
  776. double precision, intent(out) :: work(*)
  777. end subroutine mkl_lapack_dorgqr_omp_offload_lp64
  778. subroutine mkl_lapack_sorgqr_omp_offload_lp64(m, n, k, a, lda, &
  779. tau, work, lwork, &
  780. info) bind(c)
  781. integer, intent(in) :: m
  782. integer, intent(in) :: n
  783. integer, intent(in) :: k
  784. integer, intent(in) :: lda
  785. integer, intent(in) :: lwork
  786. integer, intent(out) :: info
  787. real, intent(inout) :: a(lda,*)
  788. real, intent(in) :: tau(*)
  789. real, intent(out) :: work(*)
  790. end subroutine mkl_lapack_sorgqr_omp_offload_lp64
  791. subroutine mkl_lapack_dormqr_omp_offload_lp64(side, trans, m, n, &
  792. k, a, lda, tau, c, &
  793. ldc, work, lwork, &
  794. info) bind(c)
  795. character*1, intent(in) :: side
  796. character*1, intent(in) :: trans
  797. integer, intent(in) :: m
  798. integer, intent(in) :: n
  799. integer, intent(in) :: k
  800. integer, intent(in) :: lda
  801. integer, intent(in) :: ldc
  802. integer, intent(in) :: lwork
  803. integer, intent(out) :: info
  804. double precision, intent(in) :: a(lda,*)
  805. double precision, intent(in) :: tau(*)
  806. double precision, intent(inout) :: c(ldc,*)
  807. double precision, intent(out) :: work(*)
  808. end subroutine mkl_lapack_dormqr_omp_offload_lp64
  809. subroutine mkl_lapack_sormqr_omp_offload_lp64(side, trans, m, n, &
  810. k, a, lda, tau, c, &
  811. ldc, work, lwork, &
  812. info) bind(c)
  813. character*1, intent(in) :: side
  814. character*1, intent(in) :: trans
  815. integer, intent(in) :: m
  816. integer, intent(in) :: n
  817. integer, intent(in) :: k
  818. integer, intent(in) :: lda
  819. integer, intent(in) :: ldc
  820. integer, intent(in) :: lwork
  821. integer, intent(out) :: info
  822. real, intent(in) :: a(lda,*)
  823. real, intent(in) :: tau(*)
  824. real, intent(inout) :: c(ldc,*)
  825. real, intent(out) :: work(*)
  826. end subroutine mkl_lapack_sormqr_omp_offload_lp64
  827. subroutine mkl_lapack_csteqr_omp_offload_lp64(compz, n, d, e, z, &
  828. ldz, work, &
  829. info) bind(c)
  830. character*1, intent(in) :: compz
  831. integer, intent(in) :: n
  832. integer, intent(in) :: ldz
  833. integer, intent(out) :: info
  834. real, intent(inout) :: d(*)
  835. real, intent(inout) :: e(*)
  836. complex*8, intent(inout) :: z(ldz,*)
  837. real, intent(out) :: work(*)
  838. end subroutine mkl_lapack_csteqr_omp_offload_lp64
  839. subroutine mkl_lapack_dsteqr_omp_offload_lp64(compz, n, d, e, z, &
  840. ldz, work, &
  841. info) bind(c)
  842. character*1, intent(in) :: compz
  843. integer, intent(in) :: n
  844. integer, intent(in) :: ldz
  845. integer, intent(out) :: info
  846. double precision, intent(inout) :: d(*)
  847. double precision, intent(inout) :: e(*)
  848. double precision, intent(inout) :: z(ldz,*)
  849. double precision, intent(out) :: work(*)
  850. end subroutine mkl_lapack_dsteqr_omp_offload_lp64
  851. subroutine mkl_lapack_ssteqr_omp_offload_lp64(compz, n, d, e, z, &
  852. ldz, work, &
  853. info) bind(c)
  854. character*1, intent(in) :: compz
  855. integer, intent(in) :: n
  856. integer, intent(in) :: ldz
  857. integer, intent(out) :: info
  858. real, intent(inout) :: d(*)
  859. real, intent(inout) :: e(*)
  860. real, intent(inout) :: z(ldz,*)
  861. real, intent(out) :: work(*)
  862. end subroutine mkl_lapack_ssteqr_omp_offload_lp64
  863. subroutine mkl_lapack_zsteqr_omp_offload_lp64(compz, n, d, e, z, &
  864. ldz, work, &
  865. info) bind(c)
  866. character*1, intent(in) :: compz
  867. integer, intent(in) :: n
  868. integer, intent(in) :: ldz
  869. integer, intent(out) :: info
  870. double precision, intent(inout) :: d(*)
  871. double precision, intent(inout) :: e(*)
  872. complex*16, intent(inout) :: z(ldz,*)
  873. double precision, intent(out) :: work(*)
  874. end subroutine mkl_lapack_zsteqr_omp_offload_lp64
  875. subroutine mkl_lapack_dsyev_omp_offload_lp64(jobz, uplo, n, a, &
  876. lda, w, work, lwork,&
  877. info) bind(c)
  878. character*1, intent(in) :: jobz
  879. character*1, intent(in) :: uplo
  880. integer, intent(in) :: n
  881. integer, intent(in) :: lda
  882. integer, intent(in) :: lwork
  883. integer, intent(out) :: info
  884. double precision, intent(inout) :: a(lda,*)
  885. double precision, intent(out) :: w(*)
  886. double precision, intent(out) :: work(*)
  887. end subroutine mkl_lapack_dsyev_omp_offload_lp64
  888. subroutine mkl_lapack_ssyev_omp_offload_lp64(jobz, uplo, n, a, &
  889. lda, w, work, lwork,&
  890. info) bind(c)
  891. character*1, intent(in) :: jobz
  892. character*1, intent(in) :: uplo
  893. integer, intent(in) :: n
  894. integer, intent(in) :: lda
  895. integer, intent(in) :: lwork
  896. integer, intent(out) :: info
  897. real, intent(inout) :: a(lda,*)
  898. real, intent(out) :: w(*)
  899. real, intent(out) :: work(*)
  900. end subroutine mkl_lapack_ssyev_omp_offload_lp64
  901. subroutine mkl_lapack_dsyevd_omp_offload_lp64(jobz, uplo, n, a, &
  902. lda, w, work, &
  903. lwork, iwork, &
  904. liwork, &
  905. info) bind(c)
  906. character*1, intent(in) :: jobz
  907. character*1, intent(in) :: uplo
  908. integer, intent(in) :: n
  909. integer, intent(in) :: lda
  910. integer, intent(in) :: lwork
  911. integer, intent(in) :: liwork
  912. integer, intent(out) :: info
  913. double precision, intent(inout) :: a(lda,*)
  914. double precision, intent(out) :: w(*)
  915. double precision, intent(out) :: work(*)
  916. integer, intent(out) :: iwork(*)
  917. end subroutine mkl_lapack_dsyevd_omp_offload_lp64
  918. subroutine mkl_lapack_ssyevd_omp_offload_lp64(jobz, uplo, n, a, &
  919. lda, w, work, &
  920. lwork, iwork, &
  921. liwork, &
  922. info) bind(c)
  923. character*1, intent(in) :: jobz
  924. character*1, intent(in) :: uplo
  925. integer, intent(in) :: n
  926. integer, intent(in) :: lda
  927. integer, intent(in) :: lwork
  928. integer, intent(in) :: liwork
  929. integer, intent(out) :: info
  930. real, intent(inout) :: a(lda,*)
  931. real, intent(out) :: w(*)
  932. real, intent(out) :: work(*)
  933. integer, intent(out) :: iwork(*)
  934. end subroutine mkl_lapack_ssyevd_omp_offload_lp64
  935. subroutine mkl_lapack_dsyevx_omp_offload_lp64(jobz, range, uplo, &
  936. n, a, lda, vl, vu, &
  937. il, iu, abstol, m, &
  938. w, z, ldz, work, &
  939. lwork, iwork, &
  940. ifail, &
  941. info) bind(c)
  942. character*1, intent(in) :: jobz
  943. character*1, intent(in) :: range
  944. character*1, intent(in) :: uplo
  945. integer, intent(in) :: n
  946. integer, intent(in) :: lda
  947. double precision, intent(in) :: vl
  948. double precision, intent(in) :: vu
  949. integer, intent(in) :: il
  950. integer, intent(in) :: iu
  951. double precision, intent(in) :: abstol
  952. integer, intent(out) :: m
  953. integer, intent(in) :: ldz
  954. integer, intent(in) :: lwork
  955. integer, intent(out) :: info
  956. double precision, intent(inout) :: a(lda,*)
  957. double precision, intent(out) :: w(*)
  958. double precision, intent(out) :: z(ldz,*)
  959. double precision, intent(out) :: work(*)
  960. integer, intent(out) :: iwork(*)
  961. integer, intent(out) :: ifail(*)
  962. end subroutine mkl_lapack_dsyevx_omp_offload_lp64
  963. subroutine mkl_lapack_ssyevx_omp_offload_lp64(jobz, range, uplo, &
  964. n, a, lda, vl, vu, &
  965. il, iu, abstol, m, &
  966. w, z, ldz, work, &
  967. lwork, iwork, &
  968. ifail, &
  969. info) bind(c)
  970. character*1, intent(in) :: jobz
  971. character*1, intent(in) :: range
  972. character*1, intent(in) :: uplo
  973. integer, intent(in) :: n
  974. integer, intent(in) :: lda
  975. real, intent(in) :: vl
  976. real, intent(in) :: vu
  977. integer, intent(in) :: il
  978. integer, intent(in) :: iu
  979. real, intent(in) :: abstol
  980. integer, intent(out) :: m
  981. integer, intent(in) :: ldz
  982. integer, intent(in) :: lwork
  983. integer, intent(out) :: info
  984. real, intent(inout) :: a(lda,*)
  985. real, intent(out) :: w(*)
  986. real, intent(out) :: z(ldz,*)
  987. real, intent(out) :: work(*)
  988. integer, intent(out) :: iwork(*)
  989. integer, intent(out) :: ifail(*)
  990. end subroutine mkl_lapack_ssyevx_omp_offload_lp64
  991. subroutine mkl_lapack_dsygvd_omp_offload_lp64(itype, jobz, uplo, &
  992. n, a, lda, b, ldb, &
  993. w, work, lwork, &
  994. iwork, liwork, &
  995. info) bind(c)
  996. integer, intent(in) :: itype
  997. character*1, intent(in) :: jobz
  998. character*1, intent(in) :: uplo
  999. integer, intent(in) :: n
  1000. integer, intent(in) :: lda
  1001. integer, intent(in) :: ldb
  1002. integer, intent(in) :: lwork
  1003. integer, intent(in) :: liwork
  1004. integer, intent(out) :: info
  1005. double precision, intent(inout) :: a(lda,*)
  1006. double precision, intent(inout) :: b(ldb,*)
  1007. double precision, intent(out) :: w(*)
  1008. double precision, intent(out) :: work(*)
  1009. integer, intent(out) :: iwork(*)
  1010. end subroutine mkl_lapack_dsygvd_omp_offload_lp64
  1011. subroutine mkl_lapack_ssygvd_omp_offload_lp64(itype, jobz, uplo, &
  1012. n, a, lda, b, ldb, &
  1013. w, work, lwork, &
  1014. iwork, liwork, &
  1015. info) bind(c)
  1016. integer, intent(in) :: itype
  1017. character*1, intent(in) :: jobz
  1018. character*1, intent(in) :: uplo
  1019. integer, intent(in) :: n
  1020. integer, intent(in) :: lda
  1021. integer, intent(in) :: ldb
  1022. integer, intent(in) :: lwork
  1023. integer, intent(in) :: liwork
  1024. integer, intent(out) :: info
  1025. real, intent(inout) :: a(lda,*)
  1026. real, intent(inout) :: b(ldb,*)
  1027. real, intent(out) :: w(*)
  1028. real, intent(out) :: work(*)
  1029. integer, intent(out) :: iwork(*)
  1030. end subroutine mkl_lapack_ssygvd_omp_offload_lp64
  1031. subroutine mkl_lapack_dsygvx_omp_offload_lp64(itype, jobz, range,&
  1032. uplo, n, a, lda, b,&
  1033. ldb, vl, vu, il, &
  1034. iu, abstol, m, w, &
  1035. z, ldz, work, &
  1036. lwork, iwork, &
  1037. ifail, &
  1038. info) bind(c)
  1039. integer, intent(in) :: itype
  1040. character*1, intent(in) :: jobz
  1041. character*1, intent(in) :: range
  1042. character*1, intent(in) :: uplo
  1043. integer, intent(in) :: n
  1044. integer, intent(in) :: lda
  1045. integer, intent(in) :: ldb
  1046. double precision, intent(in) :: vl
  1047. double precision, intent(in) :: vu
  1048. integer, intent(in) :: il
  1049. integer, intent(in) :: iu
  1050. double precision, intent(in) :: abstol
  1051. integer, intent(out) :: m
  1052. integer, intent(in) :: ldz
  1053. integer, intent(in) :: lwork
  1054. integer, intent(out) :: info
  1055. double precision, intent(inout) :: a(lda,*)
  1056. double precision, intent(inout) :: b(ldb,*)
  1057. double precision, intent(out) :: w(*)
  1058. double precision, intent(out) :: z(ldz,*)
  1059. double precision, intent(out) :: work(*)
  1060. integer, intent(out) :: iwork(*)
  1061. integer, intent(out) :: ifail(*)
  1062. end subroutine mkl_lapack_dsygvx_omp_offload_lp64
  1063. subroutine mkl_lapack_ssygvx_omp_offload_lp64(itype, jobz, range,&
  1064. uplo, n, a, lda, b,&
  1065. ldb, vl, vu, il, &
  1066. iu, abstol, m, w, &
  1067. z, ldz, work, &
  1068. lwork, iwork, &
  1069. ifail, &
  1070. info) bind(c)
  1071. integer, intent(in) :: itype
  1072. character*1, intent(in) :: jobz
  1073. character*1, intent(in) :: range
  1074. character*1, intent(in) :: uplo
  1075. integer, intent(in) :: n
  1076. integer, intent(in) :: lda
  1077. integer, intent(in) :: ldb
  1078. real, intent(in) :: vl
  1079. real, intent(in) :: vu
  1080. integer, intent(in) :: il
  1081. integer, intent(in) :: iu
  1082. real, intent(in) :: abstol
  1083. integer, intent(out) :: m
  1084. integer, intent(in) :: ldz
  1085. integer, intent(in) :: lwork
  1086. integer, intent(out) :: info
  1087. real, intent(inout) :: a(lda,*)
  1088. real, intent(inout) :: b(ldb,*)
  1089. real, intent(out) :: w(*)
  1090. real, intent(out) :: z(ldz,*)
  1091. real, intent(out) :: work(*)
  1092. integer, intent(out) :: iwork(*)
  1093. integer, intent(out) :: ifail(*)
  1094. end subroutine mkl_lapack_ssygvx_omp_offload_lp64
  1095. subroutine mkl_lapack_dsytrd_omp_offload_lp64(uplo, n, a, lda, d,&
  1096. e, tau, work, &
  1097. lwork, &
  1098. info) bind(c)
  1099. character*1, intent(in) :: uplo
  1100. integer, intent(in) :: n
  1101. integer, intent(in) :: lda
  1102. integer, intent(in) :: lwork
  1103. integer, intent(out) :: info
  1104. double precision, intent(inout) :: a(lda,*)
  1105. double precision, intent(out) :: d(*)
  1106. double precision, intent(out) :: e(*)
  1107. double precision, intent(out) :: tau(*)
  1108. double precision, intent(out) :: work(*)
  1109. end subroutine mkl_lapack_dsytrd_omp_offload_lp64
  1110. subroutine mkl_lapack_ssytrd_omp_offload_lp64(uplo, n, a, lda, d,&
  1111. e, tau, work, &
  1112. lwork, &
  1113. info) bind(c)
  1114. character*1, intent(in) :: uplo
  1115. integer, intent(in) :: n
  1116. integer, intent(in) :: lda
  1117. integer, intent(in) :: lwork
  1118. integer, intent(out) :: info
  1119. real, intent(inout) :: a(lda,*)
  1120. real, intent(out) :: d(*)
  1121. real, intent(out) :: e(*)
  1122. real, intent(out) :: tau(*)
  1123. real, intent(out) :: work(*)
  1124. end subroutine mkl_lapack_ssytrd_omp_offload_lp64
  1125. subroutine mkl_lapack_ctrtri_omp_offload_lp64(uplo, diag, n, a, &
  1126. lda, info) bind(c)
  1127. character*1, intent(in) :: uplo
  1128. character*1, intent(in) :: diag
  1129. integer, intent(in) :: n
  1130. integer, intent(in) :: lda
  1131. integer, intent(out) :: info
  1132. complex*8, intent(inout) :: a(lda,*)
  1133. end subroutine mkl_lapack_ctrtri_omp_offload_lp64
  1134. subroutine mkl_lapack_dtrtri_omp_offload_lp64(uplo, diag, n, a, &
  1135. lda, info) bind(c)
  1136. character*1, intent(in) :: uplo
  1137. character*1, intent(in) :: diag
  1138. integer, intent(in) :: n
  1139. integer, intent(in) :: lda
  1140. integer, intent(out) :: info
  1141. double precision, intent(inout) :: a(lda,*)
  1142. end subroutine mkl_lapack_dtrtri_omp_offload_lp64
  1143. subroutine mkl_lapack_strtri_omp_offload_lp64(uplo, diag, n, a, &
  1144. lda, info) bind(c)
  1145. character*1, intent(in) :: uplo
  1146. character*1, intent(in) :: diag
  1147. integer, intent(in) :: n
  1148. integer, intent(in) :: lda
  1149. integer, intent(out) :: info
  1150. real, intent(inout) :: a(lda,*)
  1151. end subroutine mkl_lapack_strtri_omp_offload_lp64
  1152. subroutine mkl_lapack_ztrtri_omp_offload_lp64(uplo, diag, n, a, &
  1153. lda, info) bind(c)
  1154. character*1, intent(in) :: uplo
  1155. character*1, intent(in) :: diag
  1156. integer, intent(in) :: n
  1157. integer, intent(in) :: lda
  1158. integer, intent(out) :: info
  1159. complex*16, intent(inout) :: a(lda,*)
  1160. end subroutine mkl_lapack_ztrtri_omp_offload_lp64
  1161. subroutine mkl_lapack_ctrtrs_omp_offload_lp64(uplo, trans, diag, &
  1162. n, nrhs, a, lda, b,&
  1163. ldb, info) bind(c)
  1164. character*1, intent(in) :: uplo
  1165. character*1, intent(in) :: trans
  1166. character*1, intent(in) :: diag
  1167. integer, intent(in) :: n
  1168. integer, intent(in) :: nrhs
  1169. integer, intent(in) :: lda
  1170. integer, intent(in) :: ldb
  1171. integer, intent(out) :: info
  1172. complex*8, intent(in) :: a(lda,*)
  1173. complex*8, intent(inout) :: b(ldb,*)
  1174. end subroutine mkl_lapack_ctrtrs_omp_offload_lp64
  1175. subroutine mkl_lapack_dtrtrs_omp_offload_lp64(uplo, trans, diag, &
  1176. n, nrhs, a, lda, b,&
  1177. ldb, info) bind(c)
  1178. character*1, intent(in) :: uplo
  1179. character*1, intent(in) :: trans
  1180. character*1, intent(in) :: diag
  1181. integer, intent(in) :: n
  1182. integer, intent(in) :: nrhs
  1183. integer, intent(in) :: lda
  1184. integer, intent(in) :: ldb
  1185. integer, intent(out) :: info
  1186. double precision, intent(in) :: a(lda,*)
  1187. double precision, intent(inout) :: b(ldb,*)
  1188. end subroutine mkl_lapack_dtrtrs_omp_offload_lp64
  1189. subroutine mkl_lapack_strtrs_omp_offload_lp64(uplo, trans, diag, &
  1190. n, nrhs, a, lda, b,&
  1191. ldb, info) bind(c)
  1192. character*1, intent(in) :: uplo
  1193. character*1, intent(in) :: trans
  1194. character*1, intent(in) :: diag
  1195. integer, intent(in) :: n
  1196. integer, intent(in) :: nrhs
  1197. integer, intent(in) :: lda
  1198. integer, intent(in) :: ldb
  1199. integer, intent(out) :: info
  1200. real, intent(in) :: a(lda,*)
  1201. real, intent(inout) :: b(ldb,*)
  1202. end subroutine mkl_lapack_strtrs_omp_offload_lp64
  1203. subroutine mkl_lapack_ztrtrs_omp_offload_lp64(uplo, trans, diag, &
  1204. n, nrhs, a, lda, b,&
  1205. ldb, info) bind(c)
  1206. character*1, intent(in) :: uplo
  1207. character*1, intent(in) :: trans
  1208. character*1, intent(in) :: diag
  1209. integer, intent(in) :: n
  1210. integer, intent(in) :: nrhs
  1211. integer, intent(in) :: lda
  1212. integer, intent(in) :: ldb
  1213. integer, intent(out) :: info
  1214. complex*16, intent(in) :: a(lda,*)
  1215. complex*16, intent(inout) :: b(ldb,*)
  1216. end subroutine mkl_lapack_ztrtrs_omp_offload_lp64
  1217. subroutine mkl_lapack_cungqr_omp_offload_lp64(m, n, k, a, lda, &
  1218. tau, work, lwork, &
  1219. info) bind(c)
  1220. integer, intent(in) :: m
  1221. integer, intent(in) :: n
  1222. integer, intent(in) :: k
  1223. integer, intent(in) :: lda
  1224. integer, intent(in) :: lwork
  1225. integer, intent(out) :: info
  1226. complex*8, intent(inout) :: a(lda,*)
  1227. complex*8, intent(in) :: tau(*)
  1228. complex*8, intent(out) :: work(*)
  1229. end subroutine mkl_lapack_cungqr_omp_offload_lp64
  1230. subroutine mkl_lapack_zungqr_omp_offload_lp64(m, n, k, a, lda, &
  1231. tau, work, lwork, &
  1232. info) bind(c)
  1233. integer, intent(in) :: m
  1234. integer, intent(in) :: n
  1235. integer, intent(in) :: k
  1236. integer, intent(in) :: lda
  1237. integer, intent(in) :: lwork
  1238. integer, intent(out) :: info
  1239. complex*16, intent(inout) :: a(lda,*)
  1240. complex*16, intent(in) :: tau(*)
  1241. complex*16, intent(out) :: work(*)
  1242. end subroutine mkl_lapack_zungqr_omp_offload_lp64
  1243. subroutine mkl_lapack_cunmqr_omp_offload_lp64(side, trans, m, n, &
  1244. k, a, lda, tau, c, &
  1245. ldc, work, lwork, &
  1246. info) bind(c)
  1247. character*1, intent(in) :: side
  1248. character*1, intent(in) :: trans
  1249. integer, intent(in) :: m
  1250. integer, intent(in) :: n
  1251. integer, intent(in) :: k
  1252. integer, intent(in) :: lda
  1253. integer, intent(in) :: ldc
  1254. integer, intent(in) :: lwork
  1255. integer, intent(out) :: info
  1256. complex*8, intent(in) :: a(lda,*)
  1257. complex*8, intent(in) :: tau(*)
  1258. complex*8, intent(inout) :: c(ldc,*)
  1259. complex*8, intent(out) :: work(*)
  1260. end subroutine mkl_lapack_cunmqr_omp_offload_lp64
  1261. subroutine mkl_lapack_zunmqr_omp_offload_lp64(side, trans, m, n, &
  1262. k, a, lda, tau, c, &
  1263. ldc, work, lwork, &
  1264. info) bind(c)
  1265. character*1, intent(in) :: side
  1266. character*1, intent(in) :: trans
  1267. integer, intent(in) :: m
  1268. integer, intent(in) :: n
  1269. integer, intent(in) :: k
  1270. integer, intent(in) :: lda
  1271. integer, intent(in) :: ldc
  1272. integer, intent(in) :: lwork
  1273. integer, intent(out) :: info
  1274. complex*16, intent(in) :: a(lda,*)
  1275. complex*16, intent(in) :: tau(*)
  1276. complex*16, intent(inout) :: c(ldc,*)
  1277. complex*16, intent(out) :: work(*)
  1278. end subroutine mkl_lapack_zunmqr_omp_offload_lp64
  1279. subroutine mkl_lapack_cgetrs_batch_strided_omp_offload_lp64(trans,&
  1280. n, nrhs, a, &
  1281. lda, stride_a,&
  1282. ipiv, &
  1283. stride_ipiv, &
  1284. b, ldb, &
  1285. stride_b, &
  1286. batch_size, &
  1287. info) bind(c)
  1288. character*1, intent(in) :: trans
  1289. integer, intent(in) :: n
  1290. integer, intent(in) :: nrhs
  1291. integer, intent(in) :: lda
  1292. integer, intent(in) :: stride_a
  1293. integer, intent(in) :: stride_ipiv
  1294. integer, intent(in) :: ldb
  1295. integer, intent(in) :: stride_b
  1296. integer, intent(in) :: batch_size
  1297. complex*8, intent(in) :: a(stride_a,*)
  1298. integer, intent(in) :: ipiv(stride_ipiv,*)
  1299. complex*8, intent(inout) :: b(stride_b,*)
  1300. integer, intent(out) :: info(*)
  1301. end subroutine mkl_lapack_cgetrs_batch_strided_omp_offload_lp64
  1302. subroutine mkl_lapack_dgetrs_batch_strided_omp_offload_lp64(trans,&
  1303. n, nrhs, a, &
  1304. lda, stride_a,&
  1305. ipiv, &
  1306. stride_ipiv, &
  1307. b, ldb, &
  1308. stride_b, &
  1309. batch_size, &
  1310. info) bind(c)
  1311. character*1, intent(in) :: trans
  1312. integer, intent(in) :: n
  1313. integer, intent(in) :: nrhs
  1314. integer, intent(in) :: lda
  1315. integer, intent(in) :: stride_a
  1316. integer, intent(in) :: stride_ipiv
  1317. integer, intent(in) :: ldb
  1318. integer, intent(in) :: stride_b
  1319. integer, intent(in) :: batch_size
  1320. double precision, intent(in) :: a(stride_a,*)
  1321. integer, intent(in) :: ipiv(stride_ipiv,*)
  1322. double precision, intent(inout) :: b(stride_b,*)
  1323. integer, intent(out) :: info(*)
  1324. end subroutine mkl_lapack_dgetrs_batch_strided_omp_offload_lp64
  1325. subroutine mkl_lapack_sgetrs_batch_strided_omp_offload_lp64(trans,&
  1326. n, nrhs, a, &
  1327. lda, stride_a,&
  1328. ipiv, &
  1329. stride_ipiv, &
  1330. b, ldb, &
  1331. stride_b, &
  1332. batch_size, &
  1333. info) bind(c)
  1334. character*1, intent(in) :: trans
  1335. integer, intent(in) :: n
  1336. integer, intent(in) :: nrhs
  1337. integer, intent(in) :: lda
  1338. integer, intent(in) :: stride_a
  1339. integer, intent(in) :: stride_ipiv
  1340. integer, intent(in) :: ldb
  1341. integer, intent(in) :: stride_b
  1342. integer, intent(in) :: batch_size
  1343. real, intent(in) :: a(stride_a,*)
  1344. integer, intent(in) :: ipiv(stride_ipiv,*)
  1345. real, intent(inout) :: b(stride_b,*)
  1346. integer, intent(out) :: info(*)
  1347. end subroutine mkl_lapack_sgetrs_batch_strided_omp_offload_lp64
  1348. subroutine mkl_lapack_zgetrs_batch_strided_omp_offload_lp64(trans,&
  1349. n, nrhs, a, &
  1350. lda, stride_a,&
  1351. ipiv, &
  1352. stride_ipiv, &
  1353. b, ldb, &
  1354. stride_b, &
  1355. batch_size, &
  1356. info) bind(c)
  1357. character*1, intent(in) :: trans
  1358. integer, intent(in) :: n
  1359. integer, intent(in) :: nrhs
  1360. integer, intent(in) :: lda
  1361. integer, intent(in) :: stride_a
  1362. integer, intent(in) :: stride_ipiv
  1363. integer, intent(in) :: ldb
  1364. integer, intent(in) :: stride_b
  1365. integer, intent(in) :: batch_size
  1366. complex*16, intent(in) :: a(stride_a,*)
  1367. integer, intent(in) :: ipiv(stride_ipiv,*)
  1368. complex*16, intent(inout) :: b(stride_b,*)
  1369. integer, intent(out) :: info(*)
  1370. end subroutine mkl_lapack_zgetrs_batch_strided_omp_offload_lp64
  1371. subroutine mkl_lapack_cgetrfnp_batch_strided_omp_offload_lp64(m, &
  1372. n, a, lda, &
  1373. stride_a, &
  1374. batch_size, &
  1375. info) bind(c)
  1376. integer, intent(in) :: m
  1377. integer, intent(in) :: n
  1378. integer, intent(in) :: lda
  1379. integer, intent(in) :: stride_a
  1380. integer, intent(in) :: batch_size
  1381. complex*8, intent(inout) :: a(stride_a,*)
  1382. integer, intent(out) :: info(*)
  1383. end subroutine mkl_lapack_cgetrfnp_batch_strided_omp_offload_lp64
  1384. subroutine mkl_lapack_dgetrfnp_batch_strided_omp_offload_lp64(m, &
  1385. n, a, lda, &
  1386. stride_a, &
  1387. batch_size, &
  1388. info) bind(c)
  1389. integer, intent(in) :: m
  1390. integer, intent(in) :: n
  1391. integer, intent(in) :: lda
  1392. integer, intent(in) :: stride_a
  1393. integer, intent(in) :: batch_size
  1394. double precision, intent(inout) :: a(stride_a,*)
  1395. integer, intent(out) :: info(*)
  1396. end subroutine mkl_lapack_dgetrfnp_batch_strided_omp_offload_lp64
  1397. subroutine mkl_lapack_sgetrfnp_batch_strided_omp_offload_lp64(m, &
  1398. n, a, lda, &
  1399. stride_a, &
  1400. batch_size, &
  1401. info) bind(c)
  1402. integer, intent(in) :: m
  1403. integer, intent(in) :: n
  1404. integer, intent(in) :: lda
  1405. integer, intent(in) :: stride_a
  1406. integer, intent(in) :: batch_size
  1407. real, intent(inout) :: a(stride_a,*)
  1408. integer, intent(out) :: info(*)
  1409. end subroutine mkl_lapack_sgetrfnp_batch_strided_omp_offload_lp64
  1410. subroutine mkl_lapack_zgetrfnp_batch_strided_omp_offload_lp64(m, &
  1411. n, a, lda, &
  1412. stride_a, &
  1413. batch_size, &
  1414. info) bind(c)
  1415. integer, intent(in) :: m
  1416. integer, intent(in) :: n
  1417. integer, intent(in) :: lda
  1418. integer, intent(in) :: stride_a
  1419. integer, intent(in) :: batch_size
  1420. complex*16, intent(inout) :: a(stride_a,*)
  1421. integer, intent(out) :: info(*)
  1422. end subroutine mkl_lapack_zgetrfnp_batch_strided_omp_offload_lp64
  1423. subroutine mkl_lapack_cgetrsnp_batch_strided_omp_offload_lp64(trans,&
  1424. n, nrhs, a, &
  1425. lda, stride_a,&
  1426. b, ldb, &
  1427. stride_b, &
  1428. batch_size, &
  1429. info) bind(c)
  1430. character*1, intent(in) :: trans
  1431. integer, intent(in) :: n
  1432. integer, intent(in) :: nrhs
  1433. integer, intent(in) :: lda
  1434. integer, intent(in) :: stride_a
  1435. integer, intent(in) :: ldb
  1436. integer, intent(in) :: stride_b
  1437. integer, intent(in) :: batch_size
  1438. complex*8, intent(in) :: a(stride_a,*)
  1439. complex*8, intent(inout) :: b(stride_b,*)
  1440. integer, intent(out) :: info(*)
  1441. end subroutine mkl_lapack_cgetrsnp_batch_strided_omp_offload_lp64
  1442. subroutine mkl_lapack_dgetrsnp_batch_strided_omp_offload_lp64(trans,&
  1443. n, nrhs, a, &
  1444. lda, stride_a,&
  1445. b, ldb, &
  1446. stride_b, &
  1447. batch_size, &
  1448. info) bind(c)
  1449. character*1, intent(in) :: trans
  1450. integer, intent(in) :: n
  1451. integer, intent(in) :: nrhs
  1452. integer, intent(in) :: lda
  1453. integer, intent(in) :: stride_a
  1454. integer, intent(in) :: ldb
  1455. integer, intent(in) :: stride_b
  1456. integer, intent(in) :: batch_size
  1457. double precision, intent(in) :: a(stride_a,*)
  1458. double precision, intent(inout) :: b(stride_b,*)
  1459. integer, intent(out) :: info(*)
  1460. end subroutine mkl_lapack_dgetrsnp_batch_strided_omp_offload_lp64
  1461. subroutine mkl_lapack_sgetrsnp_batch_strided_omp_offload_lp64(trans,&
  1462. n, nrhs, a, &
  1463. lda, stride_a,&
  1464. b, ldb, &
  1465. stride_b, &
  1466. batch_size, &
  1467. info) bind(c)
  1468. character*1, intent(in) :: trans
  1469. integer, intent(in) :: n
  1470. integer, intent(in) :: nrhs
  1471. integer, intent(in) :: lda
  1472. integer, intent(in) :: stride_a
  1473. integer, intent(in) :: ldb
  1474. integer, intent(in) :: stride_b
  1475. integer, intent(in) :: batch_size
  1476. real, intent(in) :: a(stride_a,*)
  1477. real, intent(inout) :: b(stride_b,*)
  1478. integer, intent(out) :: info(*)
  1479. end subroutine mkl_lapack_sgetrsnp_batch_strided_omp_offload_lp64
  1480. subroutine mkl_lapack_zgetrsnp_batch_strided_omp_offload_lp64(trans,&
  1481. n, nrhs, a, &
  1482. lda, stride_a,&
  1483. b, ldb, &
  1484. stride_b, &
  1485. batch_size, &
  1486. info) bind(c)
  1487. character*1, intent(in) :: trans
  1488. integer, intent(in) :: n
  1489. integer, intent(in) :: nrhs
  1490. integer, intent(in) :: lda
  1491. integer, intent(in) :: stride_a
  1492. integer, intent(in) :: ldb
  1493. integer, intent(in) :: stride_b
  1494. integer, intent(in) :: batch_size
  1495. complex*16, intent(in) :: a(stride_a,*)
  1496. complex*16, intent(inout) :: b(stride_b,*)
  1497. integer, intent(out) :: info(*)
  1498. end subroutine mkl_lapack_zgetrsnp_batch_strided_omp_offload_lp64
  1499. subroutine mkl_lapack_dpotrf_omp_offload_lp64(uplo, n, a, lda, info) bind(c)
  1500. character*1, intent(in) :: uplo
  1501. integer, intent(in) :: n
  1502. double precision, intent(inout) :: a(lda,*)
  1503. integer, intent(in) :: lda
  1504. integer, intent(out) :: info
  1505. end subroutine mkl_lapack_dpotrf_omp_offload_lp64
  1506. subroutine mkl_lapack_spotrf_omp_offload_lp64(uplo, n, a, lda, info) bind(c)
  1507. character*1, intent(in) :: uplo
  1508. integer, intent(in) :: n
  1509. real, intent(inout) :: a(lda,*)
  1510. integer, intent(in) :: lda
  1511. integer, intent(out) :: info
  1512. end subroutine mkl_lapack_spotrf_omp_offload_lp64
  1513. subroutine mkl_lapack_cpotrf_omp_offload_lp64(uplo, n, a, lda, info) bind(c)
  1514. character*1, intent(in) :: uplo
  1515. integer, intent(in) :: n
  1516. complex*8, intent(inout) :: a(lda,*)
  1517. integer, intent(in) :: lda
  1518. integer, intent(out) :: info
  1519. end subroutine mkl_lapack_cpotrf_omp_offload_lp64
  1520. subroutine mkl_lapack_zpotrf_omp_offload_lp64(uplo, n, a, lda, info) bind(c)
  1521. character*1, intent(in) :: uplo
  1522. integer, intent(in) :: n
  1523. complex*16, intent(inout) :: a(lda,*)
  1524. integer, intent(in) :: lda
  1525. integer, intent(out) :: info
  1526. end subroutine mkl_lapack_zpotrf_omp_offload_lp64
  1527. subroutine mkl_lapack_dpotri_omp_offload_lp64(uplo, n, a, lda, info) bind(c)
  1528. character*1, intent(in) :: uplo
  1529. integer, intent(in) :: n
  1530. double precision, intent(inout) :: a(lda,*)
  1531. integer, intent(in) :: lda
  1532. integer, intent(out) :: info
  1533. end subroutine mkl_lapack_dpotri_omp_offload_lp64
  1534. subroutine mkl_lapack_spotri_omp_offload_lp64(uplo, n, a, lda, info) bind(c)
  1535. character*1, intent(in) :: uplo
  1536. integer, intent(in) :: n
  1537. real, intent(inout) :: a(lda,*)
  1538. integer, intent(in) :: lda
  1539. integer, intent(out) :: info
  1540. end subroutine mkl_lapack_spotri_omp_offload_lp64
  1541. subroutine mkl_lapack_cpotri_omp_offload_lp64(uplo, n, a, lda, info) bind(c)
  1542. character*1, intent(in) :: uplo
  1543. integer, intent(in) :: n
  1544. complex*8, intent(inout) :: a(lda,*)
  1545. integer, intent(in) :: lda
  1546. integer, intent(out) :: info
  1547. end subroutine mkl_lapack_cpotri_omp_offload_lp64
  1548. subroutine mkl_lapack_zpotri_omp_offload_lp64(uplo, n, a, lda, info) bind(c)
  1549. character*1, intent(in) :: uplo
  1550. integer, intent(in) :: n
  1551. complex*16, intent(inout) :: a(lda,*)
  1552. integer, intent(in) :: lda
  1553. integer, intent(out) :: info
  1554. end subroutine mkl_lapack_zpotri_omp_offload_lp64
  1555. subroutine mkl_lapack_dpotrs_omp_offload_lp64(uplo, n, nrhs, a, lda, b, ldb, info) bind(c)
  1556. character*1, intent(in) :: uplo
  1557. integer, intent(in) :: n, nrhs, lda, ldb
  1558. double precision, intent(in) :: a(lda,*)
  1559. double precision, intent(inout) :: b(ldb,*)
  1560. integer, intent(out) :: info
  1561. end subroutine mkl_lapack_dpotrs_omp_offload_lp64
  1562. subroutine mkl_lapack_spotrs_omp_offload_lp64(uplo, n, nrhs, a, lda, b, ldb, info) bind(c)
  1563. character*1, intent(in) :: uplo
  1564. integer, intent(in) :: n, nrhs, lda, ldb
  1565. real, intent(in) :: a(lda,*)
  1566. real, intent(inout) :: b(ldb,*)
  1567. integer, intent(out) :: info
  1568. end subroutine mkl_lapack_spotrs_omp_offload_lp64
  1569. subroutine mkl_lapack_cpotrs_omp_offload_lp64(uplo, n, nrhs, a, lda, b, ldb, info) bind(c)
  1570. character*1, intent(in) :: uplo
  1571. integer, intent(in) :: n, nrhs, lda, ldb
  1572. complex*8, intent(in) :: a(lda,*)
  1573. complex*8, intent(inout) :: b(ldb,*)
  1574. integer, intent(out) :: info
  1575. end subroutine mkl_lapack_cpotrs_omp_offload_lp64
  1576. subroutine mkl_lapack_zpotrs_omp_offload_lp64(uplo, n, nrhs, a, lda, b, ldb, info) bind(c)
  1577. character*1, intent(in) :: uplo
  1578. integer, intent(in) :: n, nrhs, lda, ldb
  1579. complex*16, intent(in) :: a(lda,*)
  1580. complex*16, intent(inout) :: b(ldb,*)
  1581. integer, intent(out) :: info
  1582. end subroutine mkl_lapack_zpotrs_omp_offload_lp64
  1583. end interface