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
50 public
:: acc_handle_kind
52 integer, parameter :: acc_handle_kind
= int32
54 public
:: acc_async_noval
, acc_async_sync
56 ! Keep in sync with include/gomp-constants.h.
57 integer (acc_handle_kind
), parameter :: acc_async_noval
= -1
58 integer (acc_handle_kind
), parameter :: acc_async_sync
= -2
62 module openacc_internal
67 function acc_get_num_devices_h (d
)
69 integer acc_get_num_devices_h
70 integer (acc_device_kind
) d
73 subroutine acc_set_device_type_h (d
)
75 integer (acc_device_kind
) d
78 function acc_get_device_type_h ()
80 integer (acc_device_kind
) acc_get_device_type_h
83 subroutine acc_set_device_num_h (n
, d
)
86 integer (acc_device_kind
) d
89 function acc_get_device_num_h (d
)
91 integer acc_get_device_num_h
92 integer (acc_device_kind
) d
95 function acc_async_test_h (a
)
96 logical acc_async_test_h
100 function acc_async_test_all_h ()
101 logical acc_async_test_all_h
104 subroutine acc_wait_h (a
)
108 subroutine acc_wait_async_h (a1
, a2
)
112 subroutine acc_wait_all_h ()
115 subroutine acc_wait_all_async_h (a
)
119 subroutine acc_init_h (d
)
121 integer (acc_device_kind
) d
124 subroutine acc_shutdown_h (d
)
126 integer (acc_device_kind
) d
129 function acc_on_device_h (d
)
131 integer (acc_device_kind
) d
132 logical acc_on_device_h
135 subroutine acc_copyin_32_h (a
, len
)
136 use iso_c_binding
, only
: c_int32_t
137 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
138 type (*), dimension (*) :: a
139 integer (c_int32_t
) len
142 subroutine acc_copyin_64_h (a
, len
)
143 use iso_c_binding
, only
: c_int64_t
144 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
145 type (*), dimension (*) :: a
146 integer (c_int64_t
) len
149 subroutine acc_copyin_array_h (a
)
150 type (*), dimension (..), contiguous
:: a
153 subroutine acc_present_or_copyin_32_h (a
, len
)
154 use iso_c_binding
, only
: c_int32_t
155 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
156 type (*), dimension (*) :: a
157 integer (c_int32_t
) len
160 subroutine acc_present_or_copyin_64_h (a
, len
)
161 use iso_c_binding
, only
: c_int64_t
162 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
163 type (*), dimension (*) :: a
164 integer (c_int64_t
) len
167 subroutine acc_present_or_copyin_array_h (a
)
168 type (*), dimension (..), contiguous
:: a
171 subroutine acc_create_32_h (a
, len
)
172 use iso_c_binding
, only
: c_int32_t
173 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
174 type (*), dimension (*) :: a
175 integer (c_int32_t
) len
178 subroutine acc_create_64_h (a
, len
)
179 use iso_c_binding
, only
: c_int64_t
180 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
181 type (*), dimension (*) :: a
182 integer (c_int64_t
) len
185 subroutine acc_create_array_h (a
)
186 type (*), dimension (..), contiguous
:: a
189 subroutine acc_present_or_create_32_h (a
, len
)
190 use iso_c_binding
, only
: c_int32_t
191 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
192 type (*), dimension (*) :: a
193 integer (c_int32_t
) len
196 subroutine acc_present_or_create_64_h (a
, len
)
197 use iso_c_binding
, only
: c_int64_t
198 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
199 type (*), dimension (*) :: a
200 integer (c_int64_t
) len
203 subroutine acc_present_or_create_array_h (a
)
204 type (*), dimension (..), contiguous
:: a
207 subroutine acc_copyout_32_h (a
, len
)
208 use iso_c_binding
, only
: c_int32_t
209 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
210 type (*), dimension (*) :: a
211 integer (c_int32_t
) len
214 subroutine acc_copyout_64_h (a
, len
)
215 use iso_c_binding
, only
: c_int64_t
216 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
217 type (*), dimension (*) :: a
218 integer (c_int64_t
) len
221 subroutine acc_copyout_array_h (a
)
222 type (*), dimension (..), contiguous
:: a
225 subroutine acc_copyout_finalize_32_h (a
, len
)
226 use iso_c_binding
, only
: c_int32_t
227 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
228 type (*), dimension (*) :: a
229 integer (c_int32_t
) len
232 subroutine acc_copyout_finalize_64_h (a
, len
)
233 use iso_c_binding
, only
: c_int64_t
234 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
235 type (*), dimension (*) :: a
236 integer (c_int64_t
) len
239 subroutine acc_copyout_finalize_array_h (a
)
240 type (*), dimension (..), contiguous
:: a
243 subroutine acc_delete_32_h (a
, len
)
244 use iso_c_binding
, only
: c_int32_t
245 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
246 type (*), dimension (*) :: a
247 integer (c_int32_t
) len
250 subroutine acc_delete_64_h (a
, len
)
251 use iso_c_binding
, only
: c_int64_t
252 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
253 type (*), dimension (*) :: a
254 integer (c_int64_t
) len
257 subroutine acc_delete_array_h (a
)
258 type (*), dimension (..), contiguous
:: a
261 subroutine acc_delete_finalize_32_h (a
, len
)
262 use iso_c_binding
, only
: c_int32_t
263 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
264 type (*), dimension (*) :: a
265 integer (c_int32_t
) len
268 subroutine acc_delete_finalize_64_h (a
, len
)
269 use iso_c_binding
, only
: c_int64_t
270 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
271 type (*), dimension (*) :: a
272 integer (c_int64_t
) len
275 subroutine acc_delete_finalize_array_h (a
)
276 type (*), dimension (..), contiguous
:: a
279 subroutine acc_update_device_32_h (a
, len
)
280 use iso_c_binding
, only
: c_int32_t
281 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
282 type (*), dimension (*) :: a
283 integer (c_int32_t
) len
286 subroutine acc_update_device_64_h (a
, len
)
287 use iso_c_binding
, only
: c_int64_t
288 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
289 type (*), dimension (*) :: a
290 integer (c_int64_t
) len
293 subroutine acc_update_device_array_h (a
)
294 type (*), dimension (..), contiguous
:: a
297 subroutine acc_update_self_32_h (a
, len
)
298 use iso_c_binding
, only
: c_int32_t
299 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
300 type (*), dimension (*) :: a
301 integer (c_int32_t
) len
304 subroutine acc_update_self_64_h (a
, len
)
305 use iso_c_binding
, only
: c_int64_t
306 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
307 type (*), dimension (*) :: a
308 integer (c_int64_t
) len
311 subroutine acc_update_self_array_h (a
)
312 type (*), dimension (..), contiguous
:: a
315 function acc_is_present_32_h (a
, len
)
316 use iso_c_binding
, only
: c_int32_t
317 logical acc_is_present_32_h
318 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
319 type (*), dimension (*) :: a
320 integer (c_int32_t
) len
323 function acc_is_present_64_h (a
, len
)
324 use iso_c_binding
, only
: c_int64_t
325 logical acc_is_present_64_h
326 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
327 type (*), dimension (*) :: a
328 integer (c_int64_t
) len
331 function acc_is_present_array_h (a
)
332 logical acc_is_present_array_h
333 type (*), dimension (..), contiguous
:: a
336 subroutine acc_copyin_async_32_h (a
, len
, async
)
337 use iso_c_binding
, only
: c_int32_t
338 use openacc_kinds
, only
: acc_handle_kind
339 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
340 type (*), dimension (*) :: a
341 integer (c_int32_t
) len
342 integer (acc_handle_kind
) async
345 subroutine acc_copyin_async_64_h (a
, len
, async
)
346 use iso_c_binding
, only
: c_int64_t
347 use openacc_kinds
, only
: acc_handle_kind
348 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
349 type (*), dimension (*) :: a
350 integer (c_int64_t
) len
351 integer (acc_handle_kind
) async
354 subroutine acc_copyin_async_array_h (a
, async
)
355 use openacc_kinds
, only
: acc_handle_kind
356 type (*), dimension (..), contiguous
:: a
357 integer (acc_handle_kind
) async
360 subroutine acc_create_async_32_h (a
, len
, async
)
361 use iso_c_binding
, only
: c_int32_t
362 use openacc_kinds
, only
: acc_handle_kind
363 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
364 type (*), dimension (*) :: a
365 integer (c_int32_t
) len
366 integer (acc_handle_kind
) async
369 subroutine acc_create_async_64_h (a
, len
, async
)
370 use iso_c_binding
, only
: c_int64_t
371 use openacc_kinds
, only
: acc_handle_kind
372 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
373 type (*), dimension (*) :: a
374 integer (c_int64_t
) len
375 integer (acc_handle_kind
) async
378 subroutine acc_create_async_array_h (a
, async
)
379 use openacc_kinds
, only
: acc_handle_kind
380 type (*), dimension (..), contiguous
:: a
381 integer (acc_handle_kind
) async
384 subroutine acc_copyout_async_32_h (a
, len
, async
)
385 use iso_c_binding
, only
: c_int32_t
386 use openacc_kinds
, only
: acc_handle_kind
387 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
388 type (*), dimension (*) :: a
389 integer (c_int32_t
) len
390 integer (acc_handle_kind
) async
393 subroutine acc_copyout_async_64_h (a
, len
, async
)
394 use iso_c_binding
, only
: c_int64_t
395 use openacc_kinds
, only
: acc_handle_kind
396 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
397 type (*), dimension (*) :: a
398 integer (c_int64_t
) len
399 integer (acc_handle_kind
) async
402 subroutine acc_copyout_async_array_h (a
, async
)
403 use openacc_kinds
, only
: acc_handle_kind
404 type (*), dimension (..), contiguous
:: a
405 integer (acc_handle_kind
) async
408 subroutine acc_delete_async_32_h (a
, len
, async
)
409 use iso_c_binding
, only
: c_int32_t
410 use openacc_kinds
, only
: acc_handle_kind
411 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
412 type (*), dimension (*) :: a
413 integer (c_int32_t
) len
414 integer (acc_handle_kind
) async
417 subroutine acc_delete_async_64_h (a
, len
, async
)
418 use iso_c_binding
, only
: c_int64_t
419 use openacc_kinds
, only
: acc_handle_kind
420 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
421 type (*), dimension (*) :: a
422 integer (c_int64_t
) len
423 integer (acc_handle_kind
) async
426 subroutine acc_delete_async_array_h (a
, async
)
427 use openacc_kinds
, only
: acc_handle_kind
428 type (*), dimension (..), contiguous
:: a
429 integer (acc_handle_kind
) async
432 subroutine acc_update_device_async_32_h (a
, len
, async
)
433 use iso_c_binding
, only
: c_int32_t
434 use openacc_kinds
, only
: acc_handle_kind
435 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
436 type (*), dimension (*) :: a
437 integer (c_int32_t
) len
438 integer (acc_handle_kind
) async
441 subroutine acc_update_device_async_64_h (a
, len
, async
)
442 use iso_c_binding
, only
: c_int64_t
443 use openacc_kinds
, only
: acc_handle_kind
444 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
445 type (*), dimension (*) :: a
446 integer (c_int64_t
) len
447 integer (acc_handle_kind
) async
450 subroutine acc_update_device_async_array_h (a
, async
)
451 use openacc_kinds
, only
: acc_handle_kind
452 type (*), dimension (..), contiguous
:: a
453 integer (acc_handle_kind
) async
456 subroutine acc_update_self_async_32_h (a
, len
, async
)
457 use iso_c_binding
, only
: c_int32_t
458 use openacc_kinds
, only
: acc_handle_kind
459 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
460 type (*), dimension (*) :: a
461 integer (c_int32_t
) len
462 integer (acc_handle_kind
) async
465 subroutine acc_update_self_async_64_h (a
, len
, async
)
466 use iso_c_binding
, only
: c_int64_t
467 use openacc_kinds
, only
: acc_handle_kind
468 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
469 type (*), dimension (*) :: a
470 integer (c_int64_t
) len
471 integer (acc_handle_kind
) async
474 subroutine acc_update_self_async_array_h (a
, async
)
475 use openacc_kinds
, only
: acc_handle_kind
476 type (*), dimension (..), contiguous
:: a
477 integer (acc_handle_kind
) async
482 function acc_get_num_devices_l (d
) &
483 bind (C
, name
= "acc_get_num_devices")
484 use iso_c_binding
, only
: c_int
485 integer (c_int
) :: acc_get_num_devices_l
486 integer (c_int
), value
:: d
489 subroutine acc_set_device_type_l (d
) &
490 bind (C
, name
= "acc_set_device_type")
491 use iso_c_binding
, only
: c_int
492 integer (c_int
), value
:: d
495 function acc_get_device_type_l () &
496 bind (C
, name
= "acc_get_device_type")
497 use iso_c_binding
, only
: c_int
498 integer (c_int
) :: acc_get_device_type_l
501 subroutine acc_set_device_num_l (n
, d
) &
502 bind (C
, name
= "acc_set_device_num")
503 use iso_c_binding
, only
: c_int
504 integer (c_int
), value
:: n
, d
507 function acc_get_device_num_l (d
) &
508 bind (C
, name
= "acc_get_device_num")
509 use iso_c_binding
, only
: c_int
510 integer (c_int
) :: acc_get_device_num_l
511 integer (c_int
), value
:: d
514 function acc_async_test_l (a
) &
515 bind (C
, name
= "acc_async_test")
516 use iso_c_binding
, only
: c_int
517 integer (c_int
) :: acc_async_test_l
518 integer (c_int
), value
:: a
521 function acc_async_test_all_l () &
522 bind (C
, name
= "acc_async_test_all")
523 use iso_c_binding
, only
: c_int
524 integer (c_int
) :: acc_async_test_all_l
527 subroutine acc_wait_l (a
) &
528 bind (C
, name
= "acc_wait")
529 use iso_c_binding
, only
: c_int
530 integer (c_int
), value
:: a
533 subroutine acc_wait_async_l (a1
, a2
) &
534 bind (C
, name
= "acc_wait_async")
535 use iso_c_binding
, only
: c_int
536 integer (c_int
), value
:: a1
, a2
539 subroutine acc_wait_all_l () &
540 bind (C
, name
= "acc_wait_all")
541 use iso_c_binding
, only
: c_int
544 subroutine acc_wait_all_async_l (a
) &
545 bind (C
, name
= "acc_wait_all_async")
546 use iso_c_binding
, only
: c_int
547 integer (c_int
), value
:: a
550 subroutine acc_init_l (d
) &
551 bind (C
, name
= "acc_init")
552 use iso_c_binding
, only
: c_int
553 integer (c_int
), value
:: d
556 subroutine acc_shutdown_l (d
) &
557 bind (C
, name
= "acc_shutdown")
558 use iso_c_binding
, only
: c_int
559 integer (c_int
), value
:: d
562 function acc_on_device_l (d
) &
563 bind (C
, name
= "acc_on_device")
564 use iso_c_binding
, only
: c_int
565 integer (c_int
) :: acc_on_device_l
566 integer (c_int
), value
:: d
569 subroutine acc_copyin_l (a
, len
) &
570 bind (C
, name
= "acc_copyin")
571 use iso_c_binding
, only
: c_size_t
572 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
573 type (*), dimension (*) :: a
574 integer (c_size_t
), value
:: len
577 subroutine acc_present_or_copyin_l (a
, len
) &
578 bind (C
, name
= "acc_present_or_copyin")
579 use iso_c_binding
, only
: c_size_t
580 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
581 type (*), dimension (*) :: a
582 integer (c_size_t
), value
:: len
585 subroutine acc_create_l (a
, len
) &
586 bind (C
, name
= "acc_create")
587 use iso_c_binding
, only
: c_size_t
588 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
589 type (*), dimension (*) :: a
590 integer (c_size_t
), value
:: len
593 subroutine acc_present_or_create_l (a
, len
) &
594 bind (C
, name
= "acc_present_or_create")
595 use iso_c_binding
, only
: c_size_t
596 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
597 type (*), dimension (*) :: a
598 integer (c_size_t
), value
:: len
601 subroutine acc_copyout_l (a
, len
) &
602 bind (C
, name
= "acc_copyout")
603 use iso_c_binding
, only
: c_size_t
604 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
605 type (*), dimension (*) :: a
606 integer (c_size_t
), value
:: len
609 subroutine acc_copyout_finalize_l (a
, len
) &
610 bind (C
, name
= "acc_copyout_finalize")
611 use iso_c_binding
, only
: c_size_t
612 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
613 type (*), dimension (*) :: a
614 integer (c_size_t
), value
:: len
617 subroutine acc_delete_l (a
, len
) &
618 bind (C
, name
= "acc_delete")
619 use iso_c_binding
, only
: c_size_t
620 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
621 type (*), dimension (*) :: a
622 integer (c_size_t
), value
:: len
625 subroutine acc_delete_finalize_l (a
, len
) &
626 bind (C
, name
= "acc_delete_finalize")
627 use iso_c_binding
, only
: c_size_t
628 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
629 type (*), dimension (*) :: a
630 integer (c_size_t
), value
:: len
633 subroutine acc_update_device_l (a
, len
) &
634 bind (C
, name
= "acc_update_device")
635 use iso_c_binding
, only
: c_size_t
636 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
637 type (*), dimension (*) :: a
638 integer (c_size_t
), value
:: len
641 subroutine acc_update_self_l (a
, len
) &
642 bind (C
, name
= "acc_update_self")
643 use iso_c_binding
, only
: c_size_t
644 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
645 type (*), dimension (*) :: a
646 integer (c_size_t
), value
:: len
649 function acc_is_present_l (a
, len
) &
650 bind (C
, name
= "acc_is_present")
651 use iso_c_binding
, only
: c_int32_t
, c_size_t
652 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
653 integer (c_int32_t
) :: acc_is_present_l
654 type (*), dimension (*) :: a
655 integer (c_size_t
), value
:: len
658 subroutine acc_copyin_async_l (a
, len
, async
) &
659 bind (C
, name
= "acc_copyin_async")
660 use iso_c_binding
, only
: c_size_t
, c_int
661 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
662 type (*), dimension (*) :: a
663 integer (c_size_t
), value
:: len
664 integer (c_int
), value
:: async
667 subroutine acc_create_async_l (a
, len
, async
) &
668 bind (C
, name
= "acc_create_async")
669 use iso_c_binding
, only
: c_size_t
, c_int
670 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
671 type (*), dimension (*) :: a
672 integer (c_size_t
), value
:: len
673 integer (c_int
), value
:: async
676 subroutine acc_copyout_async_l (a
, len
, async
) &
677 bind (C
, name
= "acc_copyout_async")
678 use iso_c_binding
, only
: c_size_t
, c_int
679 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
680 type (*), dimension (*) :: a
681 integer (c_size_t
), value
:: len
682 integer (c_int
), value
:: async
685 subroutine acc_delete_async_l (a
, len
, async
) &
686 bind (C
, name
= "acc_delete_async")
687 use iso_c_binding
, only
: c_size_t
, c_int
688 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
689 type (*), dimension (*) :: a
690 integer (c_size_t
), value
:: len
691 integer (c_int
), value
:: async
694 subroutine acc_update_device_async_l (a
, len
, async
) &
695 bind (C
, name
= "acc_update_device_async")
696 use iso_c_binding
, only
: c_size_t
, c_int
697 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
698 type (*), dimension (*) :: a
699 integer (c_size_t
), value
:: len
700 integer (c_int
), value
:: async
703 subroutine acc_update_self_async_l (a
, len
, async
) &
704 bind (C
, name
= "acc_update_self_async")
705 use iso_c_binding
, only
: c_size_t
, c_int
706 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
707 type (*), dimension (*) :: a
708 integer (c_size_t
), value
:: len
709 integer (c_int
), value
:: async
719 public
:: openacc_version
721 public
:: acc_get_num_devices
, acc_set_device_type
, acc_get_device_type
722 public
:: acc_set_device_num
, acc_get_device_num
, acc_async_test
723 public
:: acc_async_test_all
724 public
:: acc_wait
, acc_async_wait
, acc_wait_async
725 public
:: acc_wait_all
, acc_async_wait_all
, acc_wait_all_async
726 public
:: acc_init
, acc_shutdown
, acc_on_device
727 public
:: acc_copyin
, acc_present_or_copyin
, acc_pcopyin
, acc_create
728 public
:: acc_present_or_create
, acc_pcreate
, acc_copyout
, acc_delete
729 public
:: acc_update_device
, acc_update_self
, acc_is_present
730 public
:: acc_copyin_async
, acc_create_async
, acc_copyout_async
731 public
:: acc_delete_async
, acc_update_device_async
, acc_update_self_async
733 integer, parameter :: openacc_version
= 201306
735 interface acc_get_num_devices
736 procedure
:: acc_get_num_devices_h
739 interface acc_set_device_type
740 procedure
:: acc_set_device_type_h
743 interface acc_get_device_type
744 procedure
:: acc_get_device_type_h
747 interface acc_set_device_num
748 procedure
:: acc_set_device_num_h
751 interface acc_get_device_num
752 procedure
:: acc_get_device_num_h
755 interface acc_async_test
756 procedure
:: acc_async_test_h
759 interface acc_async_test_all
760 procedure
:: acc_async_test_all_h
764 procedure
:: acc_wait_h
767 ! acc_async_wait is an OpenACC 1.0 compatibility name for acc_wait.
768 interface acc_async_wait
769 procedure
:: acc_wait_h
772 interface acc_wait_async
773 procedure
:: acc_wait_async_h
776 interface acc_wait_all
777 procedure
:: acc_wait_all_h
780 ! acc_async_wait_all is an OpenACC 1.0 compatibility name for acc_wait_all.
781 interface acc_async_wait_all
782 procedure
:: acc_wait_all_h
785 interface acc_wait_all_async
786 procedure
:: acc_wait_all_async_h
790 procedure
:: acc_init_h
793 interface acc_shutdown
794 procedure
:: acc_shutdown_h
797 interface acc_on_device
798 procedure
:: acc_on_device_h
801 ! acc_malloc: Only available in C/C++
802 ! acc_free: Only available in C/C++
804 ! As vendor extension, the following code supports both 32bit and 64bit
805 ! arguments for "size"; the OpenACC standard only permits default-kind
806 ! integers, which are of kind 4 (i.e. 32 bits).
807 ! Additionally, the two-argument version also takes arrays as argument.
808 ! and the one argument version also scalars. Note that the code assumes
809 ! that the arrays are contiguous.
812 procedure
:: acc_copyin_32_h
813 procedure
:: acc_copyin_64_h
814 procedure
:: acc_copyin_array_h
817 interface acc_present_or_copyin
818 procedure
:: acc_present_or_copyin_32_h
819 procedure
:: acc_present_or_copyin_64_h
820 procedure
:: acc_present_or_copyin_array_h
823 interface acc_pcopyin
824 procedure
:: acc_present_or_copyin_32_h
825 procedure
:: acc_present_or_copyin_64_h
826 procedure
:: acc_present_or_copyin_array_h
830 procedure
:: acc_create_32_h
831 procedure
:: acc_create_64_h
832 procedure
:: acc_create_array_h
835 interface acc_present_or_create
836 procedure
:: acc_present_or_create_32_h
837 procedure
:: acc_present_or_create_64_h
838 procedure
:: acc_present_or_create_array_h
841 interface acc_pcreate
842 procedure
:: acc_present_or_create_32_h
843 procedure
:: acc_present_or_create_64_h
844 procedure
:: acc_present_or_create_array_h
847 interface acc_copyout
848 procedure
:: acc_copyout_32_h
849 procedure
:: acc_copyout_64_h
850 procedure
:: acc_copyout_array_h
853 interface acc_copyout_finalize
854 procedure
:: acc_copyout_finalize_32_h
855 procedure
:: acc_copyout_finalize_64_h
856 procedure
:: acc_copyout_finalize_array_h
860 procedure
:: acc_delete_32_h
861 procedure
:: acc_delete_64_h
862 procedure
:: acc_delete_array_h
865 interface acc_delete_finalize
866 procedure
:: acc_delete_finalize_32_h
867 procedure
:: acc_delete_finalize_64_h
868 procedure
:: acc_delete_finalize_array_h
871 interface acc_update_device
872 procedure
:: acc_update_device_32_h
873 procedure
:: acc_update_device_64_h
874 procedure
:: acc_update_device_array_h
877 interface acc_update_self
878 procedure
:: acc_update_self_32_h
879 procedure
:: acc_update_self_64_h
880 procedure
:: acc_update_self_array_h
883 ! acc_map_data: Only available in C/C++
884 ! acc_unmap_data: Only available in C/C++
885 ! acc_deviceptr: Only available in C/C++
886 ! acc_hostptr: Only available in C/C++
888 interface acc_is_present
889 procedure
:: acc_is_present_32_h
890 procedure
:: acc_is_present_64_h
891 procedure
:: acc_is_present_array_h
894 ! acc_memcpy_to_device: Only available in C/C++
895 ! acc_memcpy_from_device: Only available in C/C++
897 interface acc_copyin_async
898 procedure
:: acc_copyin_async_32_h
899 procedure
:: acc_copyin_async_64_h
900 procedure
:: acc_copyin_async_array_h
903 interface acc_create_async
904 procedure
:: acc_create_async_32_h
905 procedure
:: acc_create_async_64_h
906 procedure
:: acc_create_async_array_h
909 interface acc_copyout_async
910 procedure
:: acc_copyout_async_32_h
911 procedure
:: acc_copyout_async_64_h
912 procedure
:: acc_copyout_async_array_h
915 interface acc_delete_async
916 procedure
:: acc_delete_async_32_h
917 procedure
:: acc_delete_async_64_h
918 procedure
:: acc_delete_async_array_h
921 interface acc_update_device_async
922 procedure
:: acc_update_device_async_32_h
923 procedure
:: acc_update_device_async_64_h
924 procedure
:: acc_update_device_async_array_h
927 interface acc_update_self_async
928 procedure
:: acc_update_self_async_32_h
929 procedure
:: acc_update_self_async_64_h
930 procedure
:: acc_update_self_async_array_h
935 function acc_get_num_devices_h (d
)
936 use openacc_internal
, only
: acc_get_num_devices_l
938 integer acc_get_num_devices_h
939 integer (acc_device_kind
) d
940 acc_get_num_devices_h
= acc_get_num_devices_l (d
)
943 subroutine acc_set_device_type_h (d
)
944 use openacc_internal
, only
: acc_set_device_type_l
946 integer (acc_device_kind
) d
947 call acc_set_device_type_l (d
)
950 function acc_get_device_type_h ()
951 use openacc_internal
, only
: acc_get_device_type_l
953 integer (acc_device_kind
) acc_get_device_type_h
954 acc_get_device_type_h
= acc_get_device_type_l ()
957 subroutine acc_set_device_num_h (n
, d
)
958 use openacc_internal
, only
: acc_set_device_num_l
961 integer (acc_device_kind
) d
962 call acc_set_device_num_l (n
, d
)
965 function acc_get_device_num_h (d
)
966 use openacc_internal
, only
: acc_get_device_num_l
968 integer acc_get_device_num_h
969 integer (acc_device_kind
) d
970 acc_get_device_num_h
= acc_get_device_num_l (d
)
973 function acc_async_test_h (a
)
974 use openacc_internal
, only
: acc_async_test_l
975 logical acc_async_test_h
977 if (acc_async_test_l (a
) .eq
. 1) then
978 acc_async_test_h
= .TRUE
.
980 acc_async_test_h
= .FALSE
.
984 function acc_async_test_all_h ()
985 use openacc_internal
, only
: acc_async_test_all_l
986 logical acc_async_test_all_h
987 if (acc_async_test_all_l () .eq
. 1) then
988 acc_async_test_all_h
= .TRUE
.
990 acc_async_test_all_h
= .FALSE
.
994 subroutine acc_wait_h (a
)
995 use openacc_internal
, only
: acc_wait_l
1000 subroutine acc_wait_async_h (a1
, a2
)
1001 use openacc_internal
, only
: acc_wait_async_l
1003 call acc_wait_async_l (a1
, a2
)
1006 subroutine acc_wait_all_h ()
1007 use openacc_internal
, only
: acc_wait_all_l
1008 call acc_wait_all_l ()
1011 subroutine acc_wait_all_async_h (a
)
1012 use openacc_internal
, only
: acc_wait_all_async_l
1014 call acc_wait_all_async_l (a
)
1017 subroutine acc_init_h (d
)
1018 use openacc_internal
, only
: acc_init_l
1020 integer (acc_device_kind
) d
1024 subroutine acc_shutdown_h (d
)
1025 use openacc_internal
, only
: acc_shutdown_l
1027 integer (acc_device_kind
) d
1028 call acc_shutdown_l (d
)
1031 function acc_on_device_h (d
)
1032 use openacc_internal
, only
: acc_on_device_l
1034 integer (acc_device_kind
) d
1035 logical acc_on_device_h
1036 if (acc_on_device_l (d
) .eq
. 1) then
1037 acc_on_device_h
= .TRUE
.
1039 acc_on_device_h
= .FALSE
.
1043 subroutine acc_copyin_32_h (a
, len
)
1044 use iso_c_binding
, only
: c_int32_t
, c_size_t
1045 use openacc_internal
, only
: acc_copyin_l
1046 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1047 type (*), dimension (*) :: a
1048 integer (c_int32_t
) len
1049 call acc_copyin_l (a
, int (len
, kind
= c_size_t
))
1052 subroutine acc_copyin_64_h (a
, len
)
1053 use iso_c_binding
, only
: c_int64_t
, c_size_t
1054 use openacc_internal
, only
: acc_copyin_l
1055 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1056 type (*), dimension (*) :: a
1057 integer (c_int64_t
) len
1058 call acc_copyin_l (a
, int (len
, kind
= c_size_t
))
1061 subroutine acc_copyin_array_h (a
)
1062 use openacc_internal
, only
: acc_copyin_l
1063 type (*), dimension (..), contiguous
:: a
1064 call acc_copyin_l (a
, sizeof (a
))
1067 subroutine acc_present_or_copyin_32_h (a
, len
)
1068 use iso_c_binding
, only
: c_int32_t
, c_size_t
1069 use openacc_internal
, only
: acc_present_or_copyin_l
1070 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1071 type (*), dimension (*) :: a
1072 integer (c_int32_t
) len
1073 call acc_present_or_copyin_l (a
, int (len
, kind
= c_size_t
))
1076 subroutine acc_present_or_copyin_64_h (a
, len
)
1077 use iso_c_binding
, only
: c_int64_t
, c_size_t
1078 use openacc_internal
, only
: acc_present_or_copyin_l
1079 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1080 type (*), dimension (*) :: a
1081 integer (c_int64_t
) len
1082 call acc_present_or_copyin_l (a
, int (len
, kind
= c_size_t
))
1085 subroutine acc_present_or_copyin_array_h (a
)
1086 use openacc_internal
, only
: acc_present_or_copyin_l
1087 type (*), dimension (..), contiguous
:: a
1088 call acc_present_or_copyin_l (a
, sizeof (a
))
1091 subroutine acc_create_32_h (a
, len
)
1092 use iso_c_binding
, only
: c_int32_t
, c_size_t
1093 use openacc_internal
, only
: acc_create_l
1094 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1095 type (*), dimension (*) :: a
1096 integer (c_int32_t
) len
1097 call acc_create_l (a
, int (len
, kind
= c_size_t
))
1100 subroutine acc_create_64_h (a
, len
)
1101 use iso_c_binding
, only
: c_int64_t
, c_size_t
1102 use openacc_internal
, only
: acc_create_l
1103 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1104 type (*), dimension (*) :: a
1105 integer (c_int64_t
) len
1106 call acc_create_l (a
, int (len
, kind
= c_size_t
))
1109 subroutine acc_create_array_h (a
)
1110 use openacc_internal
, only
: acc_create_l
1111 type (*), dimension (..), contiguous
:: a
1112 call acc_create_l (a
, sizeof (a
))
1115 subroutine acc_present_or_create_32_h (a
, len
)
1116 use iso_c_binding
, only
: c_int32_t
, c_size_t
1117 use openacc_internal
, only
: acc_present_or_create_l
1118 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1119 type (*), dimension (*) :: a
1120 integer (c_int32_t
) len
1121 call acc_present_or_create_l (a
, int (len
, kind
= c_size_t
))
1124 subroutine acc_present_or_create_64_h (a
, len
)
1125 use iso_c_binding
, only
: c_int64_t
, c_size_t
1126 use openacc_internal
, only
: acc_present_or_create_l
1127 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1128 type (*), dimension (*) :: a
1129 integer (c_int64_t
) len
1130 call acc_present_or_create_l (a
, int (len
, kind
= c_size_t
))
1133 subroutine acc_present_or_create_array_h (a
)
1134 use openacc_internal
, only
: acc_present_or_create_l
1135 type (*), dimension (..), contiguous
:: a
1136 call acc_present_or_create_l (a
, sizeof (a
))
1139 subroutine acc_copyout_32_h (a
, len
)
1140 use iso_c_binding
, only
: c_int32_t
, c_size_t
1141 use openacc_internal
, only
: acc_copyout_l
1142 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1143 type (*), dimension (*) :: a
1144 integer (c_int32_t
) len
1145 call acc_copyout_l (a
, int (len
, kind
= c_size_t
))
1148 subroutine acc_copyout_64_h (a
, len
)
1149 use iso_c_binding
, only
: c_int64_t
, c_size_t
1150 use openacc_internal
, only
: acc_copyout_l
1151 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1152 type (*), dimension (*) :: a
1153 integer (c_int64_t
) len
1154 call acc_copyout_l (a
, int (len
, kind
= c_size_t
))
1157 subroutine acc_copyout_array_h (a
)
1158 use openacc_internal
, only
: acc_copyout_l
1159 type (*), dimension (..), contiguous
:: a
1160 call acc_copyout_l (a
, sizeof (a
))
1163 subroutine acc_copyout_finalize_32_h (a
, len
)
1164 use iso_c_binding
, only
: c_int32_t
, c_size_t
1165 use openacc_internal
, only
: acc_copyout_finalize_l
1166 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1167 type (*), dimension (*) :: a
1168 integer (c_int32_t
) len
1169 call acc_copyout_finalize_l (a
, int (len
, kind
= c_size_t
))
1172 subroutine acc_copyout_finalize_64_h (a
, len
)
1173 use iso_c_binding
, only
: c_int64_t
, c_size_t
1174 use openacc_internal
, only
: acc_copyout_finalize_l
1175 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1176 type (*), dimension (*) :: a
1177 integer (c_int64_t
) len
1178 call acc_copyout_finalize_l (a
, int (len
, kind
= c_size_t
))
1181 subroutine acc_copyout_finalize_array_h (a
)
1182 use openacc_internal
, only
: acc_copyout_finalize_l
1183 type (*), dimension (..), contiguous
:: a
1184 call acc_copyout_finalize_l (a
, sizeof (a
))
1187 subroutine acc_delete_32_h (a
, len
)
1188 use iso_c_binding
, only
: c_int32_t
, c_size_t
1189 use openacc_internal
, only
: acc_delete_l
1190 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1191 type (*), dimension (*) :: a
1192 integer (c_int32_t
) len
1193 call acc_delete_l (a
, int (len
, kind
= c_size_t
))
1196 subroutine acc_delete_64_h (a
, len
)
1197 use iso_c_binding
, only
: c_int64_t
, c_size_t
1198 use openacc_internal
, only
: acc_delete_l
1199 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1200 type (*), dimension (*) :: a
1201 integer (c_int64_t
) len
1202 call acc_delete_l (a
, int (len
, kind
= c_size_t
))
1205 subroutine acc_delete_array_h (a
)
1206 use openacc_internal
, only
: acc_delete_l
1207 type (*), dimension (..), contiguous
:: a
1208 call acc_delete_l (a
, sizeof (a
))
1211 subroutine acc_delete_finalize_32_h (a
, len
)
1212 use iso_c_binding
, only
: c_int32_t
, c_size_t
1213 use openacc_internal
, only
: acc_delete_finalize_l
1214 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1215 type (*), dimension (*) :: a
1216 integer (c_int32_t
) len
1217 call acc_delete_finalize_l (a
, int (len
, kind
= c_size_t
))
1220 subroutine acc_delete_finalize_64_h (a
, len
)
1221 use iso_c_binding
, only
: c_int64_t
, c_size_t
1222 use openacc_internal
, only
: acc_delete_finalize_l
1223 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1224 type (*), dimension (*) :: a
1225 integer (c_int64_t
) len
1226 call acc_delete_finalize_l (a
, int (len
, kind
= c_size_t
))
1229 subroutine acc_delete_finalize_array_h (a
)
1230 use openacc_internal
, only
: acc_delete_finalize_l
1231 type (*), dimension (..), contiguous
:: a
1232 call acc_delete_finalize_l (a
, sizeof (a
))
1235 subroutine acc_update_device_32_h (a
, len
)
1236 use iso_c_binding
, only
: c_int32_t
, c_size_t
1237 use openacc_internal
, only
: acc_update_device_l
1238 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1239 type (*), dimension (*) :: a
1240 integer (c_int32_t
) len
1241 call acc_update_device_l (a
, int (len
, kind
= c_size_t
))
1244 subroutine acc_update_device_64_h (a
, len
)
1245 use iso_c_binding
, only
: c_int64_t
, c_size_t
1246 use openacc_internal
, only
: acc_update_device_l
1247 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1248 type (*), dimension (*) :: a
1249 integer (c_int64_t
) len
1250 call acc_update_device_l (a
, int (len
, kind
= c_size_t
))
1253 subroutine acc_update_device_array_h (a
)
1254 use openacc_internal
, only
: acc_update_device_l
1255 type (*), dimension (..), contiguous
:: a
1256 call acc_update_device_l (a
, sizeof (a
))
1259 subroutine acc_update_self_32_h (a
, len
)
1260 use iso_c_binding
, only
: c_int32_t
, c_size_t
1261 use openacc_internal
, only
: acc_update_self_l
1262 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1263 type (*), dimension (*) :: a
1264 integer (c_int32_t
) len
1265 call acc_update_self_l (a
, int (len
, kind
= c_size_t
))
1268 subroutine acc_update_self_64_h (a
, len
)
1269 use iso_c_binding
, only
: c_int64_t
, c_size_t
1270 use openacc_internal
, only
: acc_update_self_l
1271 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1272 type (*), dimension (*) :: a
1273 integer (c_int64_t
) len
1274 call acc_update_self_l (a
, int (len
, kind
= c_size_t
))
1277 subroutine acc_update_self_array_h (a
)
1278 use openacc_internal
, only
: acc_update_self_l
1279 type (*), dimension (..), contiguous
:: a
1280 call acc_update_self_l (a
, sizeof (a
))
1283 function acc_is_present_32_h (a
, len
)
1284 use iso_c_binding
, only
: c_int32_t
, c_size_t
1285 use openacc_internal
, only
: acc_is_present_l
1286 logical acc_is_present_32_h
1287 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1288 type (*), dimension (*) :: a
1289 integer (c_int32_t
) len
1290 if (acc_is_present_l (a
, int (len
, kind
= c_size_t
)) .eq
. 1) then
1291 acc_is_present_32_h
= .TRUE
.
1293 acc_is_present_32_h
= .FALSE
.
1297 function acc_is_present_64_h (a
, len
)
1298 use iso_c_binding
, only
: c_int64_t
, c_size_t
1299 use openacc_internal
, only
: acc_is_present_l
1300 logical acc_is_present_64_h
1301 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1302 type (*), dimension (*) :: a
1303 integer (c_int64_t
) len
1304 if (acc_is_present_l (a
, int (len
, kind
= c_size_t
)) .eq
. 1) then
1305 acc_is_present_64_h
= .TRUE
.
1307 acc_is_present_64_h
= .FALSE
.
1311 function acc_is_present_array_h (a
)
1312 use openacc_internal
, only
: acc_is_present_l
1313 logical acc_is_present_array_h
1314 type (*), dimension (..), contiguous
:: a
1315 acc_is_present_array_h
= acc_is_present_l (a
, sizeof (a
)) == 1
1318 subroutine acc_copyin_async_32_h (a
, len
, async
)
1319 use iso_c_binding
, only
: c_int32_t
, c_size_t
, c_int
1320 use openacc_internal
, only
: acc_copyin_async_l
1321 use openacc_kinds
, only
: acc_handle_kind
1322 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1323 type (*), dimension (*) :: a
1324 integer (c_int32_t
) len
1325 integer (acc_handle_kind
) async
1326 call acc_copyin_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1329 subroutine acc_copyin_async_64_h (a
, len
, async
)
1330 use iso_c_binding
, only
: c_int64_t
, c_size_t
, c_int
1331 use openacc_internal
, only
: acc_copyin_async_l
1332 use openacc_kinds
, only
: acc_handle_kind
1333 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1334 type (*), dimension (*) :: a
1335 integer (c_int64_t
) len
1336 integer (acc_handle_kind
) async
1337 call acc_copyin_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1340 subroutine acc_copyin_async_array_h (a
, async
)
1341 use iso_c_binding
, only
: c_int
1342 use openacc_internal
, only
: acc_copyin_async_l
1343 use openacc_kinds
, only
: acc_handle_kind
1344 type (*), dimension (..), contiguous
:: a
1345 integer (acc_handle_kind
) async
1346 call acc_copyin_async_l (a
, sizeof (a
), int (async
, kind
= c_int
))
1349 subroutine acc_create_async_32_h (a
, len
, async
)
1350 use iso_c_binding
, only
: c_int32_t
, c_size_t
, c_int
1351 use openacc_internal
, only
: acc_create_async_l
1352 use openacc_kinds
, only
: acc_handle_kind
1353 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1354 type (*), dimension (*) :: a
1355 integer (c_int32_t
) len
1356 integer (acc_handle_kind
) async
1357 call acc_create_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1360 subroutine acc_create_async_64_h (a
, len
, async
)
1361 use iso_c_binding
, only
: c_int64_t
, c_size_t
, c_int
1362 use openacc_internal
, only
: acc_create_async_l
1363 use openacc_kinds
, only
: acc_handle_kind
1364 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1365 type (*), dimension (*) :: a
1366 integer (c_int64_t
) len
1367 integer (acc_handle_kind
) async
1368 call acc_create_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1371 subroutine acc_create_async_array_h (a
, async
)
1372 use iso_c_binding
, only
: c_int
1373 use openacc_internal
, only
: acc_create_async_l
1374 use openacc_kinds
, only
: acc_handle_kind
1375 type (*), dimension (..), contiguous
:: a
1376 integer (acc_handle_kind
) async
1377 call acc_create_async_l (a
, sizeof (a
), int (async
, kind
= c_int
))
1380 subroutine acc_copyout_async_32_h (a
, len
, async
)
1381 use iso_c_binding
, only
: c_int32_t
, c_size_t
, c_int
1382 use openacc_internal
, only
: acc_copyout_async_l
1383 use openacc_kinds
, only
: acc_handle_kind
1384 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1385 type (*), dimension (*) :: a
1386 integer (c_int32_t
) len
1387 integer (acc_handle_kind
) async
1388 call acc_copyout_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1391 subroutine acc_copyout_async_64_h (a
, len
, async
)
1392 use iso_c_binding
, only
: c_int64_t
, c_size_t
, c_int
1393 use openacc_internal
, only
: acc_copyout_async_l
1394 use openacc_kinds
, only
: acc_handle_kind
1395 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1396 type (*), dimension (*) :: a
1397 integer (c_int64_t
) len
1398 integer (acc_handle_kind
) async
1399 call acc_copyout_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1402 subroutine acc_copyout_async_array_h (a
, async
)
1403 use iso_c_binding
, only
: c_int
1404 use openacc_internal
, only
: acc_copyout_async_l
1405 use openacc_kinds
, only
: acc_handle_kind
1406 type (*), dimension (..), contiguous
:: a
1407 integer (acc_handle_kind
) async
1408 call acc_copyout_async_l (a
, sizeof (a
), int (async
, kind
= c_int
))
1411 subroutine acc_delete_async_32_h (a
, len
, async
)
1412 use iso_c_binding
, only
: c_int32_t
, c_size_t
, c_int
1413 use openacc_internal
, only
: acc_delete_async_l
1414 use openacc_kinds
, only
: acc_handle_kind
1415 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1416 type (*), dimension (*) :: a
1417 integer (c_int32_t
) len
1418 integer (acc_handle_kind
) async
1419 call acc_delete_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1422 subroutine acc_delete_async_64_h (a
, len
, async
)
1423 use iso_c_binding
, only
: c_int64_t
, c_size_t
, c_int
1424 use openacc_internal
, only
: acc_delete_async_l
1425 use openacc_kinds
, only
: acc_handle_kind
1426 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1427 type (*), dimension (*) :: a
1428 integer (c_int64_t
) len
1429 integer (acc_handle_kind
) async
1430 call acc_delete_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1433 subroutine acc_delete_async_array_h (a
, async
)
1434 use iso_c_binding
, only
: c_int
1435 use openacc_internal
, only
: acc_delete_async_l
1436 use openacc_kinds
, only
: acc_handle_kind
1437 type (*), dimension (..), contiguous
:: a
1438 integer (acc_handle_kind
) async
1439 call acc_delete_async_l (a
, sizeof (a
), int (async
, kind
= c_int
))
1442 subroutine acc_update_device_async_32_h (a
, len
, async
)
1443 use iso_c_binding
, only
: c_int32_t
, c_size_t
, c_int
1444 use openacc_internal
, only
: acc_update_device_async_l
1445 use openacc_kinds
, only
: acc_handle_kind
1446 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1447 type (*), dimension (*) :: a
1448 integer (c_int32_t
) len
1449 integer (acc_handle_kind
) async
1450 call acc_update_device_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1453 subroutine acc_update_device_async_64_h (a
, len
, async
)
1454 use iso_c_binding
, only
: c_int64_t
, c_size_t
, c_int
1455 use openacc_internal
, only
: acc_update_device_async_l
1456 use openacc_kinds
, only
: acc_handle_kind
1457 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1458 type (*), dimension (*) :: a
1459 integer (c_int64_t
) len
1460 integer (acc_handle_kind
) async
1461 call acc_update_device_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1464 subroutine acc_update_device_async_array_h (a
, async
)
1465 use iso_c_binding
, only
: c_int
1466 use openacc_internal
, only
: acc_update_device_async_l
1467 use openacc_kinds
, only
: acc_handle_kind
1468 type (*), dimension (..), contiguous
:: a
1469 integer (acc_handle_kind
) async
1470 call acc_update_device_async_l (a
, sizeof (a
), int (async
, kind
= c_int
))
1473 subroutine acc_update_self_async_32_h (a
, len
, async
)
1474 use iso_c_binding
, only
: c_int32_t
, c_size_t
, c_int
1475 use openacc_internal
, only
: acc_update_self_async_l
1476 use openacc_kinds
, only
: acc_handle_kind
1477 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1478 type (*), dimension (*) :: a
1479 integer (c_int32_t
) len
1480 integer (acc_handle_kind
) async
1481 call acc_update_self_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1484 subroutine acc_update_self_async_64_h (a
, len
, async
)
1485 use iso_c_binding
, only
: c_int64_t
, c_size_t
, c_int
1486 use openacc_internal
, only
: acc_update_self_async_l
1487 use openacc_kinds
, only
: acc_handle_kind
1488 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1489 type (*), dimension (*) :: a
1490 integer (c_int64_t
) len
1491 integer (acc_handle_kind
) async
1492 call acc_update_self_async_l (a
, int (len
, kind
= c_size_t
), int (async
, kind
= c_int
))
1495 subroutine acc_update_self_async_array_h (a
, async
)
1496 use iso_c_binding
, only
: c_int
1497 use openacc_internal
, only
: acc_update_self_async_l
1498 use openacc_kinds
, only
: acc_handle_kind
1499 type (*), dimension (..), contiguous
:: a
1500 integer (acc_handle_kind
) async
1501 call acc_update_self_async_l (a
, sizeof (a
), int (async
, kind
= c_int
))