fftw3_omp_offload.f90 83 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416
  1. !===============================================================================
  2. ! Copyright 2021-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 (Intel(R) oneMKL)
  16. ! FFTW3 Fortran OpenMP Offload Interfaces
  17. !*****************************************************************************
  18. MODULE PREC
  19. INTEGER, PARAMETER :: FFTW_SPKP = SELECTED_REAL_KIND(6,37)
  20. INTEGER, PARAMETER :: FFTW_DPKP = SELECTED_REAL_KIND(15,307)
  21. END MODULE PREC
  22. MODULE FFTW3_OMP_OFFLOAD
  23. INTERFACE
  24. SUBROUTINE dfftw_plan_dft_1d_omp_offload_lp64(p, n, in, out, s, flags, interop)
  25. USE PREC
  26. INTEGER*8 :: p
  27. INTEGER(4) :: n, s, flags
  28. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: in
  29. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: out
  30. TYPE(*), INTENT(IN) :: interop
  31. END SUBROUTINE dfftw_plan_dft_1d_omp_offload_lp64
  32. SUBROUTINE dfftw_plan_dft_1d_omp_offload_ilp64(p, n, in, out, s, flags, interop)
  33. USE PREC
  34. INTEGER*8 :: p
  35. INTEGER(8) :: n, s, flags
  36. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: in
  37. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: out
  38. TYPE(*), INTENT(IN) :: interop
  39. END SUBROUTINE dfftw_plan_dft_1d_omp_offload_ilp64
  40. SUBROUTINE dfftw_plan_dft_2d_omp_offload_lp64(p, nx, ny, in, out, s, flags, interop)
  41. USE PREC
  42. INTEGER*8 :: p
  43. INTEGER(4) :: nx, ny, s, flags
  44. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  45. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  46. TYPE(*), INTENT(IN) :: interop
  47. END SUBROUTINE dfftw_plan_dft_2d_omp_offload_lp64
  48. SUBROUTINE dfftw_plan_dft_2d_omp_offload_ilp64(p, nx, ny, in, out, s, flags, interop)
  49. USE PREC
  50. INTEGER*8 :: p
  51. INTEGER(8) :: nx, ny, s, flags
  52. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  53. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  54. TYPE(*), INTENT(IN) :: interop
  55. END SUBROUTINE dfftw_plan_dft_2d_omp_offload_ilp64
  56. SUBROUTINE dfftw_plan_dft_3d_omp_offload_lp64(p, nx, ny, nz, in, out, s, flags, interop)
  57. USE PREC
  58. INTEGER*8 :: p
  59. INTEGER(4) :: nx, ny, nz, s, flags
  60. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  61. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  62. TYPE(*), INTENT(IN) :: interop
  63. END SUBROUTINE dfftw_plan_dft_3d_omp_offload_lp64
  64. SUBROUTINE dfftw_plan_dft_3d_omp_offload_ilp64(p, nx, ny, nz, in, out, s, flags, interop)
  65. USE PREC
  66. INTEGER*8 :: p
  67. INTEGER(8) :: nx, ny, nz, s, flags
  68. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  69. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  70. TYPE(*), INTENT(IN) :: interop
  71. END SUBROUTINE dfftw_plan_dft_3d_omp_offload_ilp64
  72. SUBROUTINE dfftw_plan_dft_c2r_1d_omp_offload_lp64(p, n, in, out, flags, interop)
  73. USE PREC
  74. INTEGER*8 :: p
  75. INTEGER(4) :: n, flags
  76. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: in
  77. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: out
  78. TYPE(*), INTENT(IN) :: interop
  79. END SUBROUTINE dfftw_plan_dft_c2r_1d_omp_offload_lp64
  80. SUBROUTINE dfftw_plan_dft_c2r_1d_omp_offload_ilp64(p, n, in, out, flags, interop)
  81. USE PREC
  82. INTEGER*8 :: p
  83. INTEGER(8) :: n, flags
  84. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: in
  85. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: out
  86. TYPE(*), INTENT(IN) :: interop
  87. END SUBROUTINE dfftw_plan_dft_c2r_1d_omp_offload_ilp64
  88. SUBROUTINE dfftw_plan_dft_c2r_2d_omp_offload_lp64(p, nx, ny, in, out, flags, interop)
  89. USE PREC
  90. INTEGER*8 :: p
  91. INTEGER(4) :: nx, ny, flags
  92. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  93. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  94. TYPE(*), INTENT(IN) :: interop
  95. END SUBROUTINE dfftw_plan_dft_c2r_2d_omp_offload_lp64
  96. SUBROUTINE dfftw_plan_dft_c2r_2d_omp_offload_ilp64(p, nx, ny, in, out, flags, interop)
  97. USE PREC
  98. INTEGER*8 :: p
  99. INTEGER(8) :: nx, ny, flags
  100. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  101. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  102. TYPE(*), INTENT(IN) :: interop
  103. END SUBROUTINE dfftw_plan_dft_c2r_2d_omp_offload_ilp64
  104. SUBROUTINE dfftw_plan_dft_c2r_3d_omp_offload_lp64(p, nx, ny, nz, in, out, flags, interop)
  105. USE PREC
  106. INTEGER*8 :: p
  107. INTEGER(4) :: nx, ny, nz, flags
  108. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  109. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  110. TYPE(*), INTENT(IN) :: interop
  111. END SUBROUTINE dfftw_plan_dft_c2r_3d_omp_offload_lp64
  112. SUBROUTINE dfftw_plan_dft_c2r_3d_omp_offload_ilp64(p, nx, ny, nz, in, out, flags, interop)
  113. USE PREC
  114. INTEGER*8 :: p
  115. INTEGER(8) :: nx, ny, nz, flags
  116. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  117. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  118. TYPE(*), INTENT(IN) :: interop
  119. END SUBROUTINE dfftw_plan_dft_c2r_3d_omp_offload_ilp64
  120. SUBROUTINE dfftw_plan_dft_r2c_1d_omp_offload_lp64(p, n, in, out, flags, interop)
  121. USE PREC
  122. INTEGER*8 :: p
  123. INTEGER(4) :: n, flags
  124. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: in
  125. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: out
  126. TYPE(*), INTENT(IN) :: interop
  127. END SUBROUTINE dfftw_plan_dft_r2c_1d_omp_offload_lp64
  128. SUBROUTINE dfftw_plan_dft_r2c_1d_omp_offload_ilp64(p, n, in, out, flags, interop)
  129. USE PREC
  130. INTEGER*8 :: p
  131. INTEGER(8) :: n, flags
  132. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: in
  133. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: out
  134. TYPE(*), INTENT(IN) :: interop
  135. END SUBROUTINE dfftw_plan_dft_r2c_1d_omp_offload_ilp64
  136. SUBROUTINE dfftw_plan_dft_r2c_2d_omp_offload_lp64(p, nx, ny, in, out, flags, interop)
  137. USE PREC
  138. INTEGER*8 :: p
  139. INTEGER(4) :: nx, ny, flags
  140. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  141. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  142. TYPE(*), INTENT(IN) :: interop
  143. END SUBROUTINE dfftw_plan_dft_r2c_2d_omp_offload_lp64
  144. SUBROUTINE dfftw_plan_dft_r2c_2d_omp_offload_ilp64(p, nx, ny, in, out, flags, interop)
  145. USE PREC
  146. INTEGER*8 :: p
  147. INTEGER(8) :: nx, ny, flags
  148. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  149. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  150. TYPE(*), INTENT(IN) :: interop
  151. END SUBROUTINE dfftw_plan_dft_r2c_2d_omp_offload_ilp64
  152. SUBROUTINE dfftw_plan_dft_r2c_3d_omp_offload_lp64(p, nx, ny, nz, in, out, flags, interop)
  153. USE PREC
  154. INTEGER*8 :: p
  155. INTEGER(4) :: nx, ny, nz, flags
  156. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  157. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  158. TYPE(*), INTENT(IN) :: interop
  159. END SUBROUTINE dfftw_plan_dft_r2c_3d_omp_offload_lp64
  160. SUBROUTINE dfftw_plan_dft_r2c_3d_omp_offload_ilp64(p, nx, ny, nz, in, out, flags, interop)
  161. USE PREC
  162. INTEGER*8 :: p
  163. INTEGER(8) :: nx, ny, nz, flags
  164. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  165. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  166. TYPE(*), INTENT(IN) :: interop
  167. END SUBROUTINE dfftw_plan_dft_r2c_3d_omp_offload_ilp64
  168. SUBROUTINE dfftw_plan_guru_dft_omp_offload_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, s, flags, interop)
  169. USE PREC
  170. INTEGER*8 :: p
  171. INTEGER(4) :: rank, howmany_rank, s, flags
  172. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  173. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  174. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  175. TYPE(*), INTENT(IN) :: interop
  176. END SUBROUTINE dfftw_plan_guru_dft_omp_offload_lp64
  177. SUBROUTINE dfftw_plan_guru_dft_omp_offload_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, s, flags, interop)
  178. USE PREC
  179. INTEGER*8 :: p
  180. INTEGER(8) :: rank, howmany_rank, s, flags
  181. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  182. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  183. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  184. TYPE(*), INTENT(IN) :: interop
  185. END SUBROUTINE dfftw_plan_guru_dft_omp_offload_ilp64
  186. SUBROUTINE dfftw_plan_guru_dft_c2r_omp_offload_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags, interop)
  187. USE PREC
  188. INTEGER*8 :: p
  189. INTEGER(4) :: rank, howmany_rank, flags
  190. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  191. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  192. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  193. TYPE(*), INTENT(IN) :: interop
  194. END SUBROUTINE dfftw_plan_guru_dft_c2r_omp_offload_lp64
  195. SUBROUTINE dfftw_plan_guru_dft_c2r_omp_offload_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags, interop)
  196. USE PREC
  197. INTEGER*8 :: p
  198. INTEGER(8) :: rank, howmany_rank, flags
  199. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  200. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  201. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  202. TYPE(*), INTENT(IN) :: interop
  203. END SUBROUTINE dfftw_plan_guru_dft_c2r_omp_offload_ilp64
  204. SUBROUTINE dfftw_plan_guru_dft_r2c_omp_offload_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags, interop)
  205. USE PREC
  206. INTEGER*8 :: p
  207. INTEGER(4) :: rank, howmany_rank, flags
  208. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  209. REAL(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  210. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  211. TYPE(*), INTENT(IN) :: interop
  212. END SUBROUTINE dfftw_plan_guru_dft_r2c_omp_offload_lp64
  213. SUBROUTINE dfftw_plan_guru_dft_r2c_omp_offload_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags, interop)
  214. USE PREC
  215. INTEGER*8 :: p
  216. INTEGER(8) :: rank, howmany_rank, flags
  217. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  218. REAL(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  219. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  220. TYPE(*), INTENT(IN) :: interop
  221. END SUBROUTINE dfftw_plan_guru_dft_r2c_omp_offload_ilp64
  222. SUBROUTINE dfftw_plan_many_dft_omp_offload_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, s, flags, interop)
  223. USE PREC
  224. INTEGER*8 :: p
  225. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, s, flags
  226. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  227. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  228. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  229. TYPE(*), INTENT(IN) :: interop
  230. END SUBROUTINE dfftw_plan_many_dft_omp_offload_lp64
  231. SUBROUTINE dfftw_plan_many_dft_omp_offload_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, s, flags, interop)
  232. USE PREC
  233. INTEGER*8 :: p
  234. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, s, flags
  235. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  236. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  237. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  238. TYPE(*), INTENT(IN) :: interop
  239. END SUBROUTINE dfftw_plan_many_dft_omp_offload_ilp64
  240. SUBROUTINE dfftw_plan_many_dft_c2r_omp_offload_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags, interop)
  241. USE PREC
  242. INTEGER*8 :: p
  243. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, flags
  244. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  245. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  246. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  247. TYPE(*), INTENT(IN) :: interop
  248. END SUBROUTINE dfftw_plan_many_dft_c2r_omp_offload_lp64
  249. SUBROUTINE dfftw_plan_many_dft_c2r_omp_offload_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags, interop)
  250. USE PREC
  251. INTEGER*8 :: p
  252. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, flags
  253. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  254. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  255. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  256. TYPE(*), INTENT(IN) :: interop
  257. END SUBROUTINE dfftw_plan_many_dft_c2r_omp_offload_ilp64
  258. SUBROUTINE dfftw_plan_many_dft_r2c_omp_offload_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags, interop)
  259. USE PREC
  260. INTEGER*8 :: p
  261. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, flags
  262. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  263. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  264. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  265. TYPE(*), INTENT(IN) :: interop
  266. END SUBROUTINE dfftw_plan_many_dft_r2c_omp_offload_lp64
  267. SUBROUTINE dfftw_plan_many_dft_r2c_omp_offload_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags, interop)
  268. USE PREC
  269. INTEGER*8 :: p
  270. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, flags
  271. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  272. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  273. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  274. TYPE(*), INTENT(IN) :: interop
  275. END SUBROUTINE dfftw_plan_many_dft_r2c_omp_offload_ilp64
  276. SUBROUTINE dfftw_execute_omp_offload(p, interop)
  277. INTEGER*8 :: p
  278. TYPE(*), INTENT(IN) :: interop
  279. END SUBROUTINE dfftw_execute_omp_offload
  280. SUBROUTINE dfftw_execute(p)
  281. INTEGER*8 :: p
  282. !$omp declare variant( dfftw_execute:dfftw_execute_omp_offload ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) )
  283. !$omp declare variant( dfftw_execute:dfftw_execute_omp_offload ) match( construct={target variant dispatch}, device={arch(gen)} )
  284. END SUBROUTINE dfftw_execute
  285. SUBROUTINE dfftw_execute_dft_omp_offload(p, in, out, interop)
  286. USE PREC
  287. INTEGER*8 :: p
  288. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  289. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  290. TYPE(*), INTENT(IN) :: interop
  291. END SUBROUTINE dfftw_execute_dft_omp_offload
  292. SUBROUTINE dfftw_execute_dft_c2r_omp_offload(p, in, out, interop)
  293. USE PREC
  294. INTEGER*8 :: p
  295. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  296. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  297. TYPE(*), INTENT(IN) :: interop
  298. END SUBROUTINE dfftw_execute_dft_c2r_omp_offload
  299. SUBROUTINE dfftw_execute_dft_r2c_omp_offload(p, in, out, interop)
  300. USE PREC
  301. INTEGER*8 :: p
  302. REAL(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  303. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  304. TYPE(*), INTENT(IN) :: interop
  305. END SUBROUTINE dfftw_execute_dft_r2c_omp_offload
  306. END INTERFACE
  307. INTERFACE dfftw_execute_dft
  308. SUBROUTINE dfftw_execute_dft_cpu(p, in, out)
  309. USE PREC
  310. INTEGER*8 :: p
  311. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  312. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  313. !$omp declare variant( dfftw_execute_dft_cpu:dfftw_execute_dft_omp_offload ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  314. !$omp declare variant( dfftw_execute_dft_cpu:dfftw_execute_dft_omp_offload ) match( construct={target variant dispatch}, device={arch(gen)} )
  315. END SUBROUTINE dfftw_execute_dft_cpu
  316. END INTERFACE dfftw_execute_dft
  317. INTERFACE dfftw_execute_dft_c2r
  318. SUBROUTINE dfftw_execute_dft_c2r_cpu(p, in, out)
  319. USE PREC
  320. INTEGER*8 :: p
  321. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  322. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  323. !$omp declare variant( dfftw_execute_dft_c2r_cpu:dfftw_execute_dft_c2r_omp_offload ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  324. !$omp declare variant( dfftw_execute_dft_c2r_cpu:dfftw_execute_dft_c2r_omp_offload ) match( construct={target variant dispatch}, device={arch(gen)} )
  325. END SUBROUTINE dfftw_execute_dft_c2r_cpu
  326. END INTERFACE dfftw_execute_dft_c2r
  327. INTERFACE dfftw_execute_dft_r2c
  328. SUBROUTINE dfftw_execute_dft_r2c_cpu(p, in, out)
  329. USE PREC
  330. INTEGER*8 :: p
  331. REAL(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  332. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  333. !$omp declare variant( dfftw_execute_dft_r2c_cpu:dfftw_execute_dft_r2c_omp_offload ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  334. !$omp declare variant( dfftw_execute_dft_r2c_cpu:dfftw_execute_dft_r2c_omp_offload ) match( construct={target variant dispatch}, device={arch(gen)} )
  335. END SUBROUTINE dfftw_execute_dft_r2c_cpu
  336. END INTERFACE dfftw_execute_dft_r2c
  337. INTERFACE dfftw_plan_dft_1d
  338. SUBROUTINE dfftw_plan_dft_1d_cpu_lp64(p, n, in, out, s, flags)
  339. USE PREC
  340. INTEGER*8 :: p
  341. INTEGER(4) :: n, s, flags
  342. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: in
  343. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: out
  344. !$omp declare variant( dfftw_plan_dft_1d_cpu_lp64:dfftw_plan_dft_1d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  345. !$omp declare variant( dfftw_plan_dft_1d_cpu_lp64:dfftw_plan_dft_1d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  346. END SUBROUTINE dfftw_plan_dft_1d_cpu_lp64
  347. SUBROUTINE dfftw_plan_dft_1d_cpu_ilp64(p, n, in, out, s, flags)
  348. USE PREC
  349. INTEGER*8 :: p
  350. INTEGER(8) :: n, s, flags
  351. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: in
  352. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: out
  353. !$omp declare variant( dfftw_plan_dft_1d_cpu_ilp64:dfftw_plan_dft_1d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  354. !$omp declare variant( dfftw_plan_dft_1d_cpu_ilp64:dfftw_plan_dft_1d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  355. END SUBROUTINE dfftw_plan_dft_1d_cpu_ilp64
  356. END INTERFACE dfftw_plan_dft_1d
  357. INTERFACE dfftw_plan_dft_2d
  358. SUBROUTINE dfftw_plan_dft_2d_cpu_lp64(p, nx, ny, in, out, s, flags)
  359. USE PREC
  360. INTEGER*8 :: p
  361. INTEGER(4) :: nx, ny, s, flags
  362. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  363. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  364. !$omp declare variant( dfftw_plan_dft_2d_cpu_lp64:dfftw_plan_dft_2d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  365. !$omp declare variant( dfftw_plan_dft_2d_cpu_lp64:dfftw_plan_dft_2d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  366. END SUBROUTINE dfftw_plan_dft_2d_cpu_lp64
  367. SUBROUTINE dfftw_plan_dft_2d_cpu_ilp64(p, nx, ny, in, out, s, flags)
  368. USE PREC
  369. INTEGER*8 :: p
  370. INTEGER(8) :: nx, ny, s, flags
  371. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  372. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  373. !$omp declare variant( dfftw_plan_dft_2d_cpu_ilp64:dfftw_plan_dft_2d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  374. !$omp declare variant( dfftw_plan_dft_2d_cpu_ilp64:dfftw_plan_dft_2d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  375. END SUBROUTINE dfftw_plan_dft_2d_cpu_ilp64
  376. END INTERFACE dfftw_plan_dft_2d
  377. INTERFACE dfftw_plan_dft_3d
  378. SUBROUTINE dfftw_plan_dft_3d_cpu_lp64(p, nx, ny, nz, in, out, s, flags)
  379. USE PREC
  380. INTEGER*8 :: p
  381. INTEGER(4) :: nx, ny, nz, s, flags
  382. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  383. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  384. !$omp declare variant( dfftw_plan_dft_3d_cpu_lp64:dfftw_plan_dft_3d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  385. !$omp declare variant( dfftw_plan_dft_3d_cpu_lp64:dfftw_plan_dft_3d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  386. END SUBROUTINE dfftw_plan_dft_3d_cpu_lp64
  387. SUBROUTINE dfftw_plan_dft_3d_cpu_ilp64(p, nx, ny, nz, in, out, s, flags)
  388. USE PREC
  389. INTEGER*8 :: p
  390. INTEGER(8) :: nx, ny, nz, s, flags
  391. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  392. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  393. !$omp declare variant( dfftw_plan_dft_3d_cpu_ilp64:dfftw_plan_dft_3d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  394. !$omp declare variant( dfftw_plan_dft_3d_cpu_ilp64:dfftw_plan_dft_3d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  395. END SUBROUTINE dfftw_plan_dft_3d_cpu_ilp64
  396. END INTERFACE dfftw_plan_dft_3d
  397. INTERFACE dfftw_plan_dft_c2r_1d
  398. SUBROUTINE dfftw_plan_dft_c2r_1d_cpu_lp64(p, n, in, out, flags)
  399. USE PREC
  400. INTEGER*8 :: p
  401. INTEGER(4) :: n, flags
  402. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: in
  403. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: out
  404. !$omp declare variant( dfftw_plan_dft_c2r_1d_cpu_lp64:dfftw_plan_dft_c2r_1d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  405. !$omp declare variant( dfftw_plan_dft_c2r_1d_cpu_lp64:dfftw_plan_dft_c2r_1d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  406. END SUBROUTINE dfftw_plan_dft_c2r_1d_cpu_lp64
  407. SUBROUTINE dfftw_plan_dft_c2r_1d_cpu_ilp64(p, n, in, out, flags)
  408. USE PREC
  409. INTEGER*8 :: p
  410. INTEGER(8) :: n, flags
  411. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: in
  412. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: out
  413. !$omp declare variant( dfftw_plan_dft_c2r_1d_cpu_ilp64:dfftw_plan_dft_c2r_1d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  414. !$omp declare variant( dfftw_plan_dft_c2r_1d_cpu_ilp64:dfftw_plan_dft_c2r_1d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  415. END SUBROUTINE dfftw_plan_dft_c2r_1d_cpu_ilp64
  416. END INTERFACE dfftw_plan_dft_c2r_1d
  417. INTERFACE dfftw_plan_dft_c2r_2d
  418. SUBROUTINE dfftw_plan_dft_c2r_2d_cpu_lp64(p, nx, ny, in, out, flags)
  419. USE PREC
  420. INTEGER*8 :: p
  421. INTEGER(4) :: nx, ny, flags
  422. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  423. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  424. !$omp declare variant( dfftw_plan_dft_c2r_2d_cpu_lp64:dfftw_plan_dft_c2r_2d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  425. !$omp declare variant( dfftw_plan_dft_c2r_2d_cpu_lp64:dfftw_plan_dft_c2r_2d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  426. END SUBROUTINE dfftw_plan_dft_c2r_2d_cpu_lp64
  427. SUBROUTINE dfftw_plan_dft_c2r_2d_cpu_ilp64(p, nx, ny, in, out, flags)
  428. USE PREC
  429. INTEGER*8 :: p
  430. INTEGER(8) :: nx, ny, flags
  431. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  432. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  433. !$omp declare variant( dfftw_plan_dft_c2r_2d_cpu_ilp64:dfftw_plan_dft_c2r_2d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  434. !$omp declare variant( dfftw_plan_dft_c2r_2d_cpu_ilp64:dfftw_plan_dft_c2r_2d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  435. END SUBROUTINE dfftw_plan_dft_c2r_2d_cpu_ilp64
  436. END INTERFACE dfftw_plan_dft_c2r_2d
  437. INTERFACE dfftw_plan_dft_c2r_3d
  438. SUBROUTINE dfftw_plan_dft_c2r_3d_cpu_lp64(p, nx, ny, nz, in, out, flags)
  439. USE PREC
  440. INTEGER*8 :: p
  441. INTEGER(4) :: nx, ny, nz, flags
  442. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  443. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  444. !$omp declare variant( dfftw_plan_dft_c2r_3d_cpu_lp64:dfftw_plan_dft_c2r_3d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  445. !$omp declare variant( dfftw_plan_dft_c2r_3d_cpu_lp64:dfftw_plan_dft_c2r_3d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  446. END SUBROUTINE dfftw_plan_dft_c2r_3d_cpu_lp64
  447. SUBROUTINE dfftw_plan_dft_c2r_3d_cpu_ilp64(p, nx, ny, nz, in, out, flags)
  448. USE PREC
  449. INTEGER*8 :: p
  450. INTEGER(8) :: nx, ny, nz, flags
  451. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  452. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  453. !$omp declare variant( dfftw_plan_dft_c2r_3d_cpu_ilp64:dfftw_plan_dft_c2r_3d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  454. !$omp declare variant( dfftw_plan_dft_c2r_3d_cpu_ilp64:dfftw_plan_dft_c2r_3d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  455. END SUBROUTINE dfftw_plan_dft_c2r_3d_cpu_ilp64
  456. END INTERFACE dfftw_plan_dft_c2r_3d
  457. INTERFACE dfftw_plan_dft_r2c_1d
  458. SUBROUTINE dfftw_plan_dft_r2c_1d_cpu_lp64(p, n, in, out, flags)
  459. USE PREC
  460. INTEGER*8 :: p
  461. INTEGER(4) :: n, flags
  462. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: in
  463. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: out
  464. !$omp declare variant( dfftw_plan_dft_r2c_1d_cpu_lp64:dfftw_plan_dft_r2c_1d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  465. !$omp declare variant( dfftw_plan_dft_r2c_1d_cpu_lp64:dfftw_plan_dft_r2c_1d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  466. END SUBROUTINE dfftw_plan_dft_r2c_1d_cpu_lp64
  467. SUBROUTINE dfftw_plan_dft_r2c_1d_cpu_ilp64(p, n, in, out, flags)
  468. USE PREC
  469. INTEGER*8 :: p
  470. INTEGER(8) :: n, flags
  471. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(*) :: in
  472. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(*) :: out
  473. !$omp declare variant( dfftw_plan_dft_r2c_1d_cpu_ilp64:dfftw_plan_dft_r2c_1d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  474. !$omp declare variant( dfftw_plan_dft_r2c_1d_cpu_ilp64:dfftw_plan_dft_r2c_1d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  475. END SUBROUTINE dfftw_plan_dft_r2c_1d_cpu_ilp64
  476. END INTERFACE dfftw_plan_dft_r2c_1d
  477. INTERFACE dfftw_plan_dft_r2c_2d
  478. SUBROUTINE dfftw_plan_dft_r2c_2d_cpu_lp64(p, nx, ny, in, out, flags)
  479. USE PREC
  480. INTEGER*8 :: p
  481. INTEGER(4) :: nx, ny, flags
  482. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  483. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  484. !$omp declare variant( dfftw_plan_dft_r2c_2d_cpu_lp64:dfftw_plan_dft_r2c_2d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  485. !$omp declare variant( dfftw_plan_dft_r2c_2d_cpu_lp64:dfftw_plan_dft_r2c_2d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  486. END SUBROUTINE dfftw_plan_dft_r2c_2d_cpu_lp64
  487. SUBROUTINE dfftw_plan_dft_r2c_2d_cpu_ilp64(p, nx, ny, in, out, flags)
  488. USE PREC
  489. INTEGER*8 :: p
  490. INTEGER(8) :: nx, ny, flags
  491. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  492. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  493. !$omp declare variant( dfftw_plan_dft_r2c_2d_cpu_ilp64:dfftw_plan_dft_r2c_2d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  494. !$omp declare variant( dfftw_plan_dft_r2c_2d_cpu_ilp64:dfftw_plan_dft_r2c_2d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  495. END SUBROUTINE dfftw_plan_dft_r2c_2d_cpu_ilp64
  496. END INTERFACE dfftw_plan_dft_r2c_2d
  497. INTERFACE dfftw_plan_dft_r2c_3d
  498. SUBROUTINE dfftw_plan_dft_r2c_3d_cpu_lp64(p, nx, ny, nz, in, out, flags)
  499. USE PREC
  500. INTEGER*8 :: p
  501. INTEGER(4) :: nx, ny, nz, flags
  502. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  503. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  504. !$omp declare variant( dfftw_plan_dft_r2c_3d_cpu_lp64:dfftw_plan_dft_r2c_3d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  505. !$omp declare variant( dfftw_plan_dft_r2c_3d_cpu_lp64:dfftw_plan_dft_r2c_3d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  506. END SUBROUTINE dfftw_plan_dft_r2c_3d_cpu_lp64
  507. SUBROUTINE dfftw_plan_dft_r2c_3d_cpu_ilp64(p, nx, ny, nz, in, out, flags)
  508. USE PREC
  509. INTEGER*8 :: p
  510. INTEGER(8) :: nx, ny, nz, flags
  511. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: in
  512. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: out
  513. !$omp declare variant( dfftw_plan_dft_r2c_3d_cpu_ilp64:dfftw_plan_dft_r2c_3d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  514. !$omp declare variant( dfftw_plan_dft_r2c_3d_cpu_ilp64:dfftw_plan_dft_r2c_3d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  515. END SUBROUTINE dfftw_plan_dft_r2c_3d_cpu_ilp64
  516. END INTERFACE dfftw_plan_dft_r2c_3d
  517. INTERFACE dfftw_plan_guru_dft
  518. SUBROUTINE dfftw_plan_guru_dft_cpu_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, s, flags)
  519. USE PREC
  520. INTEGER*8 :: p
  521. INTEGER(4) :: rank, howmany_rank, s, flags
  522. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  523. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  524. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  525. !$omp declare variant( dfftw_plan_guru_dft_cpu_lp64:dfftw_plan_guru_dft_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  526. !$omp declare variant( dfftw_plan_guru_dft_cpu_lp64:dfftw_plan_guru_dft_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  527. END SUBROUTINE dfftw_plan_guru_dft_cpu_lp64
  528. SUBROUTINE dfftw_plan_guru_dft_cpu_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, s, flags)
  529. USE PREC
  530. INTEGER*8 :: p
  531. INTEGER(8) :: rank, howmany_rank, s, flags
  532. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  533. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  534. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  535. !$omp declare variant( dfftw_plan_guru_dft_cpu_ilp64:dfftw_plan_guru_dft_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  536. !$omp declare variant( dfftw_plan_guru_dft_cpu_ilp64:dfftw_plan_guru_dft_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  537. END SUBROUTINE dfftw_plan_guru_dft_cpu_ilp64
  538. END INTERFACE dfftw_plan_guru_dft
  539. INTERFACE dfftw_plan_guru_dft_c2r
  540. SUBROUTINE dfftw_plan_guru_dft_c2r_cpu_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags)
  541. USE PREC
  542. INTEGER*8 :: p
  543. INTEGER(4) :: rank, howmany_rank, flags
  544. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  545. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  546. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  547. !$omp declare variant( dfftw_plan_guru_dft_c2r_cpu_lp64:dfftw_plan_guru_dft_c2r_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  548. !$omp declare variant( dfftw_plan_guru_dft_c2r_cpu_lp64:dfftw_plan_guru_dft_c2r_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  549. END SUBROUTINE dfftw_plan_guru_dft_c2r_cpu_lp64
  550. SUBROUTINE dfftw_plan_guru_dft_c2r_cpu_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags)
  551. USE PREC
  552. INTEGER*8 :: p
  553. INTEGER(8) :: rank, howmany_rank, flags
  554. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  555. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  556. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  557. !$omp declare variant( dfftw_plan_guru_dft_c2r_cpu_ilp64:dfftw_plan_guru_dft_c2r_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  558. !$omp declare variant( dfftw_plan_guru_dft_c2r_cpu_ilp64:dfftw_plan_guru_dft_c2r_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  559. END SUBROUTINE dfftw_plan_guru_dft_c2r_cpu_ilp64
  560. END INTERFACE dfftw_plan_guru_dft_c2r
  561. INTERFACE dfftw_plan_guru_dft_r2c
  562. SUBROUTINE dfftw_plan_guru_dft_r2c_cpu_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags)
  563. USE PREC
  564. INTEGER*8 :: p
  565. INTEGER(4) :: rank, howmany_rank, flags
  566. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  567. REAL(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  568. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  569. !$omp declare variant( dfftw_plan_guru_dft_r2c_cpu_lp64:dfftw_plan_guru_dft_r2c_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  570. !$omp declare variant( dfftw_plan_guru_dft_r2c_cpu_lp64:dfftw_plan_guru_dft_r2c_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  571. END SUBROUTINE dfftw_plan_guru_dft_r2c_cpu_lp64
  572. SUBROUTINE dfftw_plan_guru_dft_r2c_cpu_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags)
  573. USE PREC
  574. INTEGER*8 :: p
  575. INTEGER(8) :: rank, howmany_rank, flags
  576. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  577. REAL(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  578. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  579. !$omp declare variant( dfftw_plan_guru_dft_r2c_cpu_ilp64:dfftw_plan_guru_dft_r2c_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  580. !$omp declare variant( dfftw_plan_guru_dft_r2c_cpu_ilp64:dfftw_plan_guru_dft_r2c_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  581. END SUBROUTINE dfftw_plan_guru_dft_r2c_cpu_ilp64
  582. END INTERFACE dfftw_plan_guru_dft_r2c
  583. INTERFACE dfftw_plan_many_dft
  584. SUBROUTINE dfftw_plan_many_dft_cpu_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, s, flags)
  585. USE PREC
  586. INTEGER*8 :: p
  587. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, s, flags
  588. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  589. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  590. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  591. !$omp declare variant( dfftw_plan_many_dft_cpu_lp64:dfftw_plan_many_dft_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  592. !$omp declare variant( dfftw_plan_many_dft_cpu_lp64:dfftw_plan_many_dft_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  593. END SUBROUTINE dfftw_plan_many_dft_cpu_lp64
  594. SUBROUTINE dfftw_plan_many_dft_cpu_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, s, flags)
  595. USE PREC
  596. INTEGER*8 :: p
  597. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, s, flags
  598. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  599. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  600. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  601. !$omp declare variant( dfftw_plan_many_dft_cpu_ilp64:dfftw_plan_many_dft_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  602. !$omp declare variant( dfftw_plan_many_dft_cpu_ilp64:dfftw_plan_many_dft_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  603. END SUBROUTINE dfftw_plan_many_dft_cpu_ilp64
  604. END INTERFACE dfftw_plan_many_dft
  605. INTERFACE dfftw_plan_many_dft_c2r
  606. SUBROUTINE dfftw_plan_many_dft_c2r_cpu_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags)
  607. USE PREC
  608. INTEGER*8 :: p
  609. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, flags
  610. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  611. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  612. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  613. !$omp declare variant( dfftw_plan_many_dft_c2r_cpu_lp64:dfftw_plan_many_dft_c2r_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  614. !$omp declare variant( dfftw_plan_many_dft_c2r_cpu_lp64:dfftw_plan_many_dft_c2r_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  615. END SUBROUTINE dfftw_plan_many_dft_c2r_cpu_lp64
  616. SUBROUTINE dfftw_plan_many_dft_c2r_cpu_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags)
  617. USE PREC
  618. INTEGER*8 :: p
  619. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, flags
  620. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  621. COMPLEX(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  622. REAL(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  623. !$omp declare variant( dfftw_plan_many_dft_c2r_cpu_ilp64:dfftw_plan_many_dft_c2r_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  624. !$omp declare variant( dfftw_plan_many_dft_c2r_cpu_ilp64:dfftw_plan_many_dft_c2r_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  625. END SUBROUTINE dfftw_plan_many_dft_c2r_cpu_ilp64
  626. END INTERFACE dfftw_plan_many_dft_c2r
  627. INTERFACE dfftw_plan_many_dft_r2c
  628. SUBROUTINE dfftw_plan_many_dft_r2c_cpu_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags)
  629. USE PREC
  630. INTEGER*8 :: p
  631. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, flags
  632. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  633. REAL(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  634. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  635. !$omp declare variant( dfftw_plan_many_dft_r2c_cpu_lp64:dfftw_plan_many_dft_r2c_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  636. !$omp declare variant( dfftw_plan_many_dft_r2c_cpu_lp64:dfftw_plan_many_dft_r2c_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  637. END SUBROUTINE dfftw_plan_many_dft_r2c_cpu_lp64
  638. SUBROUTINE dfftw_plan_many_dft_r2c_cpu_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags)
  639. USE PREC
  640. INTEGER*8 :: p
  641. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, flags
  642. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  643. REAL(FFTW_DPKP), INTENT(IN), DIMENSION(..) :: in
  644. COMPLEX(FFTW_DPKP), INTENT(OUT), DIMENSION(..) :: out
  645. !$omp declare variant( dfftw_plan_many_dft_r2c_cpu_ilp64:dfftw_plan_many_dft_r2c_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  646. !$omp declare variant( dfftw_plan_many_dft_r2c_cpu_ilp64:dfftw_plan_many_dft_r2c_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  647. END SUBROUTINE dfftw_plan_many_dft_r2c_cpu_ilp64
  648. END INTERFACE dfftw_plan_many_dft_r2c
  649. INTERFACE
  650. SUBROUTINE sfftw_plan_dft_1d_omp_offload_lp64(p, n, in, out, s, flags, interop)
  651. USE PREC
  652. INTEGER*8 :: p
  653. INTEGER(4) :: n, s, flags
  654. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  655. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  656. TYPE(*), INTENT(IN) :: interop
  657. END SUBROUTINE sfftw_plan_dft_1d_omp_offload_lp64
  658. SUBROUTINE sfftw_plan_dft_1d_omp_offload_ilp64(p, n, in, out, s, flags, interop)
  659. USE PREC
  660. INTEGER*8 :: p
  661. INTEGER(8) :: n, s, flags
  662. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  663. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  664. TYPE(*), INTENT(IN) :: interop
  665. END SUBROUTINE sfftw_plan_dft_1d_omp_offload_ilp64
  666. SUBROUTINE sfftw_plan_dft_2d_omp_offload_lp64(p, nx, ny, in, out, s, flags, interop)
  667. USE PREC
  668. INTEGER*8 :: p
  669. INTEGER(4) :: nx, ny, s, flags
  670. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  671. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  672. TYPE(*), INTENT(IN) :: interop
  673. END SUBROUTINE sfftw_plan_dft_2d_omp_offload_lp64
  674. SUBROUTINE sfftw_plan_dft_2d_omp_offload_ilp64(p, nx, ny, in, out, s, flags, interop)
  675. USE PREC
  676. INTEGER*8 :: p
  677. INTEGER(8) :: nx, ny, s, flags
  678. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  679. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  680. TYPE(*), INTENT(IN) :: interop
  681. END SUBROUTINE sfftw_plan_dft_2d_omp_offload_ilp64
  682. SUBROUTINE sfftw_plan_dft_3d_omp_offload_lp64(p, nx, ny, nz, in, out, s, flags, interop)
  683. USE PREC
  684. INTEGER*8 :: p
  685. INTEGER(4) :: nx, ny, nz, s, flags
  686. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  687. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  688. TYPE(*), INTENT(IN) :: interop
  689. END SUBROUTINE sfftw_plan_dft_3d_omp_offload_lp64
  690. SUBROUTINE sfftw_plan_dft_3d_omp_offload_ilp64(p, nx, ny, nz, in, out, s, flags, interop)
  691. USE PREC
  692. INTEGER*8 :: p
  693. INTEGER(8) :: nx, ny, nz, s, flags
  694. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  695. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  696. TYPE(*), INTENT(IN) :: interop
  697. END SUBROUTINE sfftw_plan_dft_3d_omp_offload_ilp64
  698. SUBROUTINE sfftw_plan_dft_c2r_1d_omp_offload_lp64(p, n, in, out, flags, interop)
  699. USE PREC
  700. INTEGER*8 :: p
  701. INTEGER(4) :: n, flags
  702. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  703. REAL (FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  704. TYPE(*), INTENT(IN) :: interop
  705. END SUBROUTINE sfftw_plan_dft_c2r_1d_omp_offload_lp64
  706. SUBROUTINE sfftw_plan_dft_c2r_1d_omp_offload_ilp64(p, n, in, out, flags, interop)
  707. USE PREC
  708. INTEGER*8 :: p
  709. INTEGER(8) :: n, flags
  710. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  711. REAL (FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  712. TYPE(*), INTENT(IN) :: interop
  713. END SUBROUTINE sfftw_plan_dft_c2r_1d_omp_offload_ilp64
  714. SUBROUTINE sfftw_plan_dft_c2r_2d_omp_offload_lp64(p, nx, ny, in, out, flags, interop)
  715. USE PREC
  716. INTEGER*8 :: p
  717. INTEGER(4) :: nx, ny, flags
  718. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  719. REAL (FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  720. TYPE(*), INTENT(IN) :: interop
  721. END SUBROUTINE sfftw_plan_dft_c2r_2d_omp_offload_lp64
  722. SUBROUTINE sfftw_plan_dft_c2r_2d_omp_offload_ilp64(p, nx, ny, in, out, flags, interop)
  723. USE PREC
  724. INTEGER*8 :: p
  725. INTEGER(8) :: nx, ny, flags
  726. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  727. REAL (FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  728. TYPE(*), INTENT(IN) :: interop
  729. END SUBROUTINE sfftw_plan_dft_c2r_2d_omp_offload_ilp64
  730. SUBROUTINE sfftw_plan_dft_c2r_3d_omp_offload_lp64(p, nx, ny, nz, in, out, flags, interop)
  731. USE PREC
  732. INTEGER*8 :: p
  733. INTEGER(4) :: nx, ny, nz, flags
  734. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  735. REAL (FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  736. TYPE(*), INTENT(IN) :: interop
  737. END SUBROUTINE sfftw_plan_dft_c2r_3d_omp_offload_lp64
  738. SUBROUTINE sfftw_plan_dft_c2r_3d_omp_offload_ilp64(p, nx, ny, nz, in, out, flags, interop)
  739. USE PREC
  740. INTEGER*8 :: p
  741. INTEGER(8) :: nx, ny, nz, flags
  742. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  743. REAL (FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  744. TYPE(*), INTENT(IN) :: interop
  745. END SUBROUTINE sfftw_plan_dft_c2r_3d_omp_offload_ilp64
  746. SUBROUTINE sfftw_plan_dft_r2c_1d_omp_offload_lp64(p, n, in, out, flags, interop)
  747. USE PREC
  748. INTEGER*8 :: p
  749. INTEGER(4) :: n, flags
  750. REAL (FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  751. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  752. TYPE(*), INTENT(IN) :: interop
  753. END SUBROUTINE sfftw_plan_dft_r2c_1d_omp_offload_lp64
  754. SUBROUTINE sfftw_plan_dft_r2c_1d_omp_offload_ilp64(p, n, in, out, flags, interop)
  755. USE PREC
  756. INTEGER*8 :: p
  757. INTEGER(8) :: n, flags
  758. REAL (FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  759. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  760. TYPE(*), INTENT(IN) :: interop
  761. END SUBROUTINE sfftw_plan_dft_r2c_1d_omp_offload_ilp64
  762. SUBROUTINE sfftw_plan_dft_r2c_2d_omp_offload_lp64(p, nx, ny, in, out, flags, interop)
  763. USE PREC
  764. INTEGER*8 :: p
  765. INTEGER(4) :: nx, ny, flags
  766. REAL (FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  767. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  768. TYPE(*), INTENT(IN) :: interop
  769. END SUBROUTINE sfftw_plan_dft_r2c_2d_omp_offload_lp64
  770. SUBROUTINE sfftw_plan_dft_r2c_2d_omp_offload_ilp64(p, nx, ny, nz, in, out, flags, interop)
  771. USE PREC
  772. INTEGER*8 :: p
  773. INTEGER(8) :: nx, ny, flags
  774. REAL (FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  775. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  776. TYPE(*), INTENT(IN) :: interop
  777. END SUBROUTINE sfftw_plan_dft_r2c_2d_omp_offload_ilp64
  778. SUBROUTINE sfftw_plan_dft_r2c_3d_omp_offload_lp64(p, nx, ny, nz, in, out, flags, interop)
  779. USE PREC
  780. INTEGER*8 :: p
  781. INTEGER(4) :: nx, ny, nz, flags
  782. REAL (FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  783. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  784. TYPE(*), INTENT(IN) :: interop
  785. END SUBROUTINE sfftw_plan_dft_r2c_3d_omp_offload_lp64
  786. SUBROUTINE sfftw_plan_dft_r2c_3d_omp_offload_ilp64(p, nx, ny, nz, in, out, flags, interop)
  787. USE PREC
  788. INTEGER*8 :: p
  789. INTEGER(8) :: nx, ny, nz, flags
  790. REAL (FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  791. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  792. TYPE(*), INTENT(IN) :: interop
  793. END SUBROUTINE sfftw_plan_dft_r2c_3d_omp_offload_ilp64
  794. SUBROUTINE sfftw_plan_guru_dft_omp_offload_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, s, flags, interop)
  795. USE PREC
  796. INTEGER*8 :: p
  797. INTEGER(4) :: rank, howmany_rank, s, flags
  798. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, is, os, n
  799. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  800. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  801. TYPE(*), INTENT(IN) :: interop
  802. END SUBROUTINE sfftw_plan_guru_dft_omp_offload_lp64
  803. SUBROUTINE sfftw_plan_guru_dft_omp_offload_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, s, flags, interop)
  804. USE PREC
  805. INTEGER*8 :: p
  806. INTEGER(8) :: rank, howmany_rank, s, flags
  807. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, is, os, n
  808. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  809. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  810. TYPE(*), INTENT(IN) :: interop
  811. END SUBROUTINE sfftw_plan_guru_dft_omp_offload_ilp64
  812. SUBROUTINE sfftw_plan_guru_dft_c2r_omp_offload_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags, interop)
  813. USE PREC
  814. INTEGER*8 :: p
  815. INTEGER(4) :: rank, howmany_rank, flags
  816. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  817. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  818. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  819. TYPE(*), INTENT(IN) :: interop
  820. END SUBROUTINE sfftw_plan_guru_dft_c2r_omp_offload_lp64
  821. SUBROUTINE sfftw_plan_guru_dft_c2r_omp_offload_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags, interop)
  822. USE PREC
  823. INTEGER*8 :: p
  824. INTEGER(8) :: rank, howmany_rank, flags
  825. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  826. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  827. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  828. TYPE(*), INTENT(IN) :: interop
  829. END SUBROUTINE sfftw_plan_guru_dft_c2r_omp_offload_ilp64
  830. SUBROUTINE sfftw_plan_guru_dft_r2c_omp_offload_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags, interop)
  831. USE PREC
  832. INTEGER*8 :: p
  833. INTEGER(4) :: rank, howmany_rank, flags
  834. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  835. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  836. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  837. TYPE(*), INTENT(IN) :: interop
  838. END SUBROUTINE sfftw_plan_guru_dft_r2c_omp_offload_lp64
  839. SUBROUTINE sfftw_plan_guru_dft_r2c_omp_offload_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags, interop)
  840. USE PREC
  841. INTEGER*8 :: p
  842. INTEGER(8) :: rank, howmany_rank, flags
  843. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  844. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  845. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  846. TYPE(*), INTENT(IN) :: interop
  847. END SUBROUTINE sfftw_plan_guru_dft_r2c_omp_offload_ilp64
  848. SUBROUTINE sfftw_plan_many_dft_omp_offload_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, s, flags, interop)
  849. USE PREC
  850. INTEGER*8 :: p
  851. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, s, flags
  852. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  853. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  854. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  855. TYPE(*), INTENT(IN) :: interop
  856. END SUBROUTINE sfftw_plan_many_dft_omp_offload_lp64
  857. SUBROUTINE sfftw_plan_many_dft_omp_offload_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, s, flags, interop)
  858. USE PREC
  859. INTEGER*8 :: p
  860. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, s, flags
  861. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  862. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  863. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  864. TYPE(*), INTENT(IN) :: interop
  865. END SUBROUTINE sfftw_plan_many_dft_omp_offload_ilp64
  866. SUBROUTINE sfftw_plan_many_dft_c2r_omp_offload_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags, interop)
  867. USE PREC
  868. INTEGER*8 :: p
  869. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, flags
  870. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  871. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  872. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  873. TYPE(*), INTENT(IN) :: interop
  874. END SUBROUTINE sfftw_plan_many_dft_c2r_omp_offload_lp64
  875. SUBROUTINE sfftw_plan_many_dft_c2r_omp_offload_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags, interop)
  876. USE PREC
  877. INTEGER*8 :: p
  878. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, flags
  879. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  880. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  881. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  882. TYPE(*), INTENT(IN) :: interop
  883. END SUBROUTINE sfftw_plan_many_dft_c2r_omp_offload_ilp64
  884. SUBROUTINE sfftw_plan_many_dft_r2c_omp_offload_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags, interop)
  885. USE PREC
  886. INTEGER*8 :: p
  887. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, flags
  888. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  889. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  890. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  891. TYPE(*), INTENT(IN) :: interop
  892. END SUBROUTINE sfftw_plan_many_dft_r2c_omp_offload_lp64
  893. SUBROUTINE sfftw_plan_many_dft_r2c_omp_offload_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags, interop)
  894. USE PREC
  895. INTEGER*8 :: p
  896. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, flags
  897. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  898. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  899. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  900. TYPE(*), INTENT(IN) :: interop
  901. END SUBROUTINE sfftw_plan_many_dft_r2c_omp_offload_ilp64
  902. SUBROUTINE sfftw_execute_omp_offload(p, interop)
  903. INTEGER*8 :: p
  904. TYPE(*), INTENT(IN) :: interop
  905. END SUBROUTINE sfftw_execute_omp_offload
  906. SUBROUTINE sfftw_execute(p)
  907. INTEGER*8 :: p
  908. !$omp declare variant( sfftw_execute:sfftw_execute_omp_offload ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) )
  909. !$omp declare variant( sfftw_execute:sfftw_execute_omp_offload ) match( construct={target variant dispatch}, device={arch(gen)} )
  910. END SUBROUTINE sfftw_execute
  911. SUBROUTINE sfftw_execute_dft_omp_offload(p, in, out, interop)
  912. USE PREC
  913. INTEGER*8 :: p
  914. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  915. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  916. TYPE(*), INTENT(IN) :: interop
  917. END SUBROUTINE sfftw_execute_dft_omp_offload
  918. SUBROUTINE sfftw_execute_dft_c2r_omp_offload(p, in, out, interop)
  919. USE PREC
  920. INTEGER*8 :: p
  921. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  922. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  923. TYPE(*), INTENT(IN) :: interop
  924. END SUBROUTINE sfftw_execute_dft_c2r_omp_offload
  925. SUBROUTINE sfftw_execute_dft_r2c_omp_offload(p, in, out, interop)
  926. USE PREC
  927. INTEGER*8 :: p
  928. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  929. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  930. TYPE(*), INTENT(IN) :: interop
  931. END SUBROUTINE sfftw_execute_dft_r2c_omp_offload
  932. END INTERFACE
  933. INTERFACE sfftw_execute_dft
  934. SUBROUTINE sfftw_execute_dft_cpu(p, in, out)
  935. USE PREC
  936. INTEGER*8 :: p
  937. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  938. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  939. !$omp declare variant( sfftw_execute_dft_cpu:sfftw_execute_dft_omp_offload ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  940. !$omp declare variant( sfftw_execute_dft_cpu:sfftw_execute_dft_omp_offload ) match( construct={target variant dispatch}, device={arch(gen)} )
  941. END SUBROUTINE sfftw_execute_dft_cpu
  942. END INTERFACE sfftw_execute_dft
  943. INTERFACE sfftw_execute_dft_c2r
  944. SUBROUTINE sfftw_execute_dft_c2r_cpu(p, in, out)
  945. USE PREC
  946. INTEGER*8 :: p
  947. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  948. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  949. !$omp declare variant( sfftw_execute_dft_c2r_cpu:sfftw_execute_dft_c2r_omp_offload ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  950. !$omp declare variant( sfftw_execute_dft_c2r_cpu:sfftw_execute_dft_c2r_omp_offload ) match( construct={target variant dispatch}, device={arch(gen)} )
  951. END SUBROUTINE sfftw_execute_dft_c2r_cpu
  952. END INTERFACE sfftw_execute_dft_c2r
  953. INTERFACE sfftw_execute_dft_r2c
  954. SUBROUTINE sfftw_execute_dft_r2c_cpu(p, in, out)
  955. USE PREC
  956. INTEGER*8 :: p
  957. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  958. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  959. !$omp declare variant( sfftw_execute_dft_r2c_cpu:sfftw_execute_dft_r2c_omp_offload ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  960. !$omp declare variant( sfftw_execute_dft_r2c_cpu:sfftw_execute_dft_r2c_omp_offload ) match( construct={target variant dispatch}, device={arch(gen)} )
  961. END SUBROUTINE sfftw_execute_dft_r2c_cpu
  962. END INTERFACE sfftw_execute_dft_r2c
  963. INTERFACE sfftw_plan_dft_1d
  964. SUBROUTINE sfftw_plan_dft_1d_cpu_lp64(p, n, in, out, s, flags)
  965. USE PREC
  966. INTEGER*8 :: p
  967. INTEGER(4) :: n, s, flags
  968. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  969. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  970. !$omp declare variant( sfftw_plan_dft_1d_cpu_lp64:sfftw_plan_dft_1d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  971. !$omp declare variant( sfftw_plan_dft_1d_cpu_lp64:sfftw_plan_dft_1d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  972. END SUBROUTINE sfftw_plan_dft_1d_cpu_lp64
  973. SUBROUTINE sfftw_plan_dft_1d_cpu_ilp64(p, n, in, out, s, flags)
  974. USE PREC
  975. INTEGER*8 :: p
  976. INTEGER(8) :: n, s, flags
  977. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  978. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  979. !$omp declare variant( sfftw_plan_dft_1d_cpu_ilp64:sfftw_plan_dft_1d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  980. !$omp declare variant( sfftw_plan_dft_1d_cpu_ilp64:sfftw_plan_dft_1d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  981. END SUBROUTINE sfftw_plan_dft_1d_cpu_ilp64
  982. END INTERFACE sfftw_plan_dft_1d
  983. INTERFACE sfftw_plan_dft_2d
  984. SUBROUTINE sfftw_plan_dft_2d_cpu_lp64(p, nx, ny, in, out, s, flags)
  985. USE PREC
  986. INTEGER*8 :: p
  987. INTEGER(4) :: nx, ny, s, flags
  988. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  989. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  990. !$omp declare variant( sfftw_plan_dft_2d_cpu_lp64:sfftw_plan_dft_2d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  991. !$omp declare variant( sfftw_plan_dft_2d_cpu_lp64:sfftw_plan_dft_2d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  992. END SUBROUTINE sfftw_plan_dft_2d_cpu_lp64
  993. SUBROUTINE sfftw_plan_dft_2d_cpu_ilp64(p, nx, ny, in, out, s, flags)
  994. USE PREC
  995. INTEGER*8 :: p
  996. INTEGER(8) :: nx, ny, s, flags
  997. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  998. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  999. !$omp declare variant( sfftw_plan_dft_2d_cpu_ilp64:sfftw_plan_dft_2d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1000. !$omp declare variant( sfftw_plan_dft_2d_cpu_ilp64:sfftw_plan_dft_2d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1001. END SUBROUTINE sfftw_plan_dft_2d_cpu_ilp64
  1002. END INTERFACE sfftw_plan_dft_2d
  1003. INTERFACE sfftw_plan_dft_3d
  1004. SUBROUTINE sfftw_plan_dft_3d_cpu_lp64(p, nx, ny, nz, in, out, s, flags)
  1005. USE PREC
  1006. INTEGER*8 :: p
  1007. INTEGER(4) :: nx, ny, nz, s, flags
  1008. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1009. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1010. !$omp declare variant( sfftw_plan_dft_3d_cpu_lp64:sfftw_plan_dft_3d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1011. !$omp declare variant( sfftw_plan_dft_3d_cpu_lp64:sfftw_plan_dft_3d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1012. END SUBROUTINE sfftw_plan_dft_3d_cpu_lp64
  1013. SUBROUTINE sfftw_plan_dft_3d_cpu_ilp64(p, nx, ny, nz, in, out, s, flags)
  1014. USE PREC
  1015. INTEGER*8 :: p
  1016. INTEGER(8) :: nx, ny, nz, s, flags
  1017. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1018. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1019. !$omp declare variant( sfftw_plan_dft_3d_cpu_ilp64:sfftw_plan_dft_3d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1020. !$omp declare variant( sfftw_plan_dft_3d_cpu_ilp64:sfftw_plan_dft_3d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1021. END SUBROUTINE sfftw_plan_dft_3d_cpu_ilp64
  1022. END INTERFACE sfftw_plan_dft_3d
  1023. INTERFACE sfftw_plan_dft_c2r_1d
  1024. SUBROUTINE sfftw_plan_dft_c2r_1d_cpu_lp64(p, n, in, out, flags)
  1025. USE PREC
  1026. INTEGER*8 :: p
  1027. INTEGER(4) :: n, flags
  1028. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  1029. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  1030. !$omp declare variant( sfftw_plan_dft_c2r_1d_cpu_lp64:sfftw_plan_dft_c2r_1d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1031. !$omp declare variant( sfftw_plan_dft_c2r_1d_cpu_lp64:sfftw_plan_dft_c2r_1d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1032. END SUBROUTINE sfftw_plan_dft_c2r_1d_cpu_lp64
  1033. SUBROUTINE sfftw_plan_dft_c2r_1d_cpu_ilp64(p, n, in, out, flags)
  1034. USE PREC
  1035. INTEGER*8 :: p
  1036. INTEGER(8) :: n, flags
  1037. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  1038. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  1039. !$omp declare variant( sfftw_plan_dft_c2r_1d_cpu_ilp64:sfftw_plan_dft_c2r_1d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1040. !$omp declare variant( sfftw_plan_dft_c2r_1d_cpu_ilp64:sfftw_plan_dft_c2r_1d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1041. END SUBROUTINE sfftw_plan_dft_c2r_1d_cpu_ilp64
  1042. END INTERFACE sfftw_plan_dft_c2r_1d
  1043. INTERFACE sfftw_plan_dft_c2r_2d
  1044. SUBROUTINE sfftw_plan_dft_c2r_2d_cpu_lp64(p, nx, ny, in, out, flags)
  1045. USE PREC
  1046. INTEGER*8 :: p
  1047. INTEGER(4) :: nx, ny, flags
  1048. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1049. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1050. !$omp declare variant( sfftw_plan_dft_c2r_2d_cpu_lp64:sfftw_plan_dft_c2r_2d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1051. !$omp declare variant( sfftw_plan_dft_c2r_2d_cpu_lp64:sfftw_plan_dft_c2r_2d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1052. END SUBROUTINE sfftw_plan_dft_c2r_2d_cpu_lp64
  1053. SUBROUTINE sfftw_plan_dft_c2r_2d_cpu_ilp64(p, nx, ny, in, out, flags)
  1054. USE PREC
  1055. INTEGER*8 :: p
  1056. INTEGER(8) :: nx, ny, flags
  1057. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1058. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1059. !$omp declare variant( sfftw_plan_dft_c2r_2d_cpu_ilp64:sfftw_plan_dft_c2r_2d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1060. !$omp declare variant( sfftw_plan_dft_c2r_2d_cpu_ilp64:sfftw_plan_dft_c2r_2d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1061. END SUBROUTINE sfftw_plan_dft_c2r_2d_cpu_ilp64
  1062. END INTERFACE sfftw_plan_dft_c2r_2d
  1063. INTERFACE sfftw_plan_dft_c2r_3d
  1064. SUBROUTINE sfftw_plan_dft_c2r_3d_cpu_lp64(p, nx, ny, nz, in, out, flags)
  1065. USE PREC
  1066. INTEGER*8 :: p
  1067. INTEGER(4) :: nx, ny, nz, flags
  1068. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1069. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1070. !$omp declare variant( sfftw_plan_dft_c2r_3d_cpu_lp64:sfftw_plan_dft_c2r_3d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1071. !$omp declare variant( sfftw_plan_dft_c2r_3d_cpu_lp64:sfftw_plan_dft_c2r_3d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1072. END SUBROUTINE sfftw_plan_dft_c2r_3d_cpu_lp64
  1073. SUBROUTINE sfftw_plan_dft_c2r_3d_cpu_ilp64(p, nx, ny, nz, in, out, flags)
  1074. USE PREC
  1075. INTEGER*8 :: p
  1076. INTEGER(8) :: nx, ny, nz, flags
  1077. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1078. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1079. !$omp declare variant( sfftw_plan_dft_c2r_3d_cpu_ilp64:sfftw_plan_dft_c2r_3d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1080. !$omp declare variant( sfftw_plan_dft_c2r_3d_cpu_ilp64:sfftw_plan_dft_c2r_3d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1081. END SUBROUTINE sfftw_plan_dft_c2r_3d_cpu_ilp64
  1082. END INTERFACE sfftw_plan_dft_c2r_3d
  1083. INTERFACE sfftw_plan_dft_r2c_1d
  1084. SUBROUTINE sfftw_plan_dft_r2c_1d_cpu_lp64(p, n, in, out, flags)
  1085. USE PREC
  1086. INTEGER*8 :: p
  1087. INTEGER(4) :: n, flags
  1088. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  1089. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  1090. !$omp declare variant( sfftw_plan_dft_r2c_1d_cpu_lp64:sfftw_plan_dft_r2c_1d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1091. !$omp declare variant( sfftw_plan_dft_r2c_1d_cpu_lp64:sfftw_plan_dft_r2c_1d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1092. END SUBROUTINE sfftw_plan_dft_r2c_1d_cpu_lp64
  1093. SUBROUTINE sfftw_plan_dft_r2c_1d_cpu_ilp64(p, n, in, out, flags)
  1094. USE PREC
  1095. INTEGER*8 :: p
  1096. INTEGER(8) :: n, flags
  1097. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(*) :: in
  1098. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(*) :: out
  1099. !$omp declare variant( sfftw_plan_dft_r2c_1d_cpu_ilp64:sfftw_plan_dft_r2c_1d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1100. !$omp declare variant( sfftw_plan_dft_r2c_1d_cpu_ilp64:sfftw_plan_dft_r2c_1d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1101. END SUBROUTINE sfftw_plan_dft_r2c_1d_cpu_ilp64
  1102. END INTERFACE sfftw_plan_dft_r2c_1d
  1103. INTERFACE sfftw_plan_dft_r2c_2d
  1104. SUBROUTINE sfftw_plan_dft_r2c_2d_cpu_lp64(p, nx, ny, in, out, flags)
  1105. USE PREC
  1106. INTEGER*8 :: p
  1107. INTEGER(4) :: nx, ny, flags
  1108. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1109. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1110. !$omp declare variant( sfftw_plan_dft_r2c_2d_cpu_lp64:sfftw_plan_dft_r2c_2d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1111. !$omp declare variant( sfftw_plan_dft_r2c_2d_cpu_lp64:sfftw_plan_dft_r2c_2d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1112. END SUBROUTINE sfftw_plan_dft_r2c_2d_cpu_lp64
  1113. SUBROUTINE sfftw_plan_dft_r2c_2d_cpu_ilp64(p, nx, ny, in, out, flags)
  1114. USE PREC
  1115. INTEGER*8 :: p
  1116. INTEGER(8) :: nx, ny, flags
  1117. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1118. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1119. !$omp declare variant( sfftw_plan_dft_r2c_2d_cpu_ilp64:sfftw_plan_dft_r2c_2d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1120. !$omp declare variant( sfftw_plan_dft_r2c_2d_cpu_ilp64:sfftw_plan_dft_r2c_2d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1121. END SUBROUTINE sfftw_plan_dft_r2c_2d_cpu_ilp64
  1122. END INTERFACE sfftw_plan_dft_r2c_2d
  1123. INTERFACE sfftw_plan_dft_r2c_3d
  1124. SUBROUTINE sfftw_plan_dft_r2c_3d_cpu_lp64(p, nx, ny, nz, in, out, flags)
  1125. USE PREC
  1126. INTEGER*8 :: p
  1127. INTEGER(4) :: nx, ny, nz, flags
  1128. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1129. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1130. !$omp declare variant( sfftw_plan_dft_r2c_3d_cpu_lp64:sfftw_plan_dft_r2c_3d_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1131. !$omp declare variant( sfftw_plan_dft_r2c_3d_cpu_lp64:sfftw_plan_dft_r2c_3d_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1132. END SUBROUTINE sfftw_plan_dft_r2c_3d_cpu_lp64
  1133. SUBROUTINE sfftw_plan_dft_r2c_3d_cpu_ilp64(p, nx, ny, nz, in, out, flags)
  1134. USE PREC
  1135. INTEGER*8 :: p
  1136. INTEGER(8) :: nx, ny, nz, flags
  1137. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1138. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1139. !$omp declare variant( sfftw_plan_dft_r2c_3d_cpu_ilp64:sfftw_plan_dft_r2c_3d_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1140. !$omp declare variant( sfftw_plan_dft_r2c_3d_cpu_ilp64:sfftw_plan_dft_r2c_3d_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1141. END SUBROUTINE sfftw_plan_dft_r2c_3d_cpu_ilp64
  1142. END INTERFACE sfftw_plan_dft_r2c_3d
  1143. INTERFACE sfftw_plan_guru_dft
  1144. SUBROUTINE sfftw_plan_guru_dft_cpu_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, s, flags)
  1145. USE PREC
  1146. INTEGER*8 :: p
  1147. INTEGER(4) :: rank, howmany_rank, s, flags
  1148. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  1149. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1150. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1151. !$omp declare variant( sfftw_plan_guru_dft_cpu_lp64:sfftw_plan_guru_dft_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1152. !$omp declare variant( sfftw_plan_guru_dft_cpu_lp64:sfftw_plan_guru_dft_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1153. END SUBROUTINE sfftw_plan_guru_dft_cpu_lp64
  1154. SUBROUTINE sfftw_plan_guru_dft_cpu_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, s, flags)
  1155. USE PREC
  1156. INTEGER*8 :: p
  1157. INTEGER(8) :: rank, howmany_rank, s, flags
  1158. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, n, is, os
  1159. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1160. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1161. !$omp declare variant( sfftw_plan_guru_dft_cpu_ilp64:sfftw_plan_guru_dft_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1162. !$omp declare variant( sfftw_plan_guru_dft_cpu_ilp64:sfftw_plan_guru_dft_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1163. END SUBROUTINE sfftw_plan_guru_dft_cpu_ilp64
  1164. END INTERFACE sfftw_plan_guru_dft
  1165. INTERFACE sfftw_plan_guru_dft_c2r
  1166. SUBROUTINE sfftw_plan_guru_dft_c2r_cpu_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags)
  1167. USE PREC
  1168. INTEGER*8 :: p
  1169. INTEGER(4) :: rank, howmany_rank, s, flags
  1170. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  1171. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1172. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1173. !$omp declare variant( sfftw_plan_guru_dft_c2r_cpu_lp64:sfftw_plan_guru_dft_c2r_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1174. !$omp declare variant( sfftw_plan_guru_dft_c2r_cpu_lp64:sfftw_plan_guru_dft_c2r_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1175. END SUBROUTINE sfftw_plan_guru_dft_c2r_cpu_lp64
  1176. SUBROUTINE sfftw_plan_guru_dft_c2r_cpu_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags)
  1177. USE PREC
  1178. INTEGER*8 :: p
  1179. INTEGER(8) :: rank, howmany_rank, flags
  1180. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  1181. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1182. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1183. !$omp declare variant( sfftw_plan_guru_dft_c2r_cpu_ilp64:sfftw_plan_guru_dft_c2r_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1184. !$omp declare variant( sfftw_plan_guru_dft_c2r_cpu_ilp64:sfftw_plan_guru_dft_c2r_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1185. END SUBROUTINE sfftw_plan_guru_dft_c2r_cpu_ilp64
  1186. END INTERFACE sfftw_plan_guru_dft_c2r
  1187. INTERFACE sfftw_plan_guru_dft_r2c
  1188. SUBROUTINE sfftw_plan_guru_dft_r2c_cpu_lp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags)
  1189. USE PREC
  1190. INTEGER*8 :: p
  1191. INTEGER(4) :: rank, howmany_rank, flags
  1192. INTEGER(4), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  1193. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1194. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1195. !$omp declare variant( sfftw_plan_guru_dft_r2c_cpu_lp64:sfftw_plan_guru_dft_r2c_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1196. !$omp declare variant( sfftw_plan_guru_dft_r2c_cpu_lp64:sfftw_plan_guru_dft_r2c_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1197. END SUBROUTINE sfftw_plan_guru_dft_r2c_cpu_lp64
  1198. SUBROUTINE sfftw_plan_guru_dft_r2c_cpu_ilp64(p, rank, n, is, os, howmany_rank, howmany_n, howmany_is, howmany_os, in, out, flags)
  1199. USE PREC
  1200. INTEGER*8 :: p
  1201. INTEGER(8) :: rank, howmany_rank, flags
  1202. INTEGER(8), DIMENSION(*) :: howmany_n, howmany_is, howmany_os, os, is, n
  1203. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1204. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1205. !$omp declare variant( sfftw_plan_guru_dft_r2c_cpu_ilp64:sfftw_plan_guru_dft_r2c_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1206. !$omp declare variant( sfftw_plan_guru_dft_r2c_cpu_ilp64:sfftw_plan_guru_dft_r2c_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1207. END SUBROUTINE sfftw_plan_guru_dft_r2c_cpu_ilp64
  1208. END INTERFACE sfftw_plan_guru_dft_r2c
  1209. INTERFACE sfftw_plan_many_dft
  1210. SUBROUTINE sfftw_plan_many_dft_cpu_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, s, flags)
  1211. USE PREC
  1212. INTEGER*8 :: p
  1213. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, s, flags
  1214. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  1215. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1216. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1217. !$omp declare variant( sfftw_plan_many_dft_cpu_lp64:sfftw_plan_many_dft_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1218. !$omp declare variant( sfftw_plan_many_dft_cpu_lp64:sfftw_plan_many_dft_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1219. END SUBROUTINE sfftw_plan_many_dft_cpu_lp64
  1220. SUBROUTINE sfftw_plan_many_dft_cpu_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, s, flags)
  1221. USE PREC
  1222. INTEGER*8 :: p
  1223. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, s, flags
  1224. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  1225. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1226. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1227. !$omp declare variant( sfftw_plan_many_dft_cpu_ilp64:sfftw_plan_many_dft_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1228. !$omp declare variant( sfftw_plan_many_dft_cpu_ilp64:sfftw_plan_many_dft_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1229. END SUBROUTINE sfftw_plan_many_dft_cpu_ilp64
  1230. END INTERFACE sfftw_plan_many_dft
  1231. INTERFACE sfftw_plan_many_dft_c2r
  1232. SUBROUTINE sfftw_plan_many_dft_c2r_cpu_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags)
  1233. USE PREC
  1234. INTEGER*8 :: p
  1235. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, flags
  1236. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  1237. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1238. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1239. !$omp declare variant( sfftw_plan_many_dft_c2r_cpu_lp64:sfftw_plan_many_dft_c2r_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1240. !$omp declare variant( sfftw_plan_many_dft_c2r_cpu_lp64:sfftw_plan_many_dft_c2r_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1241. END SUBROUTINE sfftw_plan_many_dft_c2r_cpu_lp64
  1242. SUBROUTINE sfftw_plan_many_dft_c2r_cpu_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags)
  1243. USE PREC
  1244. INTEGER*8 :: p
  1245. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, flags
  1246. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  1247. COMPLEX(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1248. REAL(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1249. !$omp declare variant( sfftw_plan_many_dft_c2r_cpu_ilp64:sfftw_plan_many_dft_c2r_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1250. !$omp declare variant( sfftw_plan_many_dft_c2r_cpu_ilp64:sfftw_plan_many_dft_c2r_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1251. END SUBROUTINE sfftw_plan_many_dft_c2r_cpu_ilp64
  1252. END INTERFACE sfftw_plan_many_dft_c2r
  1253. INTERFACE sfftw_plan_many_dft_r2c
  1254. SUBROUTINE sfftw_plan_many_dft_r2c_cpu_lp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags)
  1255. USE PREC
  1256. INTEGER*8 :: p
  1257. INTEGER(4) :: rank, howmany, istride, idist, ostride, odist, flags
  1258. INTEGER(4), DIMENSION(*) :: n, inembed, onembed
  1259. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1260. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1261. !$omp declare variant( sfftw_plan_many_dft_r2c_cpu_lp64:sfftw_plan_many_dft_r2c_omp_offload_lp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1262. !$omp declare variant( sfftw_plan_many_dft_r2c_cpu_lp64:sfftw_plan_many_dft_r2c_omp_offload_lp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1263. END SUBROUTINE sfftw_plan_many_dft_r2c_cpu_lp64
  1264. SUBROUTINE sfftw_plan_many_dft_r2c_cpu_ilp64(p, rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags)
  1265. USE PREC
  1266. INTEGER*8 :: p
  1267. INTEGER(8) :: rank, howmany, istride, idist, ostride, odist, flags
  1268. INTEGER(8), DIMENSION(*) :: n, inembed, onembed
  1269. REAL(FFTW_SPKP), INTENT(IN), DIMENSION(..) :: in
  1270. COMPLEX(FFTW_SPKP), INTENT(OUT), DIMENSION(..) :: out
  1271. !$omp declare variant( sfftw_plan_many_dft_r2c_cpu_ilp64:sfftw_plan_many_dft_r2c_omp_offload_ilp64 ) match( construct={dispatch}, device={arch(gen)} ) append_args( interop(prefer_type("sycl","level_zero"),targetsync) ) adjust_args( need_device_ptr:in,out )
  1272. !$omp declare variant( sfftw_plan_many_dft_r2c_cpu_ilp64:sfftw_plan_many_dft_r2c_omp_offload_ilp64 ) match( construct={target variant dispatch}, device={arch(gen)} )
  1273. END SUBROUTINE sfftw_plan_many_dft_r2c_cpu_ilp64
  1274. END INTERFACE sfftw_plan_many_dft_r2c
  1275. END MODULE FFTW3_OMP_OFFLOAD