1 ! OpenACC Runtime Library Definitions.
3 ! Copyright (C) 2014-2019 Free Software Foundation, Inc.
5 ! Contributed by Tobias Burnus <burnus@net-b.de>
8 ! This file is part of the GNU Offloading and Multi Processing Library
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)
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
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.
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/>.
31 use iso_fortran_env, only: int32
35 public :: acc_device_kind
37 integer, parameter :: acc_device_kind = int32
39 public :: acc_device_none, acc_device_default, acc_device_host
40 public :: acc_device_not_host, acc_device_nvidia
42 ! Keep in sync with include/gomp-constants.h.
43 integer (acc_device_kind), parameter :: acc_device_none = 0
44 integer (acc_device_kind), parameter :: acc_device_default = 1
45 integer (acc_device_kind), parameter :: acc_device_host = 2
46 ! integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3 removed.
47 integer (acc_device_kind), parameter :: acc_device_not_host = 4
48 integer (acc_device_kind), parameter :: acc_device_nvidia = 5
49 integer (acc_device_kind), parameter :: acc_device_gcn = 8
51 public :: acc_handle_kind
53 integer, parameter :: acc_handle_kind = int32
55 public :: acc_async_noval, acc_async_sync
57 ! Keep in sync with include/gomp-constants.h.
58 integer (acc_handle_kind), parameter :: acc_async_noval = -1
59 integer (acc_handle_kind), parameter :: acc_async_sync = -2
63 module openacc_internal
68 function acc_get_num_devices_h (d)
70 integer acc_get_num_devices_h
71 integer (acc_device_kind) d
74 subroutine acc_set_device_type_h (d)
76 integer (acc_device_kind) d
79 function acc_get_device_type_h ()
81 integer (acc_device_kind) acc_get_device_type_h
84 subroutine acc_set_device_num_h (n, d)
87 integer (acc_device_kind) d
90 function acc_get_device_num_h (d)
92 integer acc_get_device_num_h
93 integer (acc_device_kind) d
96 function acc_async_test_h (a)
97 logical acc_async_test_h
101 function acc_async_test_all_h ()
102 logical acc_async_test_all_h
105 subroutine acc_wait_h (a)
109 subroutine acc_wait_async_h (a1, a2)
113 subroutine acc_wait_all_h ()
116 subroutine acc_wait_all_async_h (a)
120 subroutine acc_init_h (d)
122 integer (acc_device_kind) d
125 subroutine acc_shutdown_h (d)
127 integer (acc_device_kind) d
130 function acc_on_device_h (d)
132 integer (acc_device_kind) d
133 logical acc_on_device_h
136 subroutine acc_copyin_32_h (a, len)
137 use iso_c_binding, only: c_int32_t
138 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
139 type (*), dimension (*) :: a
140 integer (c_int32_t) len
143 subroutine acc_copyin_64_h (a, len)
144 use iso_c_binding, only: c_int64_t
145 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
146 type (*), dimension (*) :: a
147 integer (c_int64_t) len
150 subroutine acc_copyin_array_h (a)
151 type (*), dimension (..), contiguous :: a
154 subroutine acc_present_or_copyin_32_h (a, len)
155 use iso_c_binding, only: c_int32_t
156 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
157 type (*), dimension (*) :: a
158 integer (c_int32_t) len
161 subroutine acc_present_or_copyin_64_h (a, len)
162 use iso_c_binding, only: c_int64_t
163 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
164 type (*), dimension (*) :: a
165 integer (c_int64_t) len
168 subroutine acc_present_or_copyin_array_h (a)
169 type (*), dimension (..), contiguous :: a
172 subroutine acc_create_32_h (a, len)
173 use iso_c_binding, only: c_int32_t
174 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
175 type (*), dimension (*) :: a
176 integer (c_int32_t) len
179 subroutine acc_create_64_h (a, len)
180 use iso_c_binding, only: c_int64_t
181 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
182 type (*), dimension (*) :: a
183 integer (c_int64_t) len
186 subroutine acc_create_array_h (a)
187 type (*), dimension (..), contiguous :: a
190 subroutine acc_present_or_create_32_h (a, len)
191 use iso_c_binding, only: c_int32_t
192 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
193 type (*), dimension (*) :: a
194 integer (c_int32_t) len
197 subroutine acc_present_or_create_64_h (a, len)
198 use iso_c_binding, only: c_int64_t
199 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
200 type (*), dimension (*) :: a
201 integer (c_int64_t) len
204 subroutine acc_present_or_create_array_h (a)
205 type (*), dimension (..), contiguous :: a
208 subroutine acc_copyout_32_h (a, len)
209 use iso_c_binding, only: c_int32_t
210 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
211 type (*), dimension (*) :: a
212 integer (c_int32_t) len
215 subroutine acc_copyout_64_h (a, len)
216 use iso_c_binding, only: c_int64_t
217 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
218 type (*), dimension (*) :: a
219 integer (c_int64_t) len
222 subroutine acc_copyout_array_h (a)
223 type (*), dimension (..), contiguous :: a
226 subroutine acc_copyout_finalize_32_h (a, len)
227 use iso_c_binding, only: c_int32_t
228 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
229 type (*), dimension (*) :: a
230 integer (c_int32_t) len
233 subroutine acc_copyout_finalize_64_h (a, len)
234 use iso_c_binding, only: c_int64_t
235 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
236 type (*), dimension (*) :: a
237 integer (c_int64_t) len
240 subroutine acc_copyout_finalize_array_h (a)
241 type (*), dimension (..), contiguous :: a
244 subroutine acc_delete_32_h (a, len)
245 use iso_c_binding, only: c_int32_t
246 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
247 type (*), dimension (*) :: a
248 integer (c_int32_t) len
251 subroutine acc_delete_64_h (a, len)
252 use iso_c_binding, only: c_int64_t
253 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
254 type (*), dimension (*) :: a
255 integer (c_int64_t) len
258 subroutine acc_delete_array_h (a)
259 type (*), dimension (..), contiguous :: a
262 subroutine acc_delete_finalize_32_h (a, len)
263 use iso_c_binding, only: c_int32_t
264 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
265 type (*), dimension (*) :: a
266 integer (c_int32_t) len
269 subroutine acc_delete_finalize_64_h (a, len)
270 use iso_c_binding, only: c_int64_t
271 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
272 type (*), dimension (*) :: a
273 integer (c_int64_t) len
276 subroutine acc_delete_finalize_array_h (a)
277 type (*), dimension (..), contiguous :: a
280 subroutine acc_update_device_32_h (a, len)
281 use iso_c_binding, only: c_int32_t
282 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
283 type (*), dimension (*) :: a
284 integer (c_int32_t) len
287 subroutine acc_update_device_64_h (a, len)
288 use iso_c_binding, only: c_int64_t
289 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
290 type (*), dimension (*) :: a
291 integer (c_int64_t) len
294 subroutine acc_update_device_array_h (a)
295 type (*), dimension (..), contiguous :: a
298 subroutine acc_update_self_32_h (a, len)
299 use iso_c_binding, only: c_int32_t
300 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
301 type (*), dimension (*) :: a
302 integer (c_int32_t) len
305 subroutine acc_update_self_64_h (a, len)
306 use iso_c_binding, only: c_int64_t
307 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
308 type (*), dimension (*) :: a
309 integer (c_int64_t) len
312 subroutine acc_update_self_array_h (a)
313 type (*), dimension (..), contiguous :: a
316 function acc_is_present_32_h (a, len)
317 use iso_c_binding, only: c_int32_t
318 logical acc_is_present_32_h
319 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
320 type (*), dimension (*) :: a
321 integer (c_int32_t) len
324 function acc_is_present_64_h (a, len)
325 use iso_c_binding, only: c_int64_t
326 logical acc_is_present_64_h
327 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
328 type (*), dimension (*) :: a
329 integer (c_int64_t) len
332 function acc_is_present_array_h (a)
333 logical acc_is_present_array_h
334 type (*), dimension (..), contiguous :: a
337 subroutine acc_copyin_async_32_h (a, len, async)
338 use iso_c_binding, only: c_int32_t
339 use openacc_kinds, only: acc_handle_kind
340 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
341 type (*), dimension (*) :: a
342 integer (c_int32_t) len
343 integer (acc_handle_kind) async
346 subroutine acc_copyin_async_64_h (a, len, async)
347 use iso_c_binding, only: c_int64_t
348 use openacc_kinds, only: acc_handle_kind
349 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
350 type (*), dimension (*) :: a
351 integer (c_int64_t) len
352 integer (acc_handle_kind) async
355 subroutine acc_copyin_async_array_h (a, async)
356 use openacc_kinds, only: acc_handle_kind
357 type (*), dimension (..), contiguous :: a
358 integer (acc_handle_kind) async
361 subroutine acc_create_async_32_h (a, len, async)
362 use iso_c_binding, only: c_int32_t
363 use openacc_kinds, only: acc_handle_kind
364 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
365 type (*), dimension (*) :: a
366 integer (c_int32_t) len
367 integer (acc_handle_kind) async
370 subroutine acc_create_async_64_h (a, len, async)
371 use iso_c_binding, only: c_int64_t
372 use openacc_kinds, only: acc_handle_kind
373 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
374 type (*), dimension (*) :: a
375 integer (c_int64_t) len
376 integer (acc_handle_kind) async
379 subroutine acc_create_async_array_h (a, async)
380 use openacc_kinds, only: acc_handle_kind
381 type (*), dimension (..), contiguous :: a
382 integer (acc_handle_kind) async
385 subroutine acc_copyout_async_32_h (a, len, async)
386 use iso_c_binding, only: c_int32_t
387 use openacc_kinds, only: acc_handle_kind
388 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
389 type (*), dimension (*) :: a
390 integer (c_int32_t) len
391 integer (acc_handle_kind) async
394 subroutine acc_copyout_async_64_h (a, len, async)
395 use iso_c_binding, only: c_int64_t
396 use openacc_kinds, only: acc_handle_kind
397 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
398 type (*), dimension (*) :: a
399 integer (c_int64_t) len
400 integer (acc_handle_kind) async
403 subroutine acc_copyout_async_array_h (a, async)
404 use openacc_kinds, only: acc_handle_kind
405 type (*), dimension (..), contiguous :: a
406 integer (acc_handle_kind) async
409 subroutine acc_delete_async_32_h (a, len, async)
410 use iso_c_binding, only: c_int32_t
411 use openacc_kinds, only: acc_handle_kind
412 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
413 type (*), dimension (*) :: a
414 integer (c_int32_t) len
415 integer (acc_handle_kind) async
418 subroutine acc_delete_async_64_h (a, len, async)
419 use iso_c_binding, only: c_int64_t
420 use openacc_kinds, only: acc_handle_kind
421 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
422 type (*), dimension (*) :: a
423 integer (c_int64_t) len
424 integer (acc_handle_kind) async
427 subroutine acc_delete_async_array_h (a, async)
428 use openacc_kinds, only: acc_handle_kind
429 type (*), dimension (..), contiguous :: a
430 integer (acc_handle_kind) async
433 subroutine acc_update_device_async_32_h (a, len, async)
434 use iso_c_binding, only: c_int32_t
435 use openacc_kinds, only: acc_handle_kind
436 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
437 type (*), dimension (*) :: a
438 integer (c_int32_t) len
439 integer (acc_handle_kind) async
442 subroutine acc_update_device_async_64_h (a, len, async)
443 use iso_c_binding, only: c_int64_t
444 use openacc_kinds, only: acc_handle_kind
445 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
446 type (*), dimension (*) :: a
447 integer (c_int64_t) len
448 integer (acc_handle_kind) async
451 subroutine acc_update_device_async_array_h (a, async)
452 use openacc_kinds, only: acc_handle_kind
453 type (*), dimension (..), contiguous :: a
454 integer (acc_handle_kind) async
457 subroutine acc_update_self_async_32_h (a, len, async)
458 use iso_c_binding, only: c_int32_t
459 use openacc_kinds, only: acc_handle_kind
460 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
461 type (*), dimension (*) :: a
462 integer (c_int32_t) len
463 integer (acc_handle_kind) async
466 subroutine acc_update_self_async_64_h (a, len, async)
467 use iso_c_binding, only: c_int64_t
468 use openacc_kinds, only: acc_handle_kind
469 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
470 type (*), dimension (*) :: a
471 integer (c_int64_t) len
472 integer (acc_handle_kind) async
475 subroutine acc_update_self_async_array_h (a, async)
476 use openacc_kinds, only: acc_handle_kind
477 type (*), dimension (..), contiguous :: a
478 integer (acc_handle_kind) async
483 function acc_get_num_devices_l (d) &
484 bind (C, name = "acc_get_num_devices")
485 use iso_c_binding, only: c_int
486 integer (c_int) :: acc_get_num_devices_l
487 integer (c_int), value :: d
490 subroutine acc_set_device_type_l (d) &
491 bind (C, name = "acc_set_device_type")
492 use iso_c_binding, only: c_int
493 integer (c_int), value :: d
496 function acc_get_device_type_l () &
497 bind (C, name = "acc_get_device_type")
498 use iso_c_binding, only: c_int
499 integer (c_int) :: acc_get_device_type_l
502 subroutine acc_set_device_num_l (n, d) &
503 bind (C, name = "acc_set_device_num")
504 use iso_c_binding, only: c_int
505 integer (c_int), value :: n, d
508 function acc_get_device_num_l (d) &
509 bind (C, name = "acc_get_device_num")
510 use iso_c_binding, only: c_int
511 integer (c_int) :: acc_get_device_num_l
512 integer (c_int), value :: d
515 function acc_async_test_l (a) &
516 bind (C, name = "acc_async_test")
517 use iso_c_binding, only: c_int
518 integer (c_int) :: acc_async_test_l
519 integer (c_int), value :: a
522 function acc_async_test_all_l () &
523 bind (C, name = "acc_async_test_all")
524 use iso_c_binding, only: c_int
525 integer (c_int) :: acc_async_test_all_l
528 subroutine acc_wait_l (a) &
529 bind (C, name = "acc_wait")
530 use iso_c_binding, only: c_int
531 integer (c_int), value :: a
534 subroutine acc_wait_async_l (a1, a2) &
535 bind (C, name = "acc_wait_async")
536 use iso_c_binding, only: c_int
537 integer (c_int), value :: a1, a2
540 subroutine acc_wait_all_l () &
541 bind (C, name = "acc_wait_all")
542 use iso_c_binding, only: c_int
545 subroutine acc_wait_all_async_l (a) &
546 bind (C, name = "acc_wait_all_async")
547 use iso_c_binding, only: c_int
548 integer (c_int), value :: a
551 subroutine acc_init_l (d) &
552 bind (C, name = "acc_init")
553 use iso_c_binding, only: c_int
554 integer (c_int), value :: d
557 subroutine acc_shutdown_l (d) &
558 bind (C, name = "acc_shutdown")
559 use iso_c_binding, only: c_int
560 integer (c_int), value :: d
563 function acc_on_device_l (d) &
564 bind (C, name = "acc_on_device")
565 use iso_c_binding, only: c_int
566 integer (c_int) :: acc_on_device_l
567 integer (c_int), value :: d
570 subroutine acc_copyin_l (a, len) &
571 bind (C, name = "acc_copyin")
572 use iso_c_binding, only: c_size_t
573 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
574 type (*), dimension (*) :: a
575 integer (c_size_t), value :: len
578 subroutine acc_present_or_copyin_l (a, len) &
579 bind (C, name = "acc_present_or_copyin")
580 use iso_c_binding, only: c_size_t
581 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
582 type (*), dimension (*) :: a
583 integer (c_size_t), value :: len
586 subroutine acc_create_l (a, len) &
587 bind (C, name = "acc_create")
588 use iso_c_binding, only: c_size_t
589 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
590 type (*), dimension (*) :: a
591 integer (c_size_t), value :: len
594 subroutine acc_present_or_create_l (a, len) &
595 bind (C, name = "acc_present_or_create")
596 use iso_c_binding, only: c_size_t
597 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
598 type (*), dimension (*) :: a
599 integer (c_size_t), value :: len
602 subroutine acc_copyout_l (a, len) &
603 bind (C, name = "acc_copyout")
604 use iso_c_binding, only: c_size_t
605 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
606 type (*), dimension (*) :: a
607 integer (c_size_t), value :: len
610 subroutine acc_copyout_finalize_l (a, len) &
611 bind (C, name = "acc_copyout_finalize")
612 use iso_c_binding, only: c_size_t
613 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
614 type (*), dimension (*) :: a
615 integer (c_size_t), value :: len
618 subroutine acc_delete_l (a, len) &
619 bind (C, name = "acc_delete")
620 use iso_c_binding, only: c_size_t
621 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
622 type (*), dimension (*) :: a
623 integer (c_size_t), value :: len
626 subroutine acc_delete_finalize_l (a, len) &
627 bind (C, name = "acc_delete_finalize")
628 use iso_c_binding, only: c_size_t
629 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
630 type (*), dimension (*) :: a
631 integer (c_size_t), value :: len
634 subroutine acc_update_device_l (a, len) &
635 bind (C, name = "acc_update_device")
636 use iso_c_binding, only: c_size_t
637 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
638 type (*), dimension (*) :: a
639 integer (c_size_t), value :: len
642 subroutine acc_update_self_l (a, len) &
643 bind (C, name = "acc_update_self")
644 use iso_c_binding, only: c_size_t
645 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
646 type (*), dimension (*) :: a
647 integer (c_size_t), value :: len
650 function acc_is_present_l (a, len) &
651 bind (C, name = "acc_is_present")
652 use iso_c_binding, only: c_int32_t, c_size_t
653 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
654 integer (c_int32_t) :: acc_is_present_l
655 type (*), dimension (*) :: a
656 integer (c_size_t), value :: len
659 subroutine acc_copyin_async_l (a, len, async) &
660 bind (C, name = "acc_copyin_async")
661 use iso_c_binding, only: c_size_t, c_int
662 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
663 type (*), dimension (*) :: a
664 integer (c_size_t), value :: len
665 integer (c_int), value :: async
668 subroutine acc_create_async_l (a, len, async) &
669 bind (C, name = "acc_create_async")
670 use iso_c_binding, only: c_size_t, c_int
671 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
672 type (*), dimension (*) :: a
673 integer (c_size_t), value :: len
674 integer (c_int), value :: async
677 subroutine acc_copyout_async_l (a, len, async) &
678 bind (C, name = "acc_copyout_async")
679 use iso_c_binding, only: c_size_t, c_int
680 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
681 type (*), dimension (*) :: a
682 integer (c_size_t), value :: len
683 integer (c_int), value :: async
686 subroutine acc_delete_async_l (a, len, async) &
687 bind (C, name = "acc_delete_async")
688 use iso_c_binding, only: c_size_t, c_int
689 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
690 type (*), dimension (*) :: a
691 integer (c_size_t), value :: len
692 integer (c_int), value :: async
695 subroutine acc_update_device_async_l (a, len, async) &
696 bind (C, name = "acc_update_device_async")
697 use iso_c_binding, only: c_size_t, c_int
698 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
699 type (*), dimension (*) :: a
700 integer (c_size_t), value :: len
701 integer (c_int), value :: async
704 subroutine acc_update_self_async_l (a, len, async) &
705 bind (C, name = "acc_update_self_async")
706 use iso_c_binding, only: c_size_t, c_int
707 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
708 type (*), dimension (*) :: a
709 integer (c_size_t), value :: len
710 integer (c_int), value :: async
720 public :: openacc_version
722 public :: acc_get_num_devices, acc_set_device_type, acc_get_device_type
723 public :: acc_set_device_num, acc_get_device_num, acc_async_test
724 public :: acc_async_test_all
725 public :: acc_wait, acc_async_wait, acc_wait_async
726 public :: acc_wait_all, acc_async_wait_all, acc_wait_all_async
727 public :: acc_init, acc_shutdown, acc_on_device
728 public :: acc_copyin, acc_present_or_copyin, acc_pcopyin, acc_create
729 public :: acc_present_or_create, acc_pcreate, acc_copyout, acc_delete
730 public :: acc_update_device, acc_update_self, acc_is_present
731 public :: acc_copyin_async, acc_create_async, acc_copyout_async
732 public :: acc_delete_async, acc_update_device_async, acc_update_self_async
734 integer, parameter :: openacc_version = 201306
736 interface acc_get_num_devices
737 procedure :: acc_get_num_devices_h
740 interface acc_set_device_type
741 procedure :: acc_set_device_type_h
744 interface acc_get_device_type
745 procedure :: acc_get_device_type_h
748 interface acc_set_device_num
749 procedure :: acc_set_device_num_h
752 interface acc_get_device_num
753 procedure :: acc_get_device_num_h
756 interface acc_async_test
757 procedure :: acc_async_test_h
760 interface acc_async_test_all
761 procedure :: acc_async_test_all_h
765 procedure :: acc_wait_h
768 ! acc_async_wait is an OpenACC 1.0 compatibility name for acc_wait.
769 interface acc_async_wait
770 procedure :: acc_wait_h
773 interface acc_wait_async
774 procedure :: acc_wait_async_h
777 interface acc_wait_all
778 procedure :: acc_wait_all_h
781 ! acc_async_wait_all is an OpenACC 1.0 compatibility name for acc_wait_all.
782 interface acc_async_wait_all
783 procedure :: acc_wait_all_h
786 interface acc_wait_all_async
787 procedure :: acc_wait_all_async_h
791 procedure :: acc_init_h
794 interface acc_shutdown
795 procedure :: acc_shutdown_h
798 interface acc_on_device
799 procedure :: acc_on_device_h
802 ! acc_malloc: Only available in C/C++
803 ! acc_free: Only available in C/C++
805 ! As vendor extension, the following code supports both 32bit and 64bit
806 ! arguments for "size"; the OpenACC standard only permits default-kind
807 ! integers, which are of kind 4 (i.e. 32 bits).
808 ! Additionally, the two-argument version also takes arrays as argument.
809 ! and the one argument version also scalars. Note that the code assumes
810 ! that the arrays are contiguous.
813 procedure :: acc_copyin_32_h
814 procedure :: acc_copyin_64_h
815 procedure :: acc_copyin_array_h
818 interface acc_present_or_copyin
819 procedure :: acc_present_or_copyin_32_h
820 procedure :: acc_present_or_copyin_64_h
821 procedure :: acc_present_or_copyin_array_h
824 interface acc_pcopyin
825 procedure :: acc_present_or_copyin_32_h
826 procedure :: acc_present_or_copyin_64_h
827 procedure :: acc_present_or_copyin_array_h
831 procedure :: acc_create_32_h
832 procedure :: acc_create_64_h
833 procedure :: acc_create_array_h
836 interface acc_present_or_create
837 procedure :: acc_present_or_create_32_h
838 procedure :: acc_present_or_create_64_h
839 procedure :: acc_present_or_create_array_h
842 interface acc_pcreate
843 procedure :: acc_present_or_create_32_h
844 procedure :: acc_present_or_create_64_h
845 procedure :: acc_present_or_create_array_h
848 interface acc_copyout
849 procedure :: acc_copyout_32_h
850 procedure :: acc_copyout_64_h
851 procedure :: acc_copyout_array_h
854 interface acc_copyout_finalize
855 procedure :: acc_copyout_finalize_32_h
856 procedure :: acc_copyout_finalize_64_h
857 procedure :: acc_copyout_finalize_array_h
861 procedure :: acc_delete_32_h
862 procedure :: acc_delete_64_h
863 procedure :: acc_delete_array_h
866 interface acc_delete_finalize
867 procedure :: acc_delete_finalize_32_h
868 procedure :: acc_delete_finalize_64_h
869 procedure :: acc_delete_finalize_array_h
872 interface acc_update_device
873 procedure :: acc_update_device_32_h
874 procedure :: acc_update_device_64_h
875 procedure :: acc_update_device_array_h
878 interface acc_update_self
879 procedure :: acc_update_self_32_h
880 procedure :: acc_update_self_64_h
881 procedure :: acc_update_self_array_h
884 ! acc_map_data: Only available in C/C++
885 ! acc_unmap_data: Only available in C/C++
886 ! acc_deviceptr: Only available in C/C++
887 ! acc_hostptr: Only available in C/C++
889 interface acc_is_present
890 procedure :: acc_is_present_32_h
891 procedure :: acc_is_present_64_h
892 procedure :: acc_is_present_array_h
895 ! acc_memcpy_to_device: Only available in C/C++
896 ! acc_memcpy_from_device: Only available in C/C++
898 interface acc_copyin_async
899 procedure :: acc_copyin_async_32_h
900 procedure :: acc_copyin_async_64_h
901 procedure :: acc_copyin_async_array_h
904 interface acc_create_async
905 procedure :: acc_create_async_32_h
906 procedure :: acc_create_async_64_h
907 procedure :: acc_create_async_array_h
910 interface acc_copyout_async
911 procedure :: acc_copyout_async_32_h
912 procedure :: acc_copyout_async_64_h
913 procedure :: acc_copyout_async_array_h
916 interface acc_delete_async
917 procedure :: acc_delete_async_32_h
918 procedure :: acc_delete_async_64_h
919 procedure :: acc_delete_async_array_h
922 interface acc_update_device_async
923 procedure :: acc_update_device_async_32_h
924 procedure :: acc_update_device_async_64_h
925 procedure :: acc_update_device_async_array_h
928 interface acc_update_self_async
929 procedure :: acc_update_self_async_32_h
930 procedure :: acc_update_self_async_64_h
931 procedure :: acc_update_self_async_array_h
936 function acc_get_num_devices_h (d)
937 use openacc_internal, only: acc_get_num_devices_l
939 integer acc_get_num_devices_h
940 integer (acc_device_kind) d
941 acc_get_num_devices_h = acc_get_num_devices_l (d)
944 subroutine acc_set_device_type_h (d)
945 use openacc_internal, only: acc_set_device_type_l
947 integer (acc_device_kind) d
948 call acc_set_device_type_l (d)
951 function acc_get_device_type_h ()
952 use openacc_internal, only: acc_get_device_type_l
954 integer (acc_device_kind) acc_get_device_type_h
955 acc_get_device_type_h = acc_get_device_type_l ()
958 subroutine acc_set_device_num_h (n, d)
959 use openacc_internal, only: acc_set_device_num_l
962 integer (acc_device_kind) d
963 call acc_set_device_num_l (n, d)
966 function acc_get_device_num_h (d)
967 use openacc_internal, only: acc_get_device_num_l
969 integer acc_get_device_num_h
970 integer (acc_device_kind) d
971 acc_get_device_num_h = acc_get_device_num_l (d)
974 function acc_async_test_h (a)
975 use openacc_internal, only: acc_async_test_l
976 logical acc_async_test_h
978 if (acc_async_test_l (a) .eq. 1) then
979 acc_async_test_h = .TRUE.
981 acc_async_test_h = .FALSE.
985 function acc_async_test_all_h ()
986 use openacc_internal, only: acc_async_test_all_l
987 logical acc_async_test_all_h
988 if (acc_async_test_all_l () .eq. 1) then
989 acc_async_test_all_h = .TRUE.
991 acc_async_test_all_h = .FALSE.
995 subroutine acc_wait_h (a)
996 use openacc_internal, only: acc_wait_l
1001 subroutine acc_wait_async_h (a1, a2)
1002 use openacc_internal, only: acc_wait_async_l
1004 call acc_wait_async_l (a1, a2)
1007 subroutine acc_wait_all_h ()
1008 use openacc_internal, only: acc_wait_all_l
1009 call acc_wait_all_l ()
1012 subroutine acc_wait_all_async_h (a)
1013 use openacc_internal, only: acc_wait_all_async_l
1015 call acc_wait_all_async_l (a)
1018 subroutine acc_init_h (d)
1019 use openacc_internal, only: acc_init_l
1021 integer (acc_device_kind) d
1025 subroutine acc_shutdown_h (d)
1026 use openacc_internal, only: acc_shutdown_l
1028 integer (acc_device_kind) d
1029 call acc_shutdown_l (d)
1032 function acc_on_device_h (d)
1033 use openacc_internal, only: acc_on_device_l
1035 integer (acc_device_kind) d
1036 logical acc_on_device_h
1037 if (acc_on_device_l (d) .eq. 1) then
1038 acc_on_device_h = .TRUE.
1040 acc_on_device_h = .FALSE.
1044 subroutine acc_copyin_32_h (a, len)
1045 use iso_c_binding, only: c_int32_t, c_size_t
1046 use openacc_internal, only: acc_copyin_l
1047 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1048 type (*), dimension (*) :: a
1049 integer (c_int32_t) len
1050 call acc_copyin_l (a, int (len, kind = c_size_t))
1053 subroutine acc_copyin_64_h (a, len)
1054 use iso_c_binding, only: c_int64_t, c_size_t
1055 use openacc_internal, only: acc_copyin_l
1056 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1057 type (*), dimension (*) :: a
1058 integer (c_int64_t) len
1059 call acc_copyin_l (a, int (len, kind = c_size_t))
1062 subroutine acc_copyin_array_h (a)
1063 use openacc_internal, only: acc_copyin_l
1064 type (*), dimension (..), contiguous :: a
1065 call acc_copyin_l (a, sizeof (a))
1068 subroutine acc_present_or_copyin_32_h (a, len)
1069 use iso_c_binding, only: c_int32_t, c_size_t
1070 use openacc_internal, only: acc_present_or_copyin_l
1071 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1072 type (*), dimension (*) :: a
1073 integer (c_int32_t) len
1074 call acc_present_or_copyin_l (a, int (len, kind = c_size_t))
1077 subroutine acc_present_or_copyin_64_h (a, len)
1078 use iso_c_binding, only: c_int64_t, c_size_t
1079 use openacc_internal, only: acc_present_or_copyin_l
1080 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1081 type (*), dimension (*) :: a
1082 integer (c_int64_t) len
1083 call acc_present_or_copyin_l (a, int (len, kind = c_size_t))
1086 subroutine acc_present_or_copyin_array_h (a)
1087 use openacc_internal, only: acc_present_or_copyin_l
1088 type (*), dimension (..), contiguous :: a
1089 call acc_present_or_copyin_l (a, sizeof (a))
1092 subroutine acc_create_32_h (a, len)
1093 use iso_c_binding, only: c_int32_t, c_size_t
1094 use openacc_internal, only: acc_create_l
1095 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1096 type (*), dimension (*) :: a
1097 integer (c_int32_t) len
1098 call acc_create_l (a, int (len, kind = c_size_t))
1101 subroutine acc_create_64_h (a, len)
1102 use iso_c_binding, only: c_int64_t, c_size_t
1103 use openacc_internal, only: acc_create_l
1104 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1105 type (*), dimension (*) :: a
1106 integer (c_int64_t) len
1107 call acc_create_l (a, int (len, kind = c_size_t))
1110 subroutine acc_create_array_h (a)
1111 use openacc_internal, only: acc_create_l
1112 type (*), dimension (..), contiguous :: a
1113 call acc_create_l (a, sizeof (a))
1116 subroutine acc_present_or_create_32_h (a, len)
1117 use iso_c_binding, only: c_int32_t, c_size_t
1118 use openacc_internal, only: acc_present_or_create_l
1119 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1120 type (*), dimension (*) :: a
1121 integer (c_int32_t) len
1122 call acc_present_or_create_l (a, int (len, kind = c_size_t))
1125 subroutine acc_present_or_create_64_h (a, len)
1126 use iso_c_binding, only: c_int64_t, c_size_t
1127 use openacc_internal, only: acc_present_or_create_l
1128 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1129 type (*), dimension (*) :: a
1130 integer (c_int64_t) len
1131 call acc_present_or_create_l (a, int (len, kind = c_size_t))
1134 subroutine acc_present_or_create_array_h (a)
1135 use openacc_internal, only: acc_present_or_create_l
1136 type (*), dimension (..), contiguous :: a
1137 call acc_present_or_create_l (a, sizeof (a))
1140 subroutine acc_copyout_32_h (a, len)
1141 use iso_c_binding, only: c_int32_t, c_size_t
1142 use openacc_internal, only: acc_copyout_l
1143 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1144 type (*), dimension (*) :: a
1145 integer (c_int32_t) len
1146 call acc_copyout_l (a, int (len, kind = c_size_t))
1149 subroutine acc_copyout_64_h (a, len)
1150 use iso_c_binding, only: c_int64_t, c_size_t
1151 use openacc_internal, only: acc_copyout_l
1152 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1153 type (*), dimension (*) :: a
1154 integer (c_int64_t) len
1155 call acc_copyout_l (a, int (len, kind = c_size_t))
1158 subroutine acc_copyout_array_h (a)
1159 use openacc_internal, only: acc_copyout_l
1160 type (*), dimension (..), contiguous :: a
1161 call acc_copyout_l (a, sizeof (a))
1164 subroutine acc_copyout_finalize_32_h (a, len)
1165 use iso_c_binding, only: c_int32_t, c_size_t
1166 use openacc_internal, only: acc_copyout_finalize_l
1167 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1168 type (*), dimension (*) :: a
1169 integer (c_int32_t) len
1170 call acc_copyout_finalize_l (a, int (len, kind = c_size_t))
1173 subroutine acc_copyout_finalize_64_h (a, len)
1174 use iso_c_binding, only: c_int64_t, c_size_t
1175 use openacc_internal, only: acc_copyout_finalize_l
1176 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1177 type (*), dimension (*) :: a
1178 integer (c_int64_t) len
1179 call acc_copyout_finalize_l (a, int (len, kind = c_size_t))
1182 subroutine acc_copyout_finalize_array_h (a)
1183 use openacc_internal, only: acc_copyout_finalize_l
1184 type (*), dimension (..), contiguous :: a
1185 call acc_copyout_finalize_l (a, sizeof (a))
1188 subroutine acc_delete_32_h (a, len)
1189 use iso_c_binding, only: c_int32_t, c_size_t
1190 use openacc_internal, only: acc_delete_l
1191 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1192 type (*), dimension (*) :: a
1193 integer (c_int32_t) len
1194 call acc_delete_l (a, int (len, kind = c_size_t))
1197 subroutine acc_delete_64_h (a, len)
1198 use iso_c_binding, only: c_int64_t, c_size_t
1199 use openacc_internal, only: acc_delete_l
1200 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1201 type (*), dimension (*) :: a
1202 integer (c_int64_t) len
1203 call acc_delete_l (a, int (len, kind = c_size_t))
1206 subroutine acc_delete_array_h (a)
1207 use openacc_internal, only: acc_delete_l
1208 type (*), dimension (..), contiguous :: a
1209 call acc_delete_l (a, sizeof (a))
1212 subroutine acc_delete_finalize_32_h (a, len)
1213 use iso_c_binding, only: c_int32_t, c_size_t
1214 use openacc_internal, only: acc_delete_finalize_l
1215 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1216 type (*), dimension (*) :: a
1217 integer (c_int32_t) len
1218 call acc_delete_finalize_l (a, int (len, kind = c_size_t))
1221 subroutine acc_delete_finalize_64_h (a, len)
1222 use iso_c_binding, only: c_int64_t, c_size_t
1223 use openacc_internal, only: acc_delete_finalize_l
1224 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1225 type (*), dimension (*) :: a
1226 integer (c_int64_t) len
1227 call acc_delete_finalize_l (a, int (len, kind = c_size_t))
1230 subroutine acc_delete_finalize_array_h (a)
1231 use openacc_internal, only: acc_delete_finalize_l
1232 type (*), dimension (..), contiguous :: a
1233 call acc_delete_finalize_l (a, sizeof (a))
1236 subroutine acc_update_device_32_h (a, len)
1237 use iso_c_binding, only: c_int32_t, c_size_t
1238 use openacc_internal, only: acc_update_device_l
1239 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1240 type (*), dimension (*) :: a
1241 integer (c_int32_t) len
1242 call acc_update_device_l (a, int (len, kind = c_size_t))
1245 subroutine acc_update_device_64_h (a, len)
1246 use iso_c_binding, only: c_int64_t, c_size_t
1247 use openacc_internal, only: acc_update_device_l
1248 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1249 type (*), dimension (*) :: a
1250 integer (c_int64_t) len
1251 call acc_update_device_l (a, int (len, kind = c_size_t))
1254 subroutine acc_update_device_array_h (a)
1255 use openacc_internal, only: acc_update_device_l
1256 type (*), dimension (..), contiguous :: a
1257 call acc_update_device_l (a, sizeof (a))
1260 subroutine acc_update_self_32_h (a, len)
1261 use iso_c_binding, only: c_int32_t, c_size_t
1262 use openacc_internal, only: acc_update_self_l
1263 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1264 type (*), dimension (*) :: a
1265 integer (c_int32_t) len
1266 call acc_update_self_l (a, int (len, kind = c_size_t))
1269 subroutine acc_update_self_64_h (a, len)
1270 use iso_c_binding, only: c_int64_t, c_size_t
1271 use openacc_internal, only: acc_update_self_l
1272 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1273 type (*), dimension (*) :: a
1274 integer (c_int64_t) len
1275 call acc_update_self_l (a, int (len, kind = c_size_t))
1278 subroutine acc_update_self_array_h (a)
1279 use openacc_internal, only: acc_update_self_l
1280 type (*), dimension (..), contiguous :: a
1281 call acc_update_self_l (a, sizeof (a))
1284 function acc_is_present_32_h (a, len)
1285 use iso_c_binding, only: c_int32_t, c_size_t
1286 use openacc_internal, only: acc_is_present_l
1287 logical acc_is_present_32_h
1288 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1289 type (*), dimension (*) :: a
1290 integer (c_int32_t) len
1291 if (acc_is_present_l (a, int (len, kind = c_size_t)) .eq. 1) then
1292 acc_is_present_32_h = .TRUE.
1294 acc_is_present_32_h = .FALSE.
1298 function acc_is_present_64_h (a, len)
1299 use iso_c_binding, only: c_int64_t, c_size_t
1300 use openacc_internal, only: acc_is_present_l
1301 logical acc_is_present_64_h
1302 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1303 type (*), dimension (*) :: a
1304 integer (c_int64_t) len
1305 if (acc_is_present_l (a, int (len, kind = c_size_t)) .eq. 1) then
1306 acc_is_present_64_h = .TRUE.
1308 acc_is_present_64_h = .FALSE.
1312 function acc_is_present_array_h (a)
1313 use openacc_internal, only: acc_is_present_l
1314 logical acc_is_present_array_h
1315 type (*), dimension (..), contiguous :: a
1316 acc_is_present_array_h = acc_is_present_l (a, sizeof (a)) == 1
1319 subroutine acc_copyin_async_32_h (a, len, async)
1320 use iso_c_binding, only: c_int32_t, c_size_t, c_int
1321 use openacc_internal, only: acc_copyin_async_l
1322 use openacc_kinds, only: acc_handle_kind
1323 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1324 type (*), dimension (*) :: a
1325 integer (c_int32_t) len
1326 integer (acc_handle_kind) async
1327 call acc_copyin_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1330 subroutine acc_copyin_async_64_h (a, len, async)
1331 use iso_c_binding, only: c_int64_t, c_size_t, c_int
1332 use openacc_internal, only: acc_copyin_async_l
1333 use openacc_kinds, only: acc_handle_kind
1334 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1335 type (*), dimension (*) :: a
1336 integer (c_int64_t) len
1337 integer (acc_handle_kind) async
1338 call acc_copyin_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1341 subroutine acc_copyin_async_array_h (a, async)
1342 use iso_c_binding, only: c_int
1343 use openacc_internal, only: acc_copyin_async_l
1344 use openacc_kinds, only: acc_handle_kind
1345 type (*), dimension (..), contiguous :: a
1346 integer (acc_handle_kind) async
1347 call acc_copyin_async_l (a, sizeof (a), int (async, kind = c_int))
1350 subroutine acc_create_async_32_h (a, len, async)
1351 use iso_c_binding, only: c_int32_t, c_size_t, c_int
1352 use openacc_internal, only: acc_create_async_l
1353 use openacc_kinds, only: acc_handle_kind
1354 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1355 type (*), dimension (*) :: a
1356 integer (c_int32_t) len
1357 integer (acc_handle_kind) async
1358 call acc_create_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1361 subroutine acc_create_async_64_h (a, len, async)
1362 use iso_c_binding, only: c_int64_t, c_size_t, c_int
1363 use openacc_internal, only: acc_create_async_l
1364 use openacc_kinds, only: acc_handle_kind
1365 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1366 type (*), dimension (*) :: a
1367 integer (c_int64_t) len
1368 integer (acc_handle_kind) async
1369 call acc_create_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1372 subroutine acc_create_async_array_h (a, async)
1373 use iso_c_binding, only: c_int
1374 use openacc_internal, only: acc_create_async_l
1375 use openacc_kinds, only: acc_handle_kind
1376 type (*), dimension (..), contiguous :: a
1377 integer (acc_handle_kind) async
1378 call acc_create_async_l (a, sizeof (a), int (async, kind = c_int))
1381 subroutine acc_copyout_async_32_h (a, len, async)
1382 use iso_c_binding, only: c_int32_t, c_size_t, c_int
1383 use openacc_internal, only: acc_copyout_async_l
1384 use openacc_kinds, only: acc_handle_kind
1385 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1386 type (*), dimension (*) :: a
1387 integer (c_int32_t) len
1388 integer (acc_handle_kind) async
1389 call acc_copyout_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1392 subroutine acc_copyout_async_64_h (a, len, async)
1393 use iso_c_binding, only: c_int64_t, c_size_t, c_int
1394 use openacc_internal, only: acc_copyout_async_l
1395 use openacc_kinds, only: acc_handle_kind
1396 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1397 type (*), dimension (*) :: a
1398 integer (c_int64_t) len
1399 integer (acc_handle_kind) async
1400 call acc_copyout_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1403 subroutine acc_copyout_async_array_h (a, async)
1404 use iso_c_binding, only: c_int
1405 use openacc_internal, only: acc_copyout_async_l
1406 use openacc_kinds, only: acc_handle_kind
1407 type (*), dimension (..), contiguous :: a
1408 integer (acc_handle_kind) async
1409 call acc_copyout_async_l (a, sizeof (a), int (async, kind = c_int))
1412 subroutine acc_delete_async_32_h (a, len, async)
1413 use iso_c_binding, only: c_int32_t, c_size_t, c_int
1414 use openacc_internal, only: acc_delete_async_l
1415 use openacc_kinds, only: acc_handle_kind
1416 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1417 type (*), dimension (*) :: a
1418 integer (c_int32_t) len
1419 integer (acc_handle_kind) async
1420 call acc_delete_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1423 subroutine acc_delete_async_64_h (a, len, async)
1424 use iso_c_binding, only: c_int64_t, c_size_t, c_int
1425 use openacc_internal, only: acc_delete_async_l
1426 use openacc_kinds, only: acc_handle_kind
1427 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1428 type (*), dimension (*) :: a
1429 integer (c_int64_t) len
1430 integer (acc_handle_kind) async
1431 call acc_delete_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1434 subroutine acc_delete_async_array_h (a, async)
1435 use iso_c_binding, only: c_int
1436 use openacc_internal, only: acc_delete_async_l
1437 use openacc_kinds, only: acc_handle_kind
1438 type (*), dimension (..), contiguous :: a
1439 integer (acc_handle_kind) async
1440 call acc_delete_async_l (a, sizeof (a), int (async, kind = c_int))
1443 subroutine acc_update_device_async_32_h (a, len, async)
1444 use iso_c_binding, only: c_int32_t, c_size_t, c_int
1445 use openacc_internal, only: acc_update_device_async_l
1446 use openacc_kinds, only: acc_handle_kind
1447 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1448 type (*), dimension (*) :: a
1449 integer (c_int32_t) len
1450 integer (acc_handle_kind) async
1451 call acc_update_device_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1454 subroutine acc_update_device_async_64_h (a, len, async)
1455 use iso_c_binding, only: c_int64_t, c_size_t, c_int
1456 use openacc_internal, only: acc_update_device_async_l
1457 use openacc_kinds, only: acc_handle_kind
1458 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1459 type (*), dimension (*) :: a
1460 integer (c_int64_t) len
1461 integer (acc_handle_kind) async
1462 call acc_update_device_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1465 subroutine acc_update_device_async_array_h (a, async)
1466 use iso_c_binding, only: c_int
1467 use openacc_internal, only: acc_update_device_async_l
1468 use openacc_kinds, only: acc_handle_kind
1469 type (*), dimension (..), contiguous :: a
1470 integer (acc_handle_kind) async
1471 call acc_update_device_async_l (a, sizeof (a), int (async, kind = c_int))
1474 subroutine acc_update_self_async_32_h (a, len, async)
1475 use iso_c_binding, only: c_int32_t, c_size_t, c_int
1476 use openacc_internal, only: acc_update_self_async_l
1477 use openacc_kinds, only: acc_handle_kind
1478 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1479 type (*), dimension (*) :: a
1480 integer (c_int32_t) len
1481 integer (acc_handle_kind) async
1482 call acc_update_self_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1485 subroutine acc_update_self_async_64_h (a, len, async)
1486 use iso_c_binding, only: c_int64_t, c_size_t, c_int
1487 use openacc_internal, only: acc_update_self_async_l
1488 use openacc_kinds, only: acc_handle_kind
1489 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1490 type (*), dimension (*) :: a
1491 integer (c_int64_t) len
1492 integer (acc_handle_kind) async
1493 call acc_update_self_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1496 subroutine acc_update_self_async_array_h (a, async)
1497 use iso_c_binding, only: c_int
1498 use openacc_internal, only: acc_update_self_async_l
1499 use openacc_kinds, only: acc_handle_kind
1500 type (*), dimension (..), contiguous :: a
1501 integer (acc_handle_kind) async
1502 call acc_update_self_async_l (a, sizeof (a), int (async, kind = c_int))