]>
Commit | Line | Data |
---|---|---|
41dbbb37 TS |
1 | ! OpenACC Runtime Library Definitions. -*- mode: fortran -*- |
2 | ||
a945c346 | 3 | ! Copyright (C) 2014-2024 Free Software Foundation, Inc. |
41dbbb37 TS |
4 | |
5 | ! Contributed by Tobias Burnus <burnus@net-b.de> | |
6 | ! and Mentor Embedded. | |
7 | ||
8 | ! This file is part of the GNU Offloading and Multi Processing Library | |
9 | ! (libgomp). | |
10 | ||
11 | ! Libgomp is free software; you can redistribute it and/or modify it | |
12 | ! under the terms of the GNU General Public License as published by | |
13 | ! the Free Software Foundation; either version 3, or (at your option) | |
14 | ! any later version. | |
15 | ||
16 | ! Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY | |
17 | ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
18 | ! FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
19 | ! more details. | |
20 | ||
21 | ! Under Section 7 of GPL version 3, you are granted additional | |
22 | ! permissions described in the GCC Runtime Library Exception, version | |
23 | ! 3.1, as published by the Free Software Foundation. | |
24 | ||
25 | ! You should have received a copy of the GNU General Public License and | |
26 | ! a copy of the GCC Runtime Library Exception along with this program; | |
27 | ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
28 | ! <http://www.gnu.org/licenses/>. | |
29 | ||
30 | ! NOTE: Due to the use of dimension (..), the code only works when compiled | |
31 | ! with -std=f2008ts/gnu/legacy but not with other standard settings. | |
32 | ! Alternatively, the user can use the module version, which permits | |
33 | ! compilation with -std=f95. | |
34 | ||
0b8499a4 TB |
35 | ! Keep in sync with openacc.f90 and config/accel/openacc.f90. |
36 | ||
41dbbb37 TS |
37 | integer, parameter :: acc_device_kind = 4 |
38 | ||
39 | ! Keep in sync with include/gomp-constants.h. | |
a5d0bc12 | 40 | integer (acc_device_kind), parameter :: acc_device_current = -1 |
41dbbb37 TS |
41 | integer (acc_device_kind), parameter :: acc_device_none = 0 |
42 | integer (acc_device_kind), parameter :: acc_device_default = 1 | |
43 | integer (acc_device_kind), parameter :: acc_device_host = 2 | |
b97e78b7 TS |
44 | ! integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3 |
45 | ! removed. | |
41dbbb37 TS |
46 | integer (acc_device_kind), parameter :: acc_device_not_host = 4 |
47 | integer (acc_device_kind), parameter :: acc_device_nvidia = 5 | |
6687d13a | 48 | integer (acc_device_kind), parameter :: acc_device_radeon = 8 |
41dbbb37 | 49 | |
8d1a1cb1 TB |
50 | integer, parameter :: acc_device_property_kind = 4 |
51 | ! OpenACC 2.6/2.7/3.0 used acc_device_property; in a spec update the | |
52 | ! missing '_kind' was added for consistency. For backward compatibility, keep: | |
53 | integer, parameter :: acc_device_property & | |
54 | & = acc_device_property_kind | |
55 | ||
56 | integer (acc_device_property_kind), parameter :: & | |
57 | & acc_property_memory = 1 | |
58 | integer (acc_device_property_kind), parameter :: & | |
59 | & acc_property_free_memory = 2 | |
60 | integer (acc_device_property_kind), parameter :: & | |
61 | & acc_property_name = int(Z'10001') | |
62 | integer (acc_device_property_kind), parameter :: & | |
63 | & acc_property_vendor = int(Z'10002') | |
64 | integer (acc_device_property_kind), parameter :: & | |
65 | & acc_property_driver = int(Z'10003') | |
66 | ||
41dbbb37 TS |
67 | integer, parameter :: acc_handle_kind = 4 |
68 | ||
69 | ! Keep in sync with include/gomp-constants.h. | |
70 | integer (acc_handle_kind), parameter :: acc_async_noval = -1 | |
71 | integer (acc_handle_kind), parameter :: acc_async_sync = -2 | |
72 | ||
e464fc90 | 73 | integer, parameter :: openacc_version = 201711 |
41dbbb37 TS |
74 | |
75 | interface acc_get_num_devices | |
8d1a1cb1 | 76 | function acc_get_num_devices_h (devicetype) |
41dbbb37 TS |
77 | import acc_device_kind |
78 | integer acc_get_num_devices_h | |
8d1a1cb1 | 79 | integer (acc_device_kind) devicetype |
41dbbb37 TS |
80 | end function |
81 | end interface | |
82 | ||
83 | interface acc_set_device_type | |
8d1a1cb1 | 84 | subroutine acc_set_device_type_h (devicetype) |
41dbbb37 | 85 | import acc_device_kind |
8d1a1cb1 | 86 | integer (acc_device_kind) devicetype |
41dbbb37 TS |
87 | end subroutine |
88 | end interface | |
89 | ||
90 | interface acc_get_device_type | |
91 | function acc_get_device_type_h () | |
92 | import acc_device_kind | |
93 | integer (acc_device_kind) acc_get_device_type_h | |
94 | end function | |
95 | end interface | |
96 | ||
97 | interface acc_set_device_num | |
8d1a1cb1 | 98 | subroutine acc_set_device_num_h (devicenum, devicetype) |
41dbbb37 | 99 | import acc_device_kind |
8d1a1cb1 TB |
100 | integer devicenum |
101 | integer (acc_device_kind) devicetype | |
41dbbb37 TS |
102 | end subroutine |
103 | end interface | |
104 | ||
105 | interface acc_get_device_num | |
8d1a1cb1 | 106 | function acc_get_device_num_h (devicetype) |
41dbbb37 TS |
107 | import acc_device_kind |
108 | integer acc_get_device_num_h | |
8d1a1cb1 | 109 | integer (acc_device_kind) devicetype |
41dbbb37 TS |
110 | end function |
111 | end interface | |
112 | ||
8d1a1cb1 TB |
113 | interface acc_get_property |
114 | function acc_get_property_h (devicenum, devicetype, & | |
115 | & property) | |
116 | use iso_c_binding, only: c_size_t | |
117 | import acc_device_kind, acc_device_property_kind | |
118 | implicit none (type, external) | |
119 | integer (c_size_t) :: acc_get_property_h | |
120 | integer, value :: devicenum | |
121 | integer (acc_device_kind), value :: devicetype | |
122 | integer (acc_device_property_kind), value :: property | |
123 | end function | |
124 | end interface | |
125 | ||
126 | interface acc_get_property_string | |
127 | subroutine acc_get_property_string_h (devicenum, devicetype, & | |
128 | & property, string) | |
129 | import acc_device_kind, acc_device_property_kind | |
130 | implicit none (type, external) | |
131 | integer, value :: devicenum | |
132 | integer (acc_device_kind), value :: devicetype | |
133 | integer (acc_device_property_kind), value :: property | |
134 | character (*) :: string | |
135 | end subroutine | |
136 | end interface | |
137 | ||
41dbbb37 | 138 | interface acc_async_test |
8d1a1cb1 | 139 | function acc_async_test_h (arg) |
41dbbb37 | 140 | logical acc_async_test_h |
8d1a1cb1 | 141 | integer arg |
41dbbb37 TS |
142 | end function |
143 | end interface | |
144 | ||
145 | interface acc_async_test_all | |
146 | function acc_async_test_all_h () | |
147 | logical acc_async_test_all_h | |
148 | end function | |
149 | end interface | |
150 | ||
151 | interface acc_wait | |
8d1a1cb1 TB |
152 | subroutine acc_wait_h (arg) |
153 | integer arg | |
41dbbb37 TS |
154 | end subroutine |
155 | end interface | |
156 | ||
7ce64403 TS |
157 | ! acc_async_wait is an OpenACC 1.0 compatibility name for acc_wait. |
158 | interface acc_async_wait | |
159 | procedure :: acc_wait_h | |
160 | end interface | |
161 | ||
41dbbb37 | 162 | interface acc_wait_async |
8d1a1cb1 TB |
163 | subroutine acc_wait_async_h (arg, async) |
164 | integer arg, async | |
41dbbb37 TS |
165 | end subroutine |
166 | end interface | |
167 | ||
168 | interface acc_wait_all | |
169 | subroutine acc_wait_all_h () | |
170 | end subroutine | |
171 | end interface | |
172 | ||
7ce64403 TS |
173 | ! acc_async_wait_all is an OpenACC 1.0 compatibility name for |
174 | ! acc_wait_all. | |
175 | interface acc_async_wait_all | |
176 | procedure :: acc_wait_all_h | |
177 | end interface | |
178 | ||
41dbbb37 | 179 | interface acc_wait_all_async |
8d1a1cb1 TB |
180 | subroutine acc_wait_all_async_h (async) |
181 | integer async | |
41dbbb37 TS |
182 | end subroutine |
183 | end interface | |
184 | ||
185 | interface acc_init | |
186 | subroutine acc_init_h (devicetype) | |
187 | import acc_device_kind | |
188 | integer (acc_device_kind) devicetype | |
189 | end subroutine | |
190 | end interface | |
191 | ||
192 | interface acc_shutdown | |
193 | subroutine acc_shutdown_h (devicetype) | |
194 | import acc_device_kind | |
195 | integer (acc_device_kind) devicetype | |
196 | end subroutine | |
197 | end interface | |
198 | ||
199 | interface acc_on_device | |
200 | function acc_on_device_h (devicetype) | |
201 | import acc_device_kind | |
202 | logical acc_on_device_h | |
203 | integer (acc_device_kind) devicetype | |
204 | end function | |
205 | end interface | |
206 | ||
207 | ! acc_malloc: Only available in C/C++ | |
208 | ! acc_free: Only available in C/C++ | |
209 | ||
210 | interface acc_copyin | |
211 | subroutine acc_copyin_32_h (a, len) | |
212 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 213 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
214 | type (*), dimension (*) :: a |
215 | integer (c_int32_t) len | |
216 | end subroutine | |
217 | ||
218 | subroutine acc_copyin_64_h (a, len) | |
219 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 220 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
221 | type (*), dimension (*) :: a |
222 | integer (c_int64_t) len | |
223 | end subroutine | |
224 | ||
225 | subroutine acc_copyin_array_h (a) | |
226 | type (*), dimension (..), contiguous :: a | |
227 | end subroutine | |
228 | end interface | |
229 | ||
230 | interface acc_present_or_copyin | |
231 | subroutine acc_present_or_copyin_32_h (a, len) | |
232 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 233 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
234 | type (*), dimension (*) :: a |
235 | integer (c_int32_t) len | |
236 | end subroutine | |
237 | ||
238 | subroutine acc_present_or_copyin_64_h (a, len) | |
239 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 240 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
241 | type (*), dimension (*) :: a |
242 | integer (c_int64_t) len | |
243 | end subroutine | |
244 | ||
245 | subroutine acc_present_or_copyin_array_h (a) | |
246 | type (*), dimension (..), contiguous :: a | |
247 | end subroutine | |
248 | end interface | |
249 | ||
250 | interface acc_pcopyin | |
318686c2 TS |
251 | procedure :: acc_present_or_copyin_32_h |
252 | procedure :: acc_present_or_copyin_64_h | |
253 | procedure :: acc_present_or_copyin_array_h | |
41dbbb37 TS |
254 | end interface |
255 | ||
256 | interface acc_create | |
257 | subroutine acc_create_32_h (a, len) | |
258 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 259 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
260 | type (*), dimension (*) :: a |
261 | integer (c_int32_t) len | |
262 | end subroutine | |
263 | ||
264 | subroutine acc_create_64_h (a, len) | |
265 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 266 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
267 | type (*), dimension (*) :: a |
268 | integer (c_int64_t) len | |
269 | end subroutine | |
270 | ||
271 | subroutine acc_create_array_h (a) | |
272 | type (*), dimension (..), contiguous :: a | |
273 | end subroutine | |
274 | end interface | |
275 | ||
276 | interface acc_present_or_create | |
277 | subroutine acc_present_or_create_32_h (a, len) | |
278 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 279 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
280 | type (*), dimension (*) :: a |
281 | integer (c_int32_t) len | |
282 | end subroutine | |
283 | ||
284 | subroutine acc_present_or_create_64_h (a, len) | |
285 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 286 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
287 | type (*), dimension (*) :: a |
288 | integer (c_int64_t) len | |
289 | end subroutine | |
290 | ||
291 | subroutine acc_present_or_create_array_h (a) | |
292 | type (*), dimension (..), contiguous :: a | |
293 | end subroutine | |
294 | end interface | |
295 | ||
296 | interface acc_pcreate | |
318686c2 TS |
297 | procedure :: acc_present_or_create_32_h |
298 | procedure :: acc_present_or_create_64_h | |
299 | procedure :: acc_present_or_create_array_h | |
41dbbb37 TS |
300 | end interface |
301 | ||
302 | interface acc_copyout | |
303 | subroutine acc_copyout_32_h (a, len) | |
304 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 305 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
306 | type (*), dimension (*) :: a |
307 | integer (c_int32_t) len | |
308 | end subroutine | |
309 | ||
310 | subroutine acc_copyout_64_h (a, len) | |
311 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 312 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
313 | type (*), dimension (*) :: a |
314 | integer (c_int64_t) len | |
315 | end subroutine | |
316 | ||
317 | subroutine acc_copyout_array_h (a) | |
318 | type (*), dimension (..), contiguous :: a | |
319 | end subroutine | |
320 | end interface | |
321 | ||
829c6349 CLT |
322 | interface acc_copyout_finalize |
323 | subroutine acc_copyout_finalize_32_h (a, len) | |
324 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 325 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
829c6349 CLT |
326 | type (*), dimension (*) :: a |
327 | integer (c_int32_t) len | |
328 | end subroutine | |
329 | ||
330 | subroutine acc_copyout_finalize_64_h (a, len) | |
331 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 332 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
829c6349 CLT |
333 | type (*), dimension (*) :: a |
334 | integer (c_int64_t) len | |
335 | end subroutine | |
336 | ||
337 | subroutine acc_copyout_finalize_array_h (a) | |
338 | type (*), dimension (..), contiguous :: a | |
339 | end subroutine | |
340 | end interface | |
341 | ||
41dbbb37 TS |
342 | interface acc_delete |
343 | subroutine acc_delete_32_h (a, len) | |
344 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 345 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
346 | type (*), dimension (*) :: a |
347 | integer (c_int32_t) len | |
348 | end subroutine | |
349 | ||
350 | subroutine acc_delete_64_h (a, len) | |
351 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 352 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
353 | type (*), dimension (*) :: a |
354 | integer (c_int64_t) len | |
355 | end subroutine | |
356 | ||
357 | subroutine acc_delete_array_h (a) | |
358 | type (*), dimension (..), contiguous :: a | |
359 | end subroutine | |
360 | end interface | |
361 | ||
829c6349 CLT |
362 | interface acc_delete_finalize |
363 | subroutine acc_delete_finalize_32_h (a, len) | |
364 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 365 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
829c6349 CLT |
366 | type (*), dimension (*) :: a |
367 | integer (c_int32_t) len | |
368 | end subroutine | |
369 | ||
370 | subroutine acc_delete_finalize_64_h (a, len) | |
371 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 372 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
829c6349 CLT |
373 | type (*), dimension (*) :: a |
374 | integer (c_int64_t) len | |
375 | end subroutine | |
376 | ||
377 | subroutine acc_delete_finalize_array_h (a) | |
378 | type (*), dimension (..), contiguous :: a | |
379 | end subroutine | |
380 | end interface | |
381 | ||
41dbbb37 TS |
382 | interface acc_update_device |
383 | subroutine acc_update_device_32_h (a, len) | |
384 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 385 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
386 | type (*), dimension (*) :: a |
387 | integer (c_int32_t) len | |
388 | end subroutine | |
389 | ||
390 | subroutine acc_update_device_64_h (a, len) | |
391 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 392 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
393 | type (*), dimension (*) :: a |
394 | integer (c_int64_t) len | |
395 | end subroutine | |
396 | ||
397 | subroutine acc_update_device_array_h (a) | |
398 | type (*), dimension (..), contiguous :: a | |
399 | end subroutine | |
400 | end interface | |
401 | ||
402 | interface acc_update_self | |
403 | subroutine acc_update_self_32_h (a, len) | |
404 | use iso_c_binding, only: c_int32_t | |
8d1a1cb1 | 405 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
406 | type (*), dimension (*) :: a |
407 | integer (c_int32_t) len | |
408 | end subroutine | |
409 | ||
410 | subroutine acc_update_self_64_h (a, len) | |
411 | use iso_c_binding, only: c_int64_t | |
8d1a1cb1 | 412 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
413 | type (*), dimension (*) :: a |
414 | integer (c_int64_t) len | |
415 | end subroutine | |
416 | ||
417 | subroutine acc_update_self_array_h (a) | |
418 | type (*), dimension (..), contiguous :: a | |
419 | end subroutine | |
420 | end interface | |
421 | ||
422 | ! acc_map_data: Only available in C/C++ | |
423 | ! acc_unmap_data: Only available in C/C++ | |
424 | ! acc_deviceptr: Only available in C/C++ | |
318686c2 | 425 | ! acc_hostptr: Only available in C/C++ |
41dbbb37 TS |
426 | |
427 | interface acc_is_present | |
428 | function acc_is_present_32_h (a, len) | |
429 | use iso_c_binding, only: c_int32_t | |
430 | logical acc_is_present_32_h | |
8d1a1cb1 | 431 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
432 | type (*), dimension (*) :: a |
433 | integer (c_int32_t) len | |
434 | end function | |
435 | ||
436 | function acc_is_present_64_h (a, len) | |
437 | use iso_c_binding, only: c_int64_t | |
438 | logical acc_is_present_64_h | |
8d1a1cb1 | 439 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
41dbbb37 TS |
440 | type (*), dimension (*) :: a |
441 | integer (c_int64_t) len | |
442 | end function | |
443 | ||
444 | function acc_is_present_array_h (a) | |
445 | logical acc_is_present_array_h | |
446 | type (*), dimension (..), contiguous :: a | |
447 | end function | |
448 | end interface | |
449 | ||
450 | ! acc_memcpy_to_device: Only available in C/C++ | |
451 | ! acc_memcpy_from_device: Only available in C/C++ | |
58168bbf CLT |
452 | |
453 | interface acc_copyin_async | |
454 | subroutine acc_copyin_async_32_h (a, len, async) | |
455 | use iso_c_binding, only: c_int32_t | |
456 | import acc_handle_kind | |
8d1a1cb1 | 457 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
458 | type (*), dimension (*) :: a |
459 | integer (c_int32_t) len | |
460 | integer (acc_handle_kind) async | |
461 | end subroutine | |
462 | ||
463 | subroutine acc_copyin_async_64_h (a, len, async) | |
464 | use iso_c_binding, only: c_int64_t | |
465 | import acc_handle_kind | |
8d1a1cb1 | 466 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
467 | type (*), dimension (*) :: a |
468 | integer (c_int64_t) len | |
469 | integer (acc_handle_kind) async | |
470 | end subroutine | |
471 | ||
472 | subroutine acc_copyin_async_array_h (a, async_) | |
473 | import acc_handle_kind | |
474 | type (*), dimension (..), contiguous :: a | |
475 | integer (acc_handle_kind) async_ | |
476 | end subroutine | |
477 | end interface | |
478 | ||
479 | interface acc_create_async | |
480 | subroutine acc_create_async_32_h (a, len, async) | |
481 | use iso_c_binding, only: c_int32_t | |
482 | import acc_handle_kind | |
8d1a1cb1 | 483 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
484 | type (*), dimension (*) :: a |
485 | integer (c_int32_t) len | |
486 | integer (acc_handle_kind) async | |
487 | end subroutine | |
488 | ||
489 | subroutine acc_create_async_64_h (a, len, async) | |
490 | use iso_c_binding, only: c_int64_t | |
491 | import acc_handle_kind | |
8d1a1cb1 | 492 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
493 | type (*), dimension (*) :: a |
494 | integer (c_int64_t) len | |
495 | integer (acc_handle_kind) async | |
496 | end subroutine | |
497 | ||
498 | subroutine acc_create_async_array_h (a, async_) | |
499 | import acc_handle_kind | |
500 | type (*), dimension (..), contiguous :: a | |
501 | integer (acc_handle_kind) async_ | |
502 | end subroutine | |
503 | end interface | |
504 | ||
505 | interface acc_copyout_async | |
506 | subroutine acc_copyout_async_32_h (a, len, async) | |
507 | use iso_c_binding, only: c_int32_t | |
508 | import acc_handle_kind | |
8d1a1cb1 | 509 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
510 | type (*), dimension (*) :: a |
511 | integer (c_int32_t) len | |
512 | integer (acc_handle_kind) async | |
513 | end subroutine | |
514 | ||
515 | subroutine acc_copyout_async_64_h (a, len, async) | |
516 | use iso_c_binding, only: c_int64_t | |
517 | import acc_handle_kind | |
8d1a1cb1 | 518 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
519 | type (*), dimension (*) :: a |
520 | integer (c_int64_t) len | |
521 | integer (acc_handle_kind) async | |
522 | end subroutine | |
523 | ||
524 | subroutine acc_copyout_async_array_h (a, async_) | |
525 | import acc_handle_kind | |
526 | type (*), dimension (..), contiguous :: a | |
527 | integer (acc_handle_kind) async_ | |
528 | end subroutine | |
529 | end interface | |
530 | ||
531 | interface acc_delete_async | |
532 | subroutine acc_delete_async_32_h (a, len, async) | |
533 | use iso_c_binding, only: c_int32_t | |
534 | import acc_handle_kind | |
8d1a1cb1 | 535 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
536 | type (*), dimension (*) :: a |
537 | integer (c_int32_t) len | |
538 | integer (acc_handle_kind) async | |
539 | end subroutine | |
540 | ||
541 | subroutine acc_delete_async_64_h (a, len, async) | |
542 | use iso_c_binding, only: c_int64_t | |
543 | import acc_handle_kind | |
8d1a1cb1 | 544 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
545 | type (*), dimension (*) :: a |
546 | integer (c_int64_t) len | |
547 | integer (acc_handle_kind) async | |
548 | end subroutine | |
549 | ||
550 | subroutine acc_delete_async_array_h (a, async_) | |
551 | import acc_handle_kind | |
552 | type (*), dimension (..), contiguous :: a | |
553 | integer (acc_handle_kind) async_ | |
554 | end subroutine | |
555 | end interface | |
556 | ||
557 | interface acc_update_device_async | |
558 | subroutine acc_update_device_async_32_h (a, len, async) | |
559 | use iso_c_binding, only: c_int32_t | |
560 | import acc_handle_kind | |
8d1a1cb1 | 561 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
562 | type (*), dimension (*) :: a |
563 | integer (c_int32_t) len | |
564 | integer (acc_handle_kind) async | |
565 | end subroutine | |
566 | ||
567 | subroutine acc_update_device_async_64_h (a, len, async) | |
568 | use iso_c_binding, only: c_int64_t | |
569 | import acc_handle_kind | |
8d1a1cb1 | 570 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
571 | type (*), dimension (*) :: a |
572 | integer (c_int64_t) len | |
573 | integer (acc_handle_kind) async | |
574 | end subroutine | |
575 | ||
576 | subroutine acc_update_device_async_array_h (a, async_) | |
577 | import acc_handle_kind | |
578 | type (*), dimension (..), contiguous :: a | |
579 | integer (acc_handle_kind) async_ | |
580 | end subroutine | |
581 | end interface | |
582 | ||
583 | interface acc_update_self_async | |
584 | subroutine acc_update_self_async_32_h (a, len, async) | |
585 | use iso_c_binding, only: c_int32_t | |
586 | import acc_handle_kind | |
8d1a1cb1 | 587 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
588 | type (*), dimension (*) :: a |
589 | integer (c_int32_t) len | |
590 | integer (acc_handle_kind) async | |
591 | end subroutine | |
592 | ||
593 | subroutine acc_update_self_async_64_h (a, len, async) | |
594 | use iso_c_binding, only: c_int64_t | |
595 | import acc_handle_kind | |
8d1a1cb1 | 596 | !GCC$ ATTRIBUTES NO_ARG_CHECK :: a |
58168bbf CLT |
597 | type (*), dimension (*) :: a |
598 | integer (c_int64_t) len | |
599 | integer (acc_handle_kind) async | |
600 | end subroutine | |
601 | ||
602 | subroutine acc_update_self_async_array_h (a, async_) | |
603 | import acc_handle_kind | |
604 | type (*), dimension (..), contiguous :: a | |
605 | integer (acc_handle_kind) async_ | |
606 | end subroutine | |
607 | end interface |