openacc.f90 revision 1.1.1.8 1 1.1 mrg ! OpenACC Runtime Library Definitions.
2 1.1 mrg
3 1.1.1.8 mrg ! Copyright (C) 2014-2020 Free Software Foundation, Inc.
4 1.1 mrg
5 1.1 mrg ! Contributed by Tobias Burnus <burnus@net-b.de>
6 1.1 mrg ! and Mentor Embedded.
7 1.1 mrg
8 1.1 mrg ! This file is part of the GNU Offloading and Multi Processing Library
9 1.1 mrg ! (libgomp).
10 1.1 mrg
11 1.1 mrg ! Libgomp is free software; you can redistribute it and/or modify it
12 1.1 mrg ! under the terms of the GNU General Public License as published by
13 1.1 mrg ! the Free Software Foundation; either version 3, or (at your option)
14 1.1 mrg ! any later version.
15 1.1 mrg
16 1.1 mrg ! Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
17 1.1 mrg ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18 1.1 mrg ! FOR A PARTICULAR PURPOSE. See the GNU General Public License for
19 1.1 mrg ! more details.
20 1.1 mrg
21 1.1 mrg ! Under Section 7 of GPL version 3, you are granted additional
22 1.1 mrg ! permissions described in the GCC Runtime Library Exception, version
23 1.1 mrg ! 3.1, as published by the Free Software Foundation.
24 1.1 mrg
25 1.1 mrg ! You should have received a copy of the GNU General Public License and
26 1.1 mrg ! a copy of the GCC Runtime Library Exception along with this program;
27 1.1 mrg ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
28 1.1 mrg ! <http://www.gnu.org/licenses/>.
29 1.1 mrg
30 1.1.1.8 mrg ! Keep in sync with config/accel/openacc.f90 and openacc_lib.h.
31 1.1.1.8 mrg
32 1.1 mrg module openacc_kinds
33 1.1 mrg use iso_fortran_env, only: int32
34 1.1 mrg implicit none
35 1.1 mrg
36 1.1.1.8 mrg public
37 1.1 mrg private :: int32
38 1.1 mrg
39 1.1.1.8 mrg ! When adding items, also update 'public' setting in 'module openacc' below.
40 1.1 mrg
41 1.1.1.8 mrg integer, parameter :: acc_device_kind = int32
42 1.1 mrg
43 1.1 mrg ! Keep in sync with include/gomp-constants.h.
44 1.1.1.8 mrg integer (acc_device_kind), parameter :: acc_device_current = -1
45 1.1 mrg integer (acc_device_kind), parameter :: acc_device_none = 0
46 1.1 mrg integer (acc_device_kind), parameter :: acc_device_default = 1
47 1.1 mrg integer (acc_device_kind), parameter :: acc_device_host = 2
48 1.1.1.2 mrg ! integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3 removed.
49 1.1 mrg integer (acc_device_kind), parameter :: acc_device_not_host = 4
50 1.1 mrg integer (acc_device_kind), parameter :: acc_device_nvidia = 5
51 1.1.1.8 mrg integer (acc_device_kind), parameter :: acc_device_radeon = 8
52 1.1 mrg
53 1.1.1.8 mrg integer, parameter :: acc_device_property_kind = int32
54 1.1.1.8 mrg ! OpenACC 2.6/2.7/3.0 used acc_device_property; in a spec update the
55 1.1.1.8 mrg ! missing '_kind' was added for consistency. For backward compatibility, keep:
56 1.1.1.8 mrg integer, parameter :: acc_device_property = acc_device_property_kind
57 1.1.1.8 mrg
58 1.1.1.8 mrg ! Keep in sync with 'libgomp/libgomp-plugin.h:goacc_property'.
59 1.1.1.8 mrg integer (acc_device_property_kind), parameter :: acc_property_memory = 1
60 1.1.1.8 mrg integer (acc_device_property_kind), parameter :: acc_property_free_memory = 2
61 1.1.1.8 mrg integer (acc_device_property_kind), parameter :: acc_property_name = int(Z'10001')
62 1.1.1.8 mrg integer (acc_device_property_kind), parameter :: acc_property_vendor = int(Z'10002')
63 1.1.1.8 mrg integer (acc_device_property_kind), parameter :: acc_property_driver = int(Z'10003')
64 1.1 mrg
65 1.1 mrg integer, parameter :: acc_handle_kind = int32
66 1.1 mrg
67 1.1 mrg ! Keep in sync with include/gomp-constants.h.
68 1.1 mrg integer (acc_handle_kind), parameter :: acc_async_noval = -1
69 1.1 mrg integer (acc_handle_kind), parameter :: acc_async_sync = -2
70 1.1.1.8 mrg end module openacc_kinds
71 1.1 mrg
72 1.1 mrg module openacc_internal
73 1.1 mrg use openacc_kinds
74 1.1 mrg implicit none
75 1.1 mrg
76 1.1 mrg interface
77 1.1.1.8 mrg function acc_get_num_devices_h (devicetype)
78 1.1 mrg import
79 1.1 mrg integer acc_get_num_devices_h
80 1.1.1.8 mrg integer (acc_device_kind) devicetype
81 1.1 mrg end function
82 1.1 mrg
83 1.1.1.8 mrg subroutine acc_set_device_type_h (devicetype)
84 1.1 mrg import
85 1.1.1.8 mrg integer (acc_device_kind) devicetype
86 1.1 mrg end subroutine
87 1.1 mrg
88 1.1 mrg function acc_get_device_type_h ()
89 1.1 mrg import
90 1.1 mrg integer (acc_device_kind) acc_get_device_type_h
91 1.1 mrg end function
92 1.1 mrg
93 1.1.1.8 mrg subroutine acc_set_device_num_h (devicenum, devicetype)
94 1.1 mrg import
95 1.1.1.8 mrg integer devicenum
96 1.1.1.8 mrg integer (acc_device_kind) devicetype
97 1.1 mrg end subroutine
98 1.1 mrg
99 1.1.1.8 mrg function acc_get_device_num_h (devicetype)
100 1.1 mrg import
101 1.1 mrg integer acc_get_device_num_h
102 1.1.1.8 mrg integer (acc_device_kind) devicetype
103 1.1.1.8 mrg end function
104 1.1.1.8 mrg
105 1.1.1.8 mrg function acc_get_property_h (devicenum, devicetype, property)
106 1.1.1.8 mrg use iso_c_binding, only: c_size_t
107 1.1.1.8 mrg import
108 1.1.1.8 mrg implicit none (type, external)
109 1.1.1.8 mrg integer (c_size_t) :: acc_get_property_h
110 1.1.1.8 mrg integer, value :: devicenum
111 1.1.1.8 mrg integer (acc_device_kind), value :: devicetype
112 1.1.1.8 mrg integer (acc_device_property_kind), value :: property
113 1.1 mrg end function
114 1.1 mrg
115 1.1.1.8 mrg subroutine acc_get_property_string_h (devicenum, devicetype, property, string)
116 1.1.1.8 mrg import
117 1.1.1.8 mrg implicit none (type, external)
118 1.1.1.8 mrg integer, value :: devicenum
119 1.1.1.8 mrg integer (acc_device_kind), value :: devicetype
120 1.1.1.8 mrg integer (acc_device_property_kind), value :: property
121 1.1.1.8 mrg character (*) :: string
122 1.1.1.8 mrg end subroutine
123 1.1.1.8 mrg
124 1.1.1.8 mrg function acc_async_test_h (arg)
125 1.1 mrg logical acc_async_test_h
126 1.1.1.8 mrg integer arg
127 1.1 mrg end function
128 1.1 mrg
129 1.1 mrg function acc_async_test_all_h ()
130 1.1 mrg logical acc_async_test_all_h
131 1.1 mrg end function
132 1.1 mrg
133 1.1.1.8 mrg subroutine acc_wait_h (arg)
134 1.1.1.8 mrg integer arg
135 1.1 mrg end subroutine
136 1.1 mrg
137 1.1.1.8 mrg subroutine acc_wait_async_h (arg, async)
138 1.1.1.8 mrg integer arg, async
139 1.1 mrg end subroutine
140 1.1 mrg
141 1.1 mrg subroutine acc_wait_all_h ()
142 1.1 mrg end subroutine
143 1.1 mrg
144 1.1.1.8 mrg subroutine acc_wait_all_async_h (async)
145 1.1.1.8 mrg integer async
146 1.1 mrg end subroutine
147 1.1 mrg
148 1.1.1.8 mrg subroutine acc_init_h (devicetype)
149 1.1 mrg import
150 1.1.1.8 mrg integer (acc_device_kind) devicetype
151 1.1 mrg end subroutine
152 1.1 mrg
153 1.1.1.8 mrg subroutine acc_shutdown_h (devicetype)
154 1.1 mrg import
155 1.1.1.8 mrg integer (acc_device_kind) devicetype
156 1.1 mrg end subroutine
157 1.1 mrg
158 1.1.1.8 mrg function acc_on_device_h (devicetype)
159 1.1 mrg import
160 1.1.1.8 mrg integer (acc_device_kind) devicetype
161 1.1 mrg logical acc_on_device_h
162 1.1 mrg end function
163 1.1 mrg
164 1.1 mrg subroutine acc_copyin_32_h (a, len)
165 1.1 mrg use iso_c_binding, only: c_int32_t
166 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
167 1.1 mrg type (*), dimension (*) :: a
168 1.1 mrg integer (c_int32_t) len
169 1.1 mrg end subroutine
170 1.1 mrg
171 1.1 mrg subroutine acc_copyin_64_h (a, len)
172 1.1 mrg use iso_c_binding, only: c_int64_t
173 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
174 1.1 mrg type (*), dimension (*) :: a
175 1.1 mrg integer (c_int64_t) len
176 1.1 mrg end subroutine
177 1.1 mrg
178 1.1 mrg subroutine acc_copyin_array_h (a)
179 1.1 mrg type (*), dimension (..), contiguous :: a
180 1.1 mrg end subroutine
181 1.1 mrg
182 1.1 mrg subroutine acc_present_or_copyin_32_h (a, len)
183 1.1 mrg use iso_c_binding, only: c_int32_t
184 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
185 1.1 mrg type (*), dimension (*) :: a
186 1.1 mrg integer (c_int32_t) len
187 1.1 mrg end subroutine
188 1.1 mrg
189 1.1 mrg subroutine acc_present_or_copyin_64_h (a, len)
190 1.1 mrg use iso_c_binding, only: c_int64_t
191 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
192 1.1 mrg type (*), dimension (*) :: a
193 1.1 mrg integer (c_int64_t) len
194 1.1 mrg end subroutine
195 1.1 mrg
196 1.1 mrg subroutine acc_present_or_copyin_array_h (a)
197 1.1 mrg type (*), dimension (..), contiguous :: a
198 1.1 mrg end subroutine
199 1.1 mrg
200 1.1 mrg subroutine acc_create_32_h (a, len)
201 1.1 mrg use iso_c_binding, only: c_int32_t
202 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
203 1.1 mrg type (*), dimension (*) :: a
204 1.1 mrg integer (c_int32_t) len
205 1.1 mrg end subroutine
206 1.1 mrg
207 1.1 mrg subroutine acc_create_64_h (a, len)
208 1.1 mrg use iso_c_binding, only: c_int64_t
209 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
210 1.1 mrg type (*), dimension (*) :: a
211 1.1 mrg integer (c_int64_t) len
212 1.1 mrg end subroutine
213 1.1 mrg
214 1.1 mrg subroutine acc_create_array_h (a)
215 1.1 mrg type (*), dimension (..), contiguous :: a
216 1.1 mrg end subroutine
217 1.1 mrg
218 1.1 mrg subroutine acc_present_or_create_32_h (a, len)
219 1.1 mrg use iso_c_binding, only: c_int32_t
220 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
221 1.1 mrg type (*), dimension (*) :: a
222 1.1 mrg integer (c_int32_t) len
223 1.1 mrg end subroutine
224 1.1 mrg
225 1.1 mrg subroutine acc_present_or_create_64_h (a, len)
226 1.1 mrg use iso_c_binding, only: c_int64_t
227 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
228 1.1 mrg type (*), dimension (*) :: a
229 1.1 mrg integer (c_int64_t) len
230 1.1 mrg end subroutine
231 1.1 mrg
232 1.1 mrg subroutine acc_present_or_create_array_h (a)
233 1.1 mrg type (*), dimension (..), contiguous :: a
234 1.1 mrg end subroutine
235 1.1 mrg
236 1.1 mrg subroutine acc_copyout_32_h (a, len)
237 1.1 mrg use iso_c_binding, only: c_int32_t
238 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
239 1.1 mrg type (*), dimension (*) :: a
240 1.1 mrg integer (c_int32_t) len
241 1.1 mrg end subroutine
242 1.1 mrg
243 1.1 mrg subroutine acc_copyout_64_h (a, len)
244 1.1 mrg use iso_c_binding, only: c_int64_t
245 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
246 1.1 mrg type (*), dimension (*) :: a
247 1.1 mrg integer (c_int64_t) len
248 1.1 mrg end subroutine
249 1.1 mrg
250 1.1 mrg subroutine acc_copyout_array_h (a)
251 1.1 mrg type (*), dimension (..), contiguous :: a
252 1.1 mrg end subroutine
253 1.1 mrg
254 1.1.1.7 mrg subroutine acc_copyout_finalize_32_h (a, len)
255 1.1.1.7 mrg use iso_c_binding, only: c_int32_t
256 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
257 1.1.1.7 mrg type (*), dimension (*) :: a
258 1.1.1.7 mrg integer (c_int32_t) len
259 1.1.1.7 mrg end subroutine
260 1.1.1.7 mrg
261 1.1.1.7 mrg subroutine acc_copyout_finalize_64_h (a, len)
262 1.1.1.7 mrg use iso_c_binding, only: c_int64_t
263 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
264 1.1.1.7 mrg type (*), dimension (*) :: a
265 1.1.1.7 mrg integer (c_int64_t) len
266 1.1.1.7 mrg end subroutine
267 1.1.1.7 mrg
268 1.1.1.7 mrg subroutine acc_copyout_finalize_array_h (a)
269 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
270 1.1.1.7 mrg end subroutine
271 1.1.1.7 mrg
272 1.1 mrg subroutine acc_delete_32_h (a, len)
273 1.1 mrg use iso_c_binding, only: c_int32_t
274 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
275 1.1 mrg type (*), dimension (*) :: a
276 1.1 mrg integer (c_int32_t) len
277 1.1 mrg end subroutine
278 1.1 mrg
279 1.1 mrg subroutine acc_delete_64_h (a, len)
280 1.1 mrg use iso_c_binding, only: c_int64_t
281 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
282 1.1 mrg type (*), dimension (*) :: a
283 1.1 mrg integer (c_int64_t) len
284 1.1 mrg end subroutine
285 1.1 mrg
286 1.1 mrg subroutine acc_delete_array_h (a)
287 1.1 mrg type (*), dimension (..), contiguous :: a
288 1.1 mrg end subroutine
289 1.1 mrg
290 1.1.1.7 mrg subroutine acc_delete_finalize_32_h (a, len)
291 1.1.1.7 mrg use iso_c_binding, only: c_int32_t
292 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
293 1.1.1.7 mrg type (*), dimension (*) :: a
294 1.1.1.7 mrg integer (c_int32_t) len
295 1.1.1.7 mrg end subroutine
296 1.1.1.7 mrg
297 1.1.1.7 mrg subroutine acc_delete_finalize_64_h (a, len)
298 1.1.1.7 mrg use iso_c_binding, only: c_int64_t
299 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
300 1.1.1.7 mrg type (*), dimension (*) :: a
301 1.1.1.7 mrg integer (c_int64_t) len
302 1.1.1.7 mrg end subroutine
303 1.1.1.7 mrg
304 1.1.1.7 mrg subroutine acc_delete_finalize_array_h (a)
305 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
306 1.1.1.7 mrg end subroutine
307 1.1.1.7 mrg
308 1.1 mrg subroutine acc_update_device_32_h (a, len)
309 1.1 mrg use iso_c_binding, only: c_int32_t
310 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
311 1.1 mrg type (*), dimension (*) :: a
312 1.1 mrg integer (c_int32_t) len
313 1.1 mrg end subroutine
314 1.1 mrg
315 1.1 mrg subroutine acc_update_device_64_h (a, len)
316 1.1 mrg use iso_c_binding, only: c_int64_t
317 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
318 1.1 mrg type (*), dimension (*) :: a
319 1.1 mrg integer (c_int64_t) len
320 1.1 mrg end subroutine
321 1.1 mrg
322 1.1 mrg subroutine acc_update_device_array_h (a)
323 1.1 mrg type (*), dimension (..), contiguous :: a
324 1.1 mrg end subroutine
325 1.1 mrg
326 1.1 mrg subroutine acc_update_self_32_h (a, len)
327 1.1 mrg use iso_c_binding, only: c_int32_t
328 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
329 1.1 mrg type (*), dimension (*) :: a
330 1.1 mrg integer (c_int32_t) len
331 1.1 mrg end subroutine
332 1.1 mrg
333 1.1 mrg subroutine acc_update_self_64_h (a, len)
334 1.1 mrg use iso_c_binding, only: c_int64_t
335 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
336 1.1 mrg type (*), dimension (*) :: a
337 1.1 mrg integer (c_int64_t) len
338 1.1 mrg end subroutine
339 1.1 mrg
340 1.1 mrg subroutine acc_update_self_array_h (a)
341 1.1 mrg type (*), dimension (..), contiguous :: a
342 1.1 mrg end subroutine
343 1.1 mrg
344 1.1 mrg function acc_is_present_32_h (a, len)
345 1.1 mrg use iso_c_binding, only: c_int32_t
346 1.1 mrg logical acc_is_present_32_h
347 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
348 1.1 mrg type (*), dimension (*) :: a
349 1.1 mrg integer (c_int32_t) len
350 1.1 mrg end function
351 1.1 mrg
352 1.1 mrg function acc_is_present_64_h (a, len)
353 1.1 mrg use iso_c_binding, only: c_int64_t
354 1.1 mrg logical acc_is_present_64_h
355 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
356 1.1 mrg type (*), dimension (*) :: a
357 1.1 mrg integer (c_int64_t) len
358 1.1 mrg end function
359 1.1 mrg
360 1.1 mrg function acc_is_present_array_h (a)
361 1.1 mrg logical acc_is_present_array_h
362 1.1 mrg type (*), dimension (..), contiguous :: a
363 1.1 mrg end function
364 1.1.1.7 mrg
365 1.1.1.7 mrg subroutine acc_copyin_async_32_h (a, len, async)
366 1.1.1.7 mrg use iso_c_binding, only: c_int32_t
367 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
368 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
369 1.1.1.7 mrg type (*), dimension (*) :: a
370 1.1.1.7 mrg integer (c_int32_t) len
371 1.1.1.7 mrg integer (acc_handle_kind) async
372 1.1.1.7 mrg end subroutine
373 1.1.1.7 mrg
374 1.1.1.7 mrg subroutine acc_copyin_async_64_h (a, len, async)
375 1.1.1.7 mrg use iso_c_binding, only: c_int64_t
376 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
377 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
378 1.1.1.7 mrg type (*), dimension (*) :: a
379 1.1.1.7 mrg integer (c_int64_t) len
380 1.1.1.7 mrg integer (acc_handle_kind) async
381 1.1.1.7 mrg end subroutine
382 1.1.1.7 mrg
383 1.1.1.7 mrg subroutine acc_copyin_async_array_h (a, async)
384 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
385 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
386 1.1.1.7 mrg integer (acc_handle_kind) async
387 1.1.1.7 mrg end subroutine
388 1.1.1.7 mrg
389 1.1.1.7 mrg subroutine acc_create_async_32_h (a, len, async)
390 1.1.1.7 mrg use iso_c_binding, only: c_int32_t
391 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
392 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
393 1.1.1.7 mrg type (*), dimension (*) :: a
394 1.1.1.7 mrg integer (c_int32_t) len
395 1.1.1.7 mrg integer (acc_handle_kind) async
396 1.1.1.7 mrg end subroutine
397 1.1.1.7 mrg
398 1.1.1.7 mrg subroutine acc_create_async_64_h (a, len, async)
399 1.1.1.7 mrg use iso_c_binding, only: c_int64_t
400 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
401 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
402 1.1.1.7 mrg type (*), dimension (*) :: a
403 1.1.1.7 mrg integer (c_int64_t) len
404 1.1.1.7 mrg integer (acc_handle_kind) async
405 1.1.1.7 mrg end subroutine
406 1.1.1.7 mrg
407 1.1.1.7 mrg subroutine acc_create_async_array_h (a, async)
408 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
409 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
410 1.1.1.7 mrg integer (acc_handle_kind) async
411 1.1.1.7 mrg end subroutine
412 1.1.1.7 mrg
413 1.1.1.7 mrg subroutine acc_copyout_async_32_h (a, len, async)
414 1.1.1.7 mrg use iso_c_binding, only: c_int32_t
415 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
416 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
417 1.1.1.7 mrg type (*), dimension (*) :: a
418 1.1.1.7 mrg integer (c_int32_t) len
419 1.1.1.7 mrg integer (acc_handle_kind) async
420 1.1.1.7 mrg end subroutine
421 1.1.1.7 mrg
422 1.1.1.7 mrg subroutine acc_copyout_async_64_h (a, len, async)
423 1.1.1.7 mrg use iso_c_binding, only: c_int64_t
424 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
425 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
426 1.1.1.7 mrg type (*), dimension (*) :: a
427 1.1.1.7 mrg integer (c_int64_t) len
428 1.1.1.7 mrg integer (acc_handle_kind) async
429 1.1.1.7 mrg end subroutine
430 1.1.1.7 mrg
431 1.1.1.7 mrg subroutine acc_copyout_async_array_h (a, async)
432 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
433 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
434 1.1.1.7 mrg integer (acc_handle_kind) async
435 1.1.1.7 mrg end subroutine
436 1.1.1.7 mrg
437 1.1.1.7 mrg subroutine acc_delete_async_32_h (a, len, async)
438 1.1.1.7 mrg use iso_c_binding, only: c_int32_t
439 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
440 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
441 1.1.1.7 mrg type (*), dimension (*) :: a
442 1.1.1.7 mrg integer (c_int32_t) len
443 1.1.1.7 mrg integer (acc_handle_kind) async
444 1.1.1.7 mrg end subroutine
445 1.1.1.7 mrg
446 1.1.1.7 mrg subroutine acc_delete_async_64_h (a, len, async)
447 1.1.1.7 mrg use iso_c_binding, only: c_int64_t
448 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
449 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
450 1.1.1.7 mrg type (*), dimension (*) :: a
451 1.1.1.7 mrg integer (c_int64_t) len
452 1.1.1.7 mrg integer (acc_handle_kind) async
453 1.1.1.7 mrg end subroutine
454 1.1.1.7 mrg
455 1.1.1.7 mrg subroutine acc_delete_async_array_h (a, async)
456 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
457 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
458 1.1.1.7 mrg integer (acc_handle_kind) async
459 1.1.1.7 mrg end subroutine
460 1.1.1.7 mrg
461 1.1.1.7 mrg subroutine acc_update_device_async_32_h (a, len, async)
462 1.1.1.7 mrg use iso_c_binding, only: c_int32_t
463 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
464 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
465 1.1.1.7 mrg type (*), dimension (*) :: a
466 1.1.1.7 mrg integer (c_int32_t) len
467 1.1.1.7 mrg integer (acc_handle_kind) async
468 1.1.1.7 mrg end subroutine
469 1.1.1.7 mrg
470 1.1.1.7 mrg subroutine acc_update_device_async_64_h (a, len, async)
471 1.1.1.7 mrg use iso_c_binding, only: c_int64_t
472 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
473 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
474 1.1.1.7 mrg type (*), dimension (*) :: a
475 1.1.1.7 mrg integer (c_int64_t) len
476 1.1.1.7 mrg integer (acc_handle_kind) async
477 1.1.1.7 mrg end subroutine
478 1.1.1.7 mrg
479 1.1.1.7 mrg subroutine acc_update_device_async_array_h (a, async)
480 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
481 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
482 1.1.1.7 mrg integer (acc_handle_kind) async
483 1.1.1.7 mrg end subroutine
484 1.1.1.7 mrg
485 1.1.1.7 mrg subroutine acc_update_self_async_32_h (a, len, async)
486 1.1.1.7 mrg use iso_c_binding, only: c_int32_t
487 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
488 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
489 1.1.1.7 mrg type (*), dimension (*) :: a
490 1.1.1.7 mrg integer (c_int32_t) len
491 1.1.1.7 mrg integer (acc_handle_kind) async
492 1.1.1.7 mrg end subroutine
493 1.1.1.7 mrg
494 1.1.1.7 mrg subroutine acc_update_self_async_64_h (a, len, async)
495 1.1.1.7 mrg use iso_c_binding, only: c_int64_t
496 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
497 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
498 1.1.1.7 mrg type (*), dimension (*) :: a
499 1.1.1.7 mrg integer (c_int64_t) len
500 1.1.1.7 mrg integer (acc_handle_kind) async
501 1.1.1.7 mrg end subroutine
502 1.1.1.7 mrg
503 1.1.1.7 mrg subroutine acc_update_self_async_array_h (a, async)
504 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
505 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
506 1.1.1.7 mrg integer (acc_handle_kind) async
507 1.1.1.7 mrg end subroutine
508 1.1 mrg end interface
509 1.1 mrg
510 1.1 mrg interface
511 1.1.1.8 mrg function acc_get_num_devices_l (devicetype) &
512 1.1 mrg bind (C, name = "acc_get_num_devices")
513 1.1 mrg use iso_c_binding, only: c_int
514 1.1 mrg integer (c_int) :: acc_get_num_devices_l
515 1.1.1.8 mrg integer (c_int), value :: devicetype
516 1.1 mrg end function
517 1.1 mrg
518 1.1.1.8 mrg subroutine acc_set_device_type_l (devicetype) &
519 1.1 mrg bind (C, name = "acc_set_device_type")
520 1.1 mrg use iso_c_binding, only: c_int
521 1.1.1.8 mrg integer (c_int), value :: devicetype
522 1.1 mrg end subroutine
523 1.1 mrg
524 1.1 mrg function acc_get_device_type_l () &
525 1.1 mrg bind (C, name = "acc_get_device_type")
526 1.1 mrg use iso_c_binding, only: c_int
527 1.1 mrg integer (c_int) :: acc_get_device_type_l
528 1.1 mrg end function
529 1.1 mrg
530 1.1.1.8 mrg subroutine acc_set_device_num_l (devicenum, devicetype) &
531 1.1 mrg bind (C, name = "acc_set_device_num")
532 1.1 mrg use iso_c_binding, only: c_int
533 1.1.1.8 mrg integer (c_int), value :: devicenum, devicetype
534 1.1 mrg end subroutine
535 1.1 mrg
536 1.1.1.8 mrg function acc_get_device_num_l (devicetype) &
537 1.1 mrg bind (C, name = "acc_get_device_num")
538 1.1 mrg use iso_c_binding, only: c_int
539 1.1 mrg integer (c_int) :: acc_get_device_num_l
540 1.1.1.8 mrg integer (c_int), value :: devicetype
541 1.1.1.8 mrg end function
542 1.1.1.8 mrg
543 1.1.1.8 mrg function acc_get_property_l (devicenum, devicetype, property) &
544 1.1.1.8 mrg bind (C, name = "acc_get_property")
545 1.1.1.8 mrg use iso_c_binding, only: c_int, c_size_t
546 1.1.1.8 mrg implicit none (type, external)
547 1.1.1.8 mrg integer (c_size_t) :: acc_get_property_l
548 1.1.1.8 mrg integer (c_int), value :: devicenum
549 1.1.1.8 mrg integer (c_int), value :: devicetype
550 1.1.1.8 mrg integer (c_int), value :: property
551 1.1.1.8 mrg end function
552 1.1.1.8 mrg
553 1.1.1.8 mrg function acc_get_property_string_l (devicenum, devicetype, property) &
554 1.1.1.8 mrg bind (C, name = "acc_get_property_string")
555 1.1.1.8 mrg use iso_c_binding, only: c_int, c_ptr
556 1.1.1.8 mrg implicit none (type, external)
557 1.1.1.8 mrg type (c_ptr) :: acc_get_property_string_l
558 1.1.1.8 mrg integer (c_int), value :: devicenum
559 1.1.1.8 mrg integer (c_int), value :: devicetype
560 1.1.1.8 mrg integer (c_int), value :: property
561 1.1 mrg end function
562 1.1 mrg
563 1.1 mrg function acc_async_test_l (a) &
564 1.1 mrg bind (C, name = "acc_async_test")
565 1.1 mrg use iso_c_binding, only: c_int
566 1.1 mrg integer (c_int) :: acc_async_test_l
567 1.1 mrg integer (c_int), value :: a
568 1.1 mrg end function
569 1.1 mrg
570 1.1 mrg function acc_async_test_all_l () &
571 1.1 mrg bind (C, name = "acc_async_test_all")
572 1.1 mrg use iso_c_binding, only: c_int
573 1.1 mrg integer (c_int) :: acc_async_test_all_l
574 1.1 mrg end function
575 1.1 mrg
576 1.1 mrg subroutine acc_wait_l (a) &
577 1.1 mrg bind (C, name = "acc_wait")
578 1.1 mrg use iso_c_binding, only: c_int
579 1.1 mrg integer (c_int), value :: a
580 1.1 mrg end subroutine
581 1.1 mrg
582 1.1.1.8 mrg subroutine acc_wait_async_l (arg, async) &
583 1.1 mrg bind (C, name = "acc_wait_async")
584 1.1 mrg use iso_c_binding, only: c_int
585 1.1.1.8 mrg integer (c_int), value :: arg, async
586 1.1 mrg end subroutine
587 1.1 mrg
588 1.1 mrg subroutine acc_wait_all_l () &
589 1.1 mrg bind (C, name = "acc_wait_all")
590 1.1 mrg use iso_c_binding, only: c_int
591 1.1 mrg end subroutine
592 1.1 mrg
593 1.1.1.8 mrg subroutine acc_wait_all_async_l (async) &
594 1.1 mrg bind (C, name = "acc_wait_all_async")
595 1.1 mrg use iso_c_binding, only: c_int
596 1.1.1.8 mrg integer (c_int), value :: async
597 1.1 mrg end subroutine
598 1.1 mrg
599 1.1.1.8 mrg subroutine acc_init_l (devicetype) &
600 1.1 mrg bind (C, name = "acc_init")
601 1.1 mrg use iso_c_binding, only: c_int
602 1.1.1.8 mrg integer (c_int), value :: devicetype
603 1.1 mrg end subroutine
604 1.1 mrg
605 1.1.1.8 mrg subroutine acc_shutdown_l (devicetype) &
606 1.1 mrg bind (C, name = "acc_shutdown")
607 1.1 mrg use iso_c_binding, only: c_int
608 1.1.1.8 mrg integer (c_int), value :: devicetype
609 1.1 mrg end subroutine
610 1.1 mrg
611 1.1.1.8 mrg function acc_on_device_l (devicetype) &
612 1.1 mrg bind (C, name = "acc_on_device")
613 1.1 mrg use iso_c_binding, only: c_int
614 1.1 mrg integer (c_int) :: acc_on_device_l
615 1.1.1.8 mrg integer (c_int), value :: devicetype
616 1.1 mrg end function
617 1.1 mrg
618 1.1 mrg subroutine acc_copyin_l (a, len) &
619 1.1 mrg bind (C, name = "acc_copyin")
620 1.1 mrg use iso_c_binding, only: c_size_t
621 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
622 1.1 mrg type (*), dimension (*) :: a
623 1.1 mrg integer (c_size_t), value :: len
624 1.1 mrg end subroutine
625 1.1 mrg
626 1.1 mrg subroutine acc_present_or_copyin_l (a, len) &
627 1.1 mrg bind (C, name = "acc_present_or_copyin")
628 1.1 mrg use iso_c_binding, only: c_size_t
629 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
630 1.1 mrg type (*), dimension (*) :: a
631 1.1 mrg integer (c_size_t), value :: len
632 1.1 mrg end subroutine
633 1.1 mrg
634 1.1 mrg subroutine acc_create_l (a, len) &
635 1.1 mrg bind (C, name = "acc_create")
636 1.1 mrg use iso_c_binding, only: c_size_t
637 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
638 1.1 mrg type (*), dimension (*) :: a
639 1.1 mrg integer (c_size_t), value :: len
640 1.1 mrg end subroutine
641 1.1 mrg
642 1.1 mrg subroutine acc_present_or_create_l (a, len) &
643 1.1 mrg bind (C, name = "acc_present_or_create")
644 1.1 mrg use iso_c_binding, only: c_size_t
645 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
646 1.1 mrg type (*), dimension (*) :: a
647 1.1 mrg integer (c_size_t), value :: len
648 1.1 mrg end subroutine
649 1.1 mrg
650 1.1 mrg subroutine acc_copyout_l (a, len) &
651 1.1 mrg bind (C, name = "acc_copyout")
652 1.1 mrg use iso_c_binding, only: c_size_t
653 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
654 1.1 mrg type (*), dimension (*) :: a
655 1.1 mrg integer (c_size_t), value :: len
656 1.1 mrg end subroutine
657 1.1 mrg
658 1.1.1.7 mrg subroutine acc_copyout_finalize_l (a, len) &
659 1.1.1.7 mrg bind (C, name = "acc_copyout_finalize")
660 1.1.1.7 mrg use iso_c_binding, only: c_size_t
661 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
662 1.1.1.7 mrg type (*), dimension (*) :: a
663 1.1.1.7 mrg integer (c_size_t), value :: len
664 1.1.1.7 mrg end subroutine
665 1.1.1.7 mrg
666 1.1 mrg subroutine acc_delete_l (a, len) &
667 1.1 mrg bind (C, name = "acc_delete")
668 1.1 mrg use iso_c_binding, only: c_size_t
669 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
670 1.1 mrg type (*), dimension (*) :: a
671 1.1 mrg integer (c_size_t), value :: len
672 1.1 mrg end subroutine
673 1.1 mrg
674 1.1.1.7 mrg subroutine acc_delete_finalize_l (a, len) &
675 1.1.1.7 mrg bind (C, name = "acc_delete_finalize")
676 1.1.1.7 mrg use iso_c_binding, only: c_size_t
677 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
678 1.1.1.7 mrg type (*), dimension (*) :: a
679 1.1.1.7 mrg integer (c_size_t), value :: len
680 1.1.1.7 mrg end subroutine
681 1.1.1.7 mrg
682 1.1 mrg subroutine acc_update_device_l (a, len) &
683 1.1 mrg bind (C, name = "acc_update_device")
684 1.1 mrg use iso_c_binding, only: c_size_t
685 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
686 1.1 mrg type (*), dimension (*) :: a
687 1.1 mrg integer (c_size_t), value :: len
688 1.1 mrg end subroutine
689 1.1 mrg
690 1.1 mrg subroutine acc_update_self_l (a, len) &
691 1.1 mrg bind (C, name = "acc_update_self")
692 1.1 mrg use iso_c_binding, only: c_size_t
693 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
694 1.1 mrg type (*), dimension (*) :: a
695 1.1 mrg integer (c_size_t), value :: len
696 1.1 mrg end subroutine
697 1.1 mrg
698 1.1 mrg function acc_is_present_l (a, len) &
699 1.1 mrg bind (C, name = "acc_is_present")
700 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
701 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
702 1.1 mrg integer (c_int32_t) :: acc_is_present_l
703 1.1 mrg type (*), dimension (*) :: a
704 1.1 mrg integer (c_size_t), value :: len
705 1.1 mrg end function
706 1.1.1.7 mrg
707 1.1.1.7 mrg subroutine acc_copyin_async_l (a, len, async) &
708 1.1.1.7 mrg bind (C, name = "acc_copyin_async")
709 1.1.1.7 mrg use iso_c_binding, only: c_size_t, c_int
710 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
711 1.1.1.7 mrg type (*), dimension (*) :: a
712 1.1.1.7 mrg integer (c_size_t), value :: len
713 1.1.1.7 mrg integer (c_int), value :: async
714 1.1.1.7 mrg end subroutine
715 1.1.1.7 mrg
716 1.1.1.7 mrg subroutine acc_create_async_l (a, len, async) &
717 1.1.1.7 mrg bind (C, name = "acc_create_async")
718 1.1.1.7 mrg use iso_c_binding, only: c_size_t, c_int
719 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
720 1.1.1.7 mrg type (*), dimension (*) :: a
721 1.1.1.7 mrg integer (c_size_t), value :: len
722 1.1.1.7 mrg integer (c_int), value :: async
723 1.1.1.7 mrg end subroutine
724 1.1.1.7 mrg
725 1.1.1.7 mrg subroutine acc_copyout_async_l (a, len, async) &
726 1.1.1.7 mrg bind (C, name = "acc_copyout_async")
727 1.1.1.7 mrg use iso_c_binding, only: c_size_t, c_int
728 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
729 1.1.1.7 mrg type (*), dimension (*) :: a
730 1.1.1.7 mrg integer (c_size_t), value :: len
731 1.1.1.7 mrg integer (c_int), value :: async
732 1.1.1.7 mrg end subroutine
733 1.1.1.7 mrg
734 1.1.1.7 mrg subroutine acc_delete_async_l (a, len, async) &
735 1.1.1.7 mrg bind (C, name = "acc_delete_async")
736 1.1.1.7 mrg use iso_c_binding, only: c_size_t, c_int
737 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
738 1.1.1.7 mrg type (*), dimension (*) :: a
739 1.1.1.7 mrg integer (c_size_t), value :: len
740 1.1.1.7 mrg integer (c_int), value :: async
741 1.1.1.7 mrg end subroutine
742 1.1.1.7 mrg
743 1.1.1.7 mrg subroutine acc_update_device_async_l (a, len, async) &
744 1.1.1.7 mrg bind (C, name = "acc_update_device_async")
745 1.1.1.7 mrg use iso_c_binding, only: c_size_t, c_int
746 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
747 1.1.1.7 mrg type (*), dimension (*) :: a
748 1.1.1.7 mrg integer (c_size_t), value :: len
749 1.1.1.7 mrg integer (c_int), value :: async
750 1.1.1.7 mrg end subroutine
751 1.1.1.7 mrg
752 1.1.1.7 mrg subroutine acc_update_self_async_l (a, len, async) &
753 1.1.1.7 mrg bind (C, name = "acc_update_self_async")
754 1.1.1.7 mrg use iso_c_binding, only: c_size_t, c_int
755 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
756 1.1.1.7 mrg type (*), dimension (*) :: a
757 1.1.1.7 mrg integer (c_size_t), value :: len
758 1.1.1.7 mrg integer (c_int), value :: async
759 1.1.1.7 mrg end subroutine
760 1.1 mrg end interface
761 1.1.1.8 mrg end module openacc_internal
762 1.1 mrg
763 1.1 mrg module openacc
764 1.1 mrg use openacc_kinds
765 1.1 mrg use openacc_internal
766 1.1 mrg implicit none
767 1.1 mrg
768 1.1.1.8 mrg private
769 1.1.1.8 mrg
770 1.1.1.8 mrg ! From openacc_kinds
771 1.1.1.8 mrg public :: acc_device_kind
772 1.1.1.8 mrg public :: acc_device_none, acc_device_default, acc_device_host
773 1.1.1.8 mrg public :: acc_device_not_host, acc_device_nvidia, acc_device_radeon
774 1.1.1.8 mrg
775 1.1.1.8 mrg public :: acc_device_property_kind, acc_device_property
776 1.1.1.8 mrg public :: acc_property_memory, acc_property_free_memory
777 1.1.1.8 mrg public :: acc_property_name, acc_property_vendor, acc_property_driver
778 1.1.1.8 mrg
779 1.1.1.8 mrg public :: acc_handle_kind
780 1.1.1.8 mrg public :: acc_async_noval, acc_async_sync
781 1.1.1.8 mrg
782 1.1 mrg public :: openacc_version
783 1.1 mrg
784 1.1 mrg public :: acc_get_num_devices, acc_set_device_type, acc_get_device_type
785 1.1.1.8 mrg public :: acc_set_device_num, acc_get_device_num
786 1.1.1.8 mrg public :: acc_get_property, acc_get_property_string
787 1.1.1.8 mrg public :: acc_async_test, acc_async_test_all
788 1.1.1.6 mrg public :: acc_wait, acc_async_wait, acc_wait_async
789 1.1.1.6 mrg public :: acc_wait_all, acc_async_wait_all, acc_wait_all_async
790 1.1.1.6 mrg public :: acc_init, acc_shutdown, acc_on_device
791 1.1 mrg public :: acc_copyin, acc_present_or_copyin, acc_pcopyin, acc_create
792 1.1 mrg public :: acc_present_or_create, acc_pcreate, acc_copyout, acc_delete
793 1.1 mrg public :: acc_update_device, acc_update_self, acc_is_present
794 1.1.1.7 mrg public :: acc_copyin_async, acc_create_async, acc_copyout_async
795 1.1.1.7 mrg public :: acc_delete_async, acc_update_device_async, acc_update_self_async
796 1.1.1.8 mrg public :: acc_copyout_finalize, acc_delete_finalize
797 1.1 mrg
798 1.1.1.8 mrg integer, parameter :: openacc_version = 201711
799 1.1 mrg
800 1.1 mrg interface acc_get_num_devices
801 1.1 mrg procedure :: acc_get_num_devices_h
802 1.1 mrg end interface
803 1.1 mrg
804 1.1 mrg interface acc_set_device_type
805 1.1 mrg procedure :: acc_set_device_type_h
806 1.1 mrg end interface
807 1.1 mrg
808 1.1 mrg interface acc_get_device_type
809 1.1 mrg procedure :: acc_get_device_type_h
810 1.1 mrg end interface
811 1.1 mrg
812 1.1 mrg interface acc_set_device_num
813 1.1 mrg procedure :: acc_set_device_num_h
814 1.1 mrg end interface
815 1.1 mrg
816 1.1 mrg interface acc_get_device_num
817 1.1 mrg procedure :: acc_get_device_num_h
818 1.1 mrg end interface
819 1.1 mrg
820 1.1.1.8 mrg interface acc_get_property
821 1.1.1.8 mrg procedure :: acc_get_property_h
822 1.1.1.8 mrg end interface
823 1.1.1.8 mrg
824 1.1.1.8 mrg interface acc_get_property_string
825 1.1.1.8 mrg procedure :: acc_get_property_string_h
826 1.1.1.8 mrg end interface
827 1.1.1.8 mrg
828 1.1 mrg interface acc_async_test
829 1.1 mrg procedure :: acc_async_test_h
830 1.1 mrg end interface
831 1.1 mrg
832 1.1 mrg interface acc_async_test_all
833 1.1 mrg procedure :: acc_async_test_all_h
834 1.1 mrg end interface
835 1.1 mrg
836 1.1 mrg interface acc_wait
837 1.1 mrg procedure :: acc_wait_h
838 1.1 mrg end interface
839 1.1 mrg
840 1.1.1.6 mrg ! acc_async_wait is an OpenACC 1.0 compatibility name for acc_wait.
841 1.1.1.6 mrg interface acc_async_wait
842 1.1.1.6 mrg procedure :: acc_wait_h
843 1.1.1.6 mrg end interface
844 1.1.1.6 mrg
845 1.1 mrg interface acc_wait_async
846 1.1 mrg procedure :: acc_wait_async_h
847 1.1 mrg end interface
848 1.1 mrg
849 1.1 mrg interface acc_wait_all
850 1.1 mrg procedure :: acc_wait_all_h
851 1.1 mrg end interface
852 1.1 mrg
853 1.1.1.6 mrg ! acc_async_wait_all is an OpenACC 1.0 compatibility name for acc_wait_all.
854 1.1.1.6 mrg interface acc_async_wait_all
855 1.1.1.6 mrg procedure :: acc_wait_all_h
856 1.1.1.6 mrg end interface
857 1.1.1.6 mrg
858 1.1 mrg interface acc_wait_all_async
859 1.1 mrg procedure :: acc_wait_all_async_h
860 1.1 mrg end interface
861 1.1 mrg
862 1.1 mrg interface acc_init
863 1.1 mrg procedure :: acc_init_h
864 1.1 mrg end interface
865 1.1 mrg
866 1.1 mrg interface acc_shutdown
867 1.1 mrg procedure :: acc_shutdown_h
868 1.1 mrg end interface
869 1.1 mrg
870 1.1 mrg interface acc_on_device
871 1.1 mrg procedure :: acc_on_device_h
872 1.1 mrg end interface
873 1.1 mrg
874 1.1 mrg ! acc_malloc: Only available in C/C++
875 1.1 mrg ! acc_free: Only available in C/C++
876 1.1 mrg
877 1.1 mrg ! As vendor extension, the following code supports both 32bit and 64bit
878 1.1 mrg ! arguments for "size"; the OpenACC standard only permits default-kind
879 1.1 mrg ! integers, which are of kind 4 (i.e. 32 bits).
880 1.1 mrg ! Additionally, the two-argument version also takes arrays as argument.
881 1.1 mrg ! and the one argument version also scalars. Note that the code assumes
882 1.1 mrg ! that the arrays are contiguous.
883 1.1 mrg
884 1.1 mrg interface acc_copyin
885 1.1 mrg procedure :: acc_copyin_32_h
886 1.1 mrg procedure :: acc_copyin_64_h
887 1.1 mrg procedure :: acc_copyin_array_h
888 1.1 mrg end interface
889 1.1 mrg
890 1.1 mrg interface acc_present_or_copyin
891 1.1 mrg procedure :: acc_present_or_copyin_32_h
892 1.1 mrg procedure :: acc_present_or_copyin_64_h
893 1.1 mrg procedure :: acc_present_or_copyin_array_h
894 1.1 mrg end interface
895 1.1 mrg
896 1.1 mrg interface acc_pcopyin
897 1.1 mrg procedure :: acc_present_or_copyin_32_h
898 1.1 mrg procedure :: acc_present_or_copyin_64_h
899 1.1 mrg procedure :: acc_present_or_copyin_array_h
900 1.1 mrg end interface
901 1.1 mrg
902 1.1 mrg interface acc_create
903 1.1 mrg procedure :: acc_create_32_h
904 1.1 mrg procedure :: acc_create_64_h
905 1.1 mrg procedure :: acc_create_array_h
906 1.1 mrg end interface
907 1.1 mrg
908 1.1 mrg interface acc_present_or_create
909 1.1 mrg procedure :: acc_present_or_create_32_h
910 1.1 mrg procedure :: acc_present_or_create_64_h
911 1.1 mrg procedure :: acc_present_or_create_array_h
912 1.1 mrg end interface
913 1.1 mrg
914 1.1 mrg interface acc_pcreate
915 1.1 mrg procedure :: acc_present_or_create_32_h
916 1.1 mrg procedure :: acc_present_or_create_64_h
917 1.1 mrg procedure :: acc_present_or_create_array_h
918 1.1 mrg end interface
919 1.1 mrg
920 1.1 mrg interface acc_copyout
921 1.1 mrg procedure :: acc_copyout_32_h
922 1.1 mrg procedure :: acc_copyout_64_h
923 1.1 mrg procedure :: acc_copyout_array_h
924 1.1 mrg end interface
925 1.1 mrg
926 1.1.1.7 mrg interface acc_copyout_finalize
927 1.1.1.7 mrg procedure :: acc_copyout_finalize_32_h
928 1.1.1.7 mrg procedure :: acc_copyout_finalize_64_h
929 1.1.1.7 mrg procedure :: acc_copyout_finalize_array_h
930 1.1.1.7 mrg end interface
931 1.1.1.7 mrg
932 1.1 mrg interface acc_delete
933 1.1 mrg procedure :: acc_delete_32_h
934 1.1 mrg procedure :: acc_delete_64_h
935 1.1 mrg procedure :: acc_delete_array_h
936 1.1 mrg end interface
937 1.1 mrg
938 1.1.1.7 mrg interface acc_delete_finalize
939 1.1.1.7 mrg procedure :: acc_delete_finalize_32_h
940 1.1.1.7 mrg procedure :: acc_delete_finalize_64_h
941 1.1.1.7 mrg procedure :: acc_delete_finalize_array_h
942 1.1.1.7 mrg end interface
943 1.1.1.7 mrg
944 1.1 mrg interface acc_update_device
945 1.1 mrg procedure :: acc_update_device_32_h
946 1.1 mrg procedure :: acc_update_device_64_h
947 1.1 mrg procedure :: acc_update_device_array_h
948 1.1 mrg end interface
949 1.1 mrg
950 1.1 mrg interface acc_update_self
951 1.1 mrg procedure :: acc_update_self_32_h
952 1.1 mrg procedure :: acc_update_self_64_h
953 1.1 mrg procedure :: acc_update_self_array_h
954 1.1 mrg end interface
955 1.1 mrg
956 1.1 mrg ! acc_map_data: Only available in C/C++
957 1.1 mrg ! acc_unmap_data: Only available in C/C++
958 1.1 mrg ! acc_deviceptr: Only available in C/C++
959 1.1 mrg ! acc_hostptr: Only available in C/C++
960 1.1 mrg
961 1.1 mrg interface acc_is_present
962 1.1 mrg procedure :: acc_is_present_32_h
963 1.1 mrg procedure :: acc_is_present_64_h
964 1.1 mrg procedure :: acc_is_present_array_h
965 1.1 mrg end interface
966 1.1 mrg
967 1.1 mrg ! acc_memcpy_to_device: Only available in C/C++
968 1.1 mrg ! acc_memcpy_from_device: Only available in C/C++
969 1.1 mrg
970 1.1.1.7 mrg interface acc_copyin_async
971 1.1.1.7 mrg procedure :: acc_copyin_async_32_h
972 1.1.1.7 mrg procedure :: acc_copyin_async_64_h
973 1.1.1.7 mrg procedure :: acc_copyin_async_array_h
974 1.1.1.7 mrg end interface
975 1.1.1.7 mrg
976 1.1.1.7 mrg interface acc_create_async
977 1.1.1.7 mrg procedure :: acc_create_async_32_h
978 1.1.1.7 mrg procedure :: acc_create_async_64_h
979 1.1.1.7 mrg procedure :: acc_create_async_array_h
980 1.1.1.7 mrg end interface
981 1.1.1.7 mrg
982 1.1.1.7 mrg interface acc_copyout_async
983 1.1.1.7 mrg procedure :: acc_copyout_async_32_h
984 1.1.1.7 mrg procedure :: acc_copyout_async_64_h
985 1.1.1.7 mrg procedure :: acc_copyout_async_array_h
986 1.1.1.7 mrg end interface
987 1.1.1.7 mrg
988 1.1.1.7 mrg interface acc_delete_async
989 1.1.1.7 mrg procedure :: acc_delete_async_32_h
990 1.1.1.7 mrg procedure :: acc_delete_async_64_h
991 1.1.1.7 mrg procedure :: acc_delete_async_array_h
992 1.1.1.7 mrg end interface
993 1.1.1.7 mrg
994 1.1.1.7 mrg interface acc_update_device_async
995 1.1.1.7 mrg procedure :: acc_update_device_async_32_h
996 1.1.1.7 mrg procedure :: acc_update_device_async_64_h
997 1.1.1.7 mrg procedure :: acc_update_device_async_array_h
998 1.1.1.7 mrg end interface
999 1.1.1.7 mrg
1000 1.1.1.7 mrg interface acc_update_self_async
1001 1.1.1.7 mrg procedure :: acc_update_self_async_32_h
1002 1.1.1.7 mrg procedure :: acc_update_self_async_64_h
1003 1.1.1.7 mrg procedure :: acc_update_self_async_array_h
1004 1.1.1.7 mrg end interface
1005 1.1.1.7 mrg
1006 1.1.1.8 mrg end module openacc
1007 1.1 mrg
1008 1.1.1.8 mrg function acc_get_num_devices_h (devicetype)
1009 1.1 mrg use openacc_internal, only: acc_get_num_devices_l
1010 1.1 mrg use openacc_kinds
1011 1.1 mrg integer acc_get_num_devices_h
1012 1.1.1.8 mrg integer (acc_device_kind) devicetype
1013 1.1.1.8 mrg acc_get_num_devices_h = acc_get_num_devices_l (devicetype)
1014 1.1 mrg end function
1015 1.1 mrg
1016 1.1.1.8 mrg subroutine acc_set_device_type_h (devicetype)
1017 1.1 mrg use openacc_internal, only: acc_set_device_type_l
1018 1.1 mrg use openacc_kinds
1019 1.1.1.8 mrg integer (acc_device_kind) devicetype
1020 1.1.1.8 mrg call acc_set_device_type_l (devicetype)
1021 1.1 mrg end subroutine
1022 1.1 mrg
1023 1.1 mrg function acc_get_device_type_h ()
1024 1.1 mrg use openacc_internal, only: acc_get_device_type_l
1025 1.1 mrg use openacc_kinds
1026 1.1 mrg integer (acc_device_kind) acc_get_device_type_h
1027 1.1 mrg acc_get_device_type_h = acc_get_device_type_l ()
1028 1.1 mrg end function
1029 1.1 mrg
1030 1.1.1.8 mrg subroutine acc_set_device_num_h (devicenum, devicetype)
1031 1.1 mrg use openacc_internal, only: acc_set_device_num_l
1032 1.1 mrg use openacc_kinds
1033 1.1.1.8 mrg integer devicenum
1034 1.1.1.8 mrg integer (acc_device_kind) devicetype
1035 1.1.1.8 mrg call acc_set_device_num_l (devicenum, devicetype)
1036 1.1 mrg end subroutine
1037 1.1 mrg
1038 1.1.1.8 mrg function acc_get_device_num_h (devicetype)
1039 1.1 mrg use openacc_internal, only: acc_get_device_num_l
1040 1.1 mrg use openacc_kinds
1041 1.1 mrg integer acc_get_device_num_h
1042 1.1.1.8 mrg integer (acc_device_kind) devicetype
1043 1.1.1.8 mrg acc_get_device_num_h = acc_get_device_num_l (devicetype)
1044 1.1.1.8 mrg end function
1045 1.1.1.8 mrg
1046 1.1.1.8 mrg function acc_get_property_h (devicenum, devicetype, property)
1047 1.1.1.8 mrg use iso_c_binding, only: c_size_t
1048 1.1.1.8 mrg use openacc_internal, only: acc_get_property_l
1049 1.1.1.8 mrg use openacc_kinds
1050 1.1.1.8 mrg implicit none (type, external)
1051 1.1.1.8 mrg integer (c_size_t) :: acc_get_property_h
1052 1.1.1.8 mrg integer, value :: devicenum
1053 1.1.1.8 mrg integer (acc_device_kind), value :: devicetype
1054 1.1.1.8 mrg integer (acc_device_property_kind), value :: property
1055 1.1.1.8 mrg acc_get_property_h = acc_get_property_l (devicenum, devicetype, property)
1056 1.1 mrg end function
1057 1.1 mrg
1058 1.1.1.8 mrg subroutine acc_get_property_string_h (devicenum, devicetype, property, string)
1059 1.1.1.8 mrg use iso_c_binding, only: c_char, c_size_t, c_ptr, c_f_pointer, c_associated
1060 1.1.1.8 mrg use openacc_internal, only: acc_get_property_string_l
1061 1.1.1.8 mrg use openacc_kinds
1062 1.1.1.8 mrg implicit none (type, external)
1063 1.1.1.8 mrg integer, value :: devicenum
1064 1.1.1.8 mrg integer (acc_device_kind), value :: devicetype
1065 1.1.1.8 mrg integer (acc_device_property_kind), value :: property
1066 1.1.1.8 mrg character (*) :: string
1067 1.1.1.8 mrg
1068 1.1.1.8 mrg type (c_ptr) :: cptr
1069 1.1.1.8 mrg integer(c_size_t) :: clen, slen, i
1070 1.1.1.8 mrg character (kind=c_char, len=1), pointer, contiguous :: sptr (:)
1071 1.1.1.8 mrg
1072 1.1.1.8 mrg interface
1073 1.1.1.8 mrg function strlen (s) bind (C, name = "strlen")
1074 1.1.1.8 mrg use iso_c_binding, only: c_ptr, c_size_t
1075 1.1.1.8 mrg type (c_ptr), intent(in), value :: s
1076 1.1.1.8 mrg integer (c_size_t) :: strlen
1077 1.1.1.8 mrg end function strlen
1078 1.1.1.8 mrg end interface
1079 1.1.1.8 mrg
1080 1.1.1.8 mrg cptr = acc_get_property_string_l (devicenum, devicetype, property)
1081 1.1.1.8 mrg string = ""
1082 1.1.1.8 mrg if (.not. c_associated (cptr)) then
1083 1.1.1.8 mrg return
1084 1.1.1.8 mrg end if
1085 1.1.1.8 mrg
1086 1.1.1.8 mrg clen = strlen (cptr)
1087 1.1.1.8 mrg call c_f_pointer (cptr, sptr, [clen])
1088 1.1.1.8 mrg
1089 1.1.1.8 mrg slen = min (clen, len (string, kind=c_size_t))
1090 1.1.1.8 mrg do i = 1, slen
1091 1.1.1.8 mrg string (i:i) = sptr (i)
1092 1.1.1.8 mrg end do
1093 1.1.1.8 mrg end subroutine
1094 1.1.1.8 mrg
1095 1.1.1.8 mrg function acc_async_test_h (arg)
1096 1.1 mrg use openacc_internal, only: acc_async_test_l
1097 1.1 mrg logical acc_async_test_h
1098 1.1.1.8 mrg integer arg
1099 1.1.1.8 mrg acc_async_test_h = acc_async_test_l (arg) /= 0
1100 1.1 mrg end function
1101 1.1 mrg
1102 1.1 mrg function acc_async_test_all_h ()
1103 1.1 mrg use openacc_internal, only: acc_async_test_all_l
1104 1.1 mrg logical acc_async_test_all_h
1105 1.1.1.8 mrg acc_async_test_all_h = acc_async_test_all_l () /= 0
1106 1.1 mrg end function
1107 1.1 mrg
1108 1.1.1.8 mrg subroutine acc_wait_h (arg)
1109 1.1 mrg use openacc_internal, only: acc_wait_l
1110 1.1.1.8 mrg integer arg
1111 1.1.1.8 mrg call acc_wait_l (arg)
1112 1.1 mrg end subroutine
1113 1.1 mrg
1114 1.1.1.8 mrg subroutine acc_wait_async_h (arg, async)
1115 1.1 mrg use openacc_internal, only: acc_wait_async_l
1116 1.1.1.8 mrg integer arg, async
1117 1.1.1.8 mrg call acc_wait_async_l (arg, async)
1118 1.1 mrg end subroutine
1119 1.1 mrg
1120 1.1 mrg subroutine acc_wait_all_h ()
1121 1.1 mrg use openacc_internal, only: acc_wait_all_l
1122 1.1 mrg call acc_wait_all_l ()
1123 1.1 mrg end subroutine
1124 1.1 mrg
1125 1.1.1.8 mrg subroutine acc_wait_all_async_h (async)
1126 1.1 mrg use openacc_internal, only: acc_wait_all_async_l
1127 1.1.1.8 mrg integer async
1128 1.1.1.8 mrg call acc_wait_all_async_l (async)
1129 1.1 mrg end subroutine
1130 1.1 mrg
1131 1.1.1.8 mrg subroutine acc_init_h (devicetype)
1132 1.1 mrg use openacc_internal, only: acc_init_l
1133 1.1 mrg use openacc_kinds
1134 1.1.1.8 mrg integer (acc_device_kind) devicetype
1135 1.1.1.8 mrg call acc_init_l (devicetype)
1136 1.1 mrg end subroutine
1137 1.1 mrg
1138 1.1.1.8 mrg subroutine acc_shutdown_h (devicetype)
1139 1.1 mrg use openacc_internal, only: acc_shutdown_l
1140 1.1 mrg use openacc_kinds
1141 1.1.1.8 mrg integer (acc_device_kind) devicetype
1142 1.1.1.8 mrg call acc_shutdown_l (devicetype)
1143 1.1 mrg end subroutine
1144 1.1 mrg
1145 1.1.1.8 mrg function acc_on_device_h (devicetype)
1146 1.1 mrg use openacc_internal, only: acc_on_device_l
1147 1.1 mrg use openacc_kinds
1148 1.1.1.8 mrg integer (acc_device_kind) devicetype
1149 1.1 mrg logical acc_on_device_h
1150 1.1.1.8 mrg acc_on_device_h = acc_on_device_l (devicetype) /= 0
1151 1.1 mrg end function
1152 1.1 mrg
1153 1.1 mrg subroutine acc_copyin_32_h (a, len)
1154 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
1155 1.1 mrg use openacc_internal, only: acc_copyin_l
1156 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1157 1.1 mrg type (*), dimension (*) :: a
1158 1.1 mrg integer (c_int32_t) len
1159 1.1 mrg call acc_copyin_l (a, int (len, kind = c_size_t))
1160 1.1 mrg end subroutine
1161 1.1 mrg
1162 1.1 mrg subroutine acc_copyin_64_h (a, len)
1163 1.1 mrg use iso_c_binding, only: c_int64_t, c_size_t
1164 1.1 mrg use openacc_internal, only: acc_copyin_l
1165 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1166 1.1 mrg type (*), dimension (*) :: a
1167 1.1 mrg integer (c_int64_t) len
1168 1.1 mrg call acc_copyin_l (a, int (len, kind = c_size_t))
1169 1.1 mrg end subroutine
1170 1.1 mrg
1171 1.1 mrg subroutine acc_copyin_array_h (a)
1172 1.1 mrg use openacc_internal, only: acc_copyin_l
1173 1.1 mrg type (*), dimension (..), contiguous :: a
1174 1.1 mrg call acc_copyin_l (a, sizeof (a))
1175 1.1 mrg end subroutine
1176 1.1 mrg
1177 1.1 mrg subroutine acc_present_or_copyin_32_h (a, len)
1178 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
1179 1.1 mrg use openacc_internal, only: acc_present_or_copyin_l
1180 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1181 1.1 mrg type (*), dimension (*) :: a
1182 1.1 mrg integer (c_int32_t) len
1183 1.1 mrg call acc_present_or_copyin_l (a, int (len, kind = c_size_t))
1184 1.1 mrg end subroutine
1185 1.1 mrg
1186 1.1 mrg subroutine acc_present_or_copyin_64_h (a, len)
1187 1.1 mrg use iso_c_binding, only: c_int64_t, c_size_t
1188 1.1 mrg use openacc_internal, only: acc_present_or_copyin_l
1189 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1190 1.1 mrg type (*), dimension (*) :: a
1191 1.1 mrg integer (c_int64_t) len
1192 1.1 mrg call acc_present_or_copyin_l (a, int (len, kind = c_size_t))
1193 1.1 mrg end subroutine
1194 1.1 mrg
1195 1.1 mrg subroutine acc_present_or_copyin_array_h (a)
1196 1.1 mrg use openacc_internal, only: acc_present_or_copyin_l
1197 1.1 mrg type (*), dimension (..), contiguous :: a
1198 1.1 mrg call acc_present_or_copyin_l (a, sizeof (a))
1199 1.1 mrg end subroutine
1200 1.1 mrg
1201 1.1 mrg subroutine acc_create_32_h (a, len)
1202 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
1203 1.1 mrg use openacc_internal, only: acc_create_l
1204 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1205 1.1 mrg type (*), dimension (*) :: a
1206 1.1 mrg integer (c_int32_t) len
1207 1.1 mrg call acc_create_l (a, int (len, kind = c_size_t))
1208 1.1 mrg end subroutine
1209 1.1 mrg
1210 1.1 mrg subroutine acc_create_64_h (a, len)
1211 1.1 mrg use iso_c_binding, only: c_int64_t, c_size_t
1212 1.1 mrg use openacc_internal, only: acc_create_l
1213 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1214 1.1 mrg type (*), dimension (*) :: a
1215 1.1 mrg integer (c_int64_t) len
1216 1.1 mrg call acc_create_l (a, int (len, kind = c_size_t))
1217 1.1 mrg end subroutine
1218 1.1 mrg
1219 1.1 mrg subroutine acc_create_array_h (a)
1220 1.1 mrg use openacc_internal, only: acc_create_l
1221 1.1 mrg type (*), dimension (..), contiguous :: a
1222 1.1 mrg call acc_create_l (a, sizeof (a))
1223 1.1 mrg end subroutine
1224 1.1 mrg
1225 1.1 mrg subroutine acc_present_or_create_32_h (a, len)
1226 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
1227 1.1 mrg use openacc_internal, only: acc_present_or_create_l
1228 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1229 1.1 mrg type (*), dimension (*) :: a
1230 1.1 mrg integer (c_int32_t) len
1231 1.1 mrg call acc_present_or_create_l (a, int (len, kind = c_size_t))
1232 1.1 mrg end subroutine
1233 1.1 mrg
1234 1.1 mrg subroutine acc_present_or_create_64_h (a, len)
1235 1.1 mrg use iso_c_binding, only: c_int64_t, c_size_t
1236 1.1 mrg use openacc_internal, only: acc_present_or_create_l
1237 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1238 1.1 mrg type (*), dimension (*) :: a
1239 1.1 mrg integer (c_int64_t) len
1240 1.1 mrg call acc_present_or_create_l (a, int (len, kind = c_size_t))
1241 1.1 mrg end subroutine
1242 1.1 mrg
1243 1.1 mrg subroutine acc_present_or_create_array_h (a)
1244 1.1 mrg use openacc_internal, only: acc_present_or_create_l
1245 1.1 mrg type (*), dimension (..), contiguous :: a
1246 1.1 mrg call acc_present_or_create_l (a, sizeof (a))
1247 1.1 mrg end subroutine
1248 1.1 mrg
1249 1.1 mrg subroutine acc_copyout_32_h (a, len)
1250 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
1251 1.1 mrg use openacc_internal, only: acc_copyout_l
1252 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1253 1.1 mrg type (*), dimension (*) :: a
1254 1.1 mrg integer (c_int32_t) len
1255 1.1 mrg call acc_copyout_l (a, int (len, kind = c_size_t))
1256 1.1 mrg end subroutine
1257 1.1 mrg
1258 1.1 mrg subroutine acc_copyout_64_h (a, len)
1259 1.1 mrg use iso_c_binding, only: c_int64_t, c_size_t
1260 1.1 mrg use openacc_internal, only: acc_copyout_l
1261 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1262 1.1 mrg type (*), dimension (*) :: a
1263 1.1 mrg integer (c_int64_t) len
1264 1.1 mrg call acc_copyout_l (a, int (len, kind = c_size_t))
1265 1.1 mrg end subroutine
1266 1.1 mrg
1267 1.1 mrg subroutine acc_copyout_array_h (a)
1268 1.1 mrg use openacc_internal, only: acc_copyout_l
1269 1.1 mrg type (*), dimension (..), contiguous :: a
1270 1.1 mrg call acc_copyout_l (a, sizeof (a))
1271 1.1 mrg end subroutine
1272 1.1 mrg
1273 1.1.1.7 mrg subroutine acc_copyout_finalize_32_h (a, len)
1274 1.1.1.7 mrg use iso_c_binding, only: c_int32_t, c_size_t
1275 1.1.1.7 mrg use openacc_internal, only: acc_copyout_finalize_l
1276 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1277 1.1.1.7 mrg type (*), dimension (*) :: a
1278 1.1.1.7 mrg integer (c_int32_t) len
1279 1.1.1.7 mrg call acc_copyout_finalize_l (a, int (len, kind = c_size_t))
1280 1.1.1.7 mrg end subroutine
1281 1.1.1.7 mrg
1282 1.1.1.7 mrg subroutine acc_copyout_finalize_64_h (a, len)
1283 1.1.1.7 mrg use iso_c_binding, only: c_int64_t, c_size_t
1284 1.1.1.7 mrg use openacc_internal, only: acc_copyout_finalize_l
1285 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1286 1.1.1.7 mrg type (*), dimension (*) :: a
1287 1.1.1.7 mrg integer (c_int64_t) len
1288 1.1.1.7 mrg call acc_copyout_finalize_l (a, int (len, kind = c_size_t))
1289 1.1.1.7 mrg end subroutine
1290 1.1.1.7 mrg
1291 1.1.1.7 mrg subroutine acc_copyout_finalize_array_h (a)
1292 1.1.1.7 mrg use openacc_internal, only: acc_copyout_finalize_l
1293 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
1294 1.1.1.7 mrg call acc_copyout_finalize_l (a, sizeof (a))
1295 1.1.1.7 mrg end subroutine
1296 1.1.1.7 mrg
1297 1.1 mrg subroutine acc_delete_32_h (a, len)
1298 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
1299 1.1 mrg use openacc_internal, only: acc_delete_l
1300 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1301 1.1 mrg type (*), dimension (*) :: a
1302 1.1 mrg integer (c_int32_t) len
1303 1.1 mrg call acc_delete_l (a, int (len, kind = c_size_t))
1304 1.1 mrg end subroutine
1305 1.1 mrg
1306 1.1 mrg subroutine acc_delete_64_h (a, len)
1307 1.1 mrg use iso_c_binding, only: c_int64_t, c_size_t
1308 1.1 mrg use openacc_internal, only: acc_delete_l
1309 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1310 1.1 mrg type (*), dimension (*) :: a
1311 1.1 mrg integer (c_int64_t) len
1312 1.1 mrg call acc_delete_l (a, int (len, kind = c_size_t))
1313 1.1 mrg end subroutine
1314 1.1 mrg
1315 1.1 mrg subroutine acc_delete_array_h (a)
1316 1.1 mrg use openacc_internal, only: acc_delete_l
1317 1.1 mrg type (*), dimension (..), contiguous :: a
1318 1.1 mrg call acc_delete_l (a, sizeof (a))
1319 1.1 mrg end subroutine
1320 1.1 mrg
1321 1.1.1.7 mrg subroutine acc_delete_finalize_32_h (a, len)
1322 1.1.1.7 mrg use iso_c_binding, only: c_int32_t, c_size_t
1323 1.1.1.7 mrg use openacc_internal, only: acc_delete_finalize_l
1324 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1325 1.1.1.7 mrg type (*), dimension (*) :: a
1326 1.1.1.7 mrg integer (c_int32_t) len
1327 1.1.1.7 mrg call acc_delete_finalize_l (a, int (len, kind = c_size_t))
1328 1.1.1.7 mrg end subroutine
1329 1.1.1.7 mrg
1330 1.1.1.7 mrg subroutine acc_delete_finalize_64_h (a, len)
1331 1.1.1.7 mrg use iso_c_binding, only: c_int64_t, c_size_t
1332 1.1.1.7 mrg use openacc_internal, only: acc_delete_finalize_l
1333 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1334 1.1.1.7 mrg type (*), dimension (*) :: a
1335 1.1.1.7 mrg integer (c_int64_t) len
1336 1.1.1.7 mrg call acc_delete_finalize_l (a, int (len, kind = c_size_t))
1337 1.1.1.7 mrg end subroutine
1338 1.1.1.7 mrg
1339 1.1.1.7 mrg subroutine acc_delete_finalize_array_h (a)
1340 1.1.1.7 mrg use openacc_internal, only: acc_delete_finalize_l
1341 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
1342 1.1.1.7 mrg call acc_delete_finalize_l (a, sizeof (a))
1343 1.1.1.7 mrg end subroutine
1344 1.1.1.7 mrg
1345 1.1 mrg subroutine acc_update_device_32_h (a, len)
1346 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
1347 1.1 mrg use openacc_internal, only: acc_update_device_l
1348 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1349 1.1 mrg type (*), dimension (*) :: a
1350 1.1 mrg integer (c_int32_t) len
1351 1.1 mrg call acc_update_device_l (a, int (len, kind = c_size_t))
1352 1.1 mrg end subroutine
1353 1.1 mrg
1354 1.1 mrg subroutine acc_update_device_64_h (a, len)
1355 1.1 mrg use iso_c_binding, only: c_int64_t, c_size_t
1356 1.1 mrg use openacc_internal, only: acc_update_device_l
1357 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1358 1.1 mrg type (*), dimension (*) :: a
1359 1.1 mrg integer (c_int64_t) len
1360 1.1 mrg call acc_update_device_l (a, int (len, kind = c_size_t))
1361 1.1 mrg end subroutine
1362 1.1 mrg
1363 1.1 mrg subroutine acc_update_device_array_h (a)
1364 1.1 mrg use openacc_internal, only: acc_update_device_l
1365 1.1 mrg type (*), dimension (..), contiguous :: a
1366 1.1 mrg call acc_update_device_l (a, sizeof (a))
1367 1.1 mrg end subroutine
1368 1.1 mrg
1369 1.1 mrg subroutine acc_update_self_32_h (a, len)
1370 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
1371 1.1 mrg use openacc_internal, only: acc_update_self_l
1372 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1373 1.1 mrg type (*), dimension (*) :: a
1374 1.1 mrg integer (c_int32_t) len
1375 1.1 mrg call acc_update_self_l (a, int (len, kind = c_size_t))
1376 1.1 mrg end subroutine
1377 1.1 mrg
1378 1.1 mrg subroutine acc_update_self_64_h (a, len)
1379 1.1 mrg use iso_c_binding, only: c_int64_t, c_size_t
1380 1.1 mrg use openacc_internal, only: acc_update_self_l
1381 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1382 1.1 mrg type (*), dimension (*) :: a
1383 1.1 mrg integer (c_int64_t) len
1384 1.1 mrg call acc_update_self_l (a, int (len, kind = c_size_t))
1385 1.1 mrg end subroutine
1386 1.1 mrg
1387 1.1 mrg subroutine acc_update_self_array_h (a)
1388 1.1 mrg use openacc_internal, only: acc_update_self_l
1389 1.1 mrg type (*), dimension (..), contiguous :: a
1390 1.1 mrg call acc_update_self_l (a, sizeof (a))
1391 1.1 mrg end subroutine
1392 1.1 mrg
1393 1.1 mrg function acc_is_present_32_h (a, len)
1394 1.1 mrg use iso_c_binding, only: c_int32_t, c_size_t
1395 1.1 mrg use openacc_internal, only: acc_is_present_l
1396 1.1 mrg logical acc_is_present_32_h
1397 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1398 1.1 mrg type (*), dimension (*) :: a
1399 1.1 mrg integer (c_int32_t) len
1400 1.1.1.8 mrg acc_is_present_32_h = acc_is_present_l (a, int (len, kind = c_size_t)) /= 0
1401 1.1 mrg end function
1402 1.1 mrg
1403 1.1 mrg function acc_is_present_64_h (a, len)
1404 1.1 mrg use iso_c_binding, only: c_int64_t, c_size_t
1405 1.1 mrg use openacc_internal, only: acc_is_present_l
1406 1.1 mrg logical acc_is_present_64_h
1407 1.1 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1408 1.1 mrg type (*), dimension (*) :: a
1409 1.1 mrg integer (c_int64_t) len
1410 1.1.1.8 mrg acc_is_present_64_h = acc_is_present_l (a, int (len, kind = c_size_t)) /= 0
1411 1.1 mrg end function
1412 1.1 mrg
1413 1.1 mrg function acc_is_present_array_h (a)
1414 1.1 mrg use openacc_internal, only: acc_is_present_l
1415 1.1 mrg logical acc_is_present_array_h
1416 1.1 mrg type (*), dimension (..), contiguous :: a
1417 1.1.1.8 mrg acc_is_present_array_h = acc_is_present_l (a, sizeof (a)) /= 0
1418 1.1 mrg end function
1419 1.1.1.7 mrg
1420 1.1.1.7 mrg subroutine acc_copyin_async_32_h (a, len, async)
1421 1.1.1.7 mrg use iso_c_binding, only: c_int32_t, c_size_t, c_int
1422 1.1.1.7 mrg use openacc_internal, only: acc_copyin_async_l
1423 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1424 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1425 1.1.1.7 mrg type (*), dimension (*) :: a
1426 1.1.1.7 mrg integer (c_int32_t) len
1427 1.1.1.7 mrg integer (acc_handle_kind) async
1428 1.1.1.7 mrg call acc_copyin_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1429 1.1.1.7 mrg end subroutine
1430 1.1.1.7 mrg
1431 1.1.1.7 mrg subroutine acc_copyin_async_64_h (a, len, async)
1432 1.1.1.7 mrg use iso_c_binding, only: c_int64_t, c_size_t, c_int
1433 1.1.1.7 mrg use openacc_internal, only: acc_copyin_async_l
1434 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1435 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1436 1.1.1.7 mrg type (*), dimension (*) :: a
1437 1.1.1.7 mrg integer (c_int64_t) len
1438 1.1.1.7 mrg integer (acc_handle_kind) async
1439 1.1.1.7 mrg call acc_copyin_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1440 1.1.1.7 mrg end subroutine
1441 1.1.1.7 mrg
1442 1.1.1.7 mrg subroutine acc_copyin_async_array_h (a, async)
1443 1.1.1.7 mrg use iso_c_binding, only: c_int
1444 1.1.1.7 mrg use openacc_internal, only: acc_copyin_async_l
1445 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1446 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
1447 1.1.1.7 mrg integer (acc_handle_kind) async
1448 1.1.1.7 mrg call acc_copyin_async_l (a, sizeof (a), int (async, kind = c_int))
1449 1.1.1.7 mrg end subroutine
1450 1.1.1.7 mrg
1451 1.1.1.7 mrg subroutine acc_create_async_32_h (a, len, async)
1452 1.1.1.7 mrg use iso_c_binding, only: c_int32_t, c_size_t, c_int
1453 1.1.1.7 mrg use openacc_internal, only: acc_create_async_l
1454 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1455 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1456 1.1.1.7 mrg type (*), dimension (*) :: a
1457 1.1.1.7 mrg integer (c_int32_t) len
1458 1.1.1.7 mrg integer (acc_handle_kind) async
1459 1.1.1.7 mrg call acc_create_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1460 1.1.1.7 mrg end subroutine
1461 1.1.1.7 mrg
1462 1.1.1.7 mrg subroutine acc_create_async_64_h (a, len, async)
1463 1.1.1.7 mrg use iso_c_binding, only: c_int64_t, c_size_t, c_int
1464 1.1.1.7 mrg use openacc_internal, only: acc_create_async_l
1465 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1466 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1467 1.1.1.7 mrg type (*), dimension (*) :: a
1468 1.1.1.7 mrg integer (c_int64_t) len
1469 1.1.1.7 mrg integer (acc_handle_kind) async
1470 1.1.1.7 mrg call acc_create_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1471 1.1.1.7 mrg end subroutine
1472 1.1.1.7 mrg
1473 1.1.1.7 mrg subroutine acc_create_async_array_h (a, async)
1474 1.1.1.7 mrg use iso_c_binding, only: c_int
1475 1.1.1.7 mrg use openacc_internal, only: acc_create_async_l
1476 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1477 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
1478 1.1.1.7 mrg integer (acc_handle_kind) async
1479 1.1.1.7 mrg call acc_create_async_l (a, sizeof (a), int (async, kind = c_int))
1480 1.1.1.7 mrg end subroutine
1481 1.1.1.7 mrg
1482 1.1.1.7 mrg subroutine acc_copyout_async_32_h (a, len, async)
1483 1.1.1.7 mrg use iso_c_binding, only: c_int32_t, c_size_t, c_int
1484 1.1.1.7 mrg use openacc_internal, only: acc_copyout_async_l
1485 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1486 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1487 1.1.1.7 mrg type (*), dimension (*) :: a
1488 1.1.1.7 mrg integer (c_int32_t) len
1489 1.1.1.7 mrg integer (acc_handle_kind) async
1490 1.1.1.7 mrg call acc_copyout_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1491 1.1.1.7 mrg end subroutine
1492 1.1.1.7 mrg
1493 1.1.1.7 mrg subroutine acc_copyout_async_64_h (a, len, async)
1494 1.1.1.7 mrg use iso_c_binding, only: c_int64_t, c_size_t, c_int
1495 1.1.1.7 mrg use openacc_internal, only: acc_copyout_async_l
1496 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1497 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1498 1.1.1.7 mrg type (*), dimension (*) :: a
1499 1.1.1.7 mrg integer (c_int64_t) len
1500 1.1.1.7 mrg integer (acc_handle_kind) async
1501 1.1.1.7 mrg call acc_copyout_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1502 1.1.1.7 mrg end subroutine
1503 1.1.1.7 mrg
1504 1.1.1.7 mrg subroutine acc_copyout_async_array_h (a, async)
1505 1.1.1.7 mrg use iso_c_binding, only: c_int
1506 1.1.1.7 mrg use openacc_internal, only: acc_copyout_async_l
1507 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1508 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
1509 1.1.1.7 mrg integer (acc_handle_kind) async
1510 1.1.1.7 mrg call acc_copyout_async_l (a, sizeof (a), int (async, kind = c_int))
1511 1.1.1.7 mrg end subroutine
1512 1.1.1.7 mrg
1513 1.1.1.7 mrg subroutine acc_delete_async_32_h (a, len, async)
1514 1.1.1.7 mrg use iso_c_binding, only: c_int32_t, c_size_t, c_int
1515 1.1.1.7 mrg use openacc_internal, only: acc_delete_async_l
1516 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1517 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1518 1.1.1.7 mrg type (*), dimension (*) :: a
1519 1.1.1.7 mrg integer (c_int32_t) len
1520 1.1.1.7 mrg integer (acc_handle_kind) async
1521 1.1.1.7 mrg call acc_delete_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1522 1.1.1.7 mrg end subroutine
1523 1.1.1.7 mrg
1524 1.1.1.7 mrg subroutine acc_delete_async_64_h (a, len, async)
1525 1.1.1.7 mrg use iso_c_binding, only: c_int64_t, c_size_t, c_int
1526 1.1.1.7 mrg use openacc_internal, only: acc_delete_async_l
1527 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1528 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1529 1.1.1.7 mrg type (*), dimension (*) :: a
1530 1.1.1.7 mrg integer (c_int64_t) len
1531 1.1.1.7 mrg integer (acc_handle_kind) async
1532 1.1.1.7 mrg call acc_delete_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1533 1.1.1.7 mrg end subroutine
1534 1.1.1.7 mrg
1535 1.1.1.7 mrg subroutine acc_delete_async_array_h (a, async)
1536 1.1.1.7 mrg use iso_c_binding, only: c_int
1537 1.1.1.7 mrg use openacc_internal, only: acc_delete_async_l
1538 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1539 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
1540 1.1.1.7 mrg integer (acc_handle_kind) async
1541 1.1.1.7 mrg call acc_delete_async_l (a, sizeof (a), int (async, kind = c_int))
1542 1.1.1.7 mrg end subroutine
1543 1.1.1.7 mrg
1544 1.1.1.7 mrg subroutine acc_update_device_async_32_h (a, len, async)
1545 1.1.1.7 mrg use iso_c_binding, only: c_int32_t, c_size_t, c_int
1546 1.1.1.7 mrg use openacc_internal, only: acc_update_device_async_l
1547 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1548 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1549 1.1.1.7 mrg type (*), dimension (*) :: a
1550 1.1.1.7 mrg integer (c_int32_t) len
1551 1.1.1.7 mrg integer (acc_handle_kind) async
1552 1.1.1.7 mrg call acc_update_device_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1553 1.1.1.7 mrg end subroutine
1554 1.1.1.7 mrg
1555 1.1.1.7 mrg subroutine acc_update_device_async_64_h (a, len, async)
1556 1.1.1.7 mrg use iso_c_binding, only: c_int64_t, c_size_t, c_int
1557 1.1.1.7 mrg use openacc_internal, only: acc_update_device_async_l
1558 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1559 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1560 1.1.1.7 mrg type (*), dimension (*) :: a
1561 1.1.1.7 mrg integer (c_int64_t) len
1562 1.1.1.7 mrg integer (acc_handle_kind) async
1563 1.1.1.7 mrg call acc_update_device_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1564 1.1.1.7 mrg end subroutine
1565 1.1.1.7 mrg
1566 1.1.1.7 mrg subroutine acc_update_device_async_array_h (a, async)
1567 1.1.1.7 mrg use iso_c_binding, only: c_int
1568 1.1.1.7 mrg use openacc_internal, only: acc_update_device_async_l
1569 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1570 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
1571 1.1.1.7 mrg integer (acc_handle_kind) async
1572 1.1.1.7 mrg call acc_update_device_async_l (a, sizeof (a), int (async, kind = c_int))
1573 1.1.1.7 mrg end subroutine
1574 1.1.1.7 mrg
1575 1.1.1.7 mrg subroutine acc_update_self_async_32_h (a, len, async)
1576 1.1.1.7 mrg use iso_c_binding, only: c_int32_t, c_size_t, c_int
1577 1.1.1.7 mrg use openacc_internal, only: acc_update_self_async_l
1578 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1579 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1580 1.1.1.7 mrg type (*), dimension (*) :: a
1581 1.1.1.7 mrg integer (c_int32_t) len
1582 1.1.1.7 mrg integer (acc_handle_kind) async
1583 1.1.1.7 mrg call acc_update_self_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1584 1.1.1.7 mrg end subroutine
1585 1.1.1.7 mrg
1586 1.1.1.7 mrg subroutine acc_update_self_async_64_h (a, len, async)
1587 1.1.1.7 mrg use iso_c_binding, only: c_int64_t, c_size_t, c_int
1588 1.1.1.7 mrg use openacc_internal, only: acc_update_self_async_l
1589 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1590 1.1.1.7 mrg !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
1591 1.1.1.7 mrg type (*), dimension (*) :: a
1592 1.1.1.7 mrg integer (c_int64_t) len
1593 1.1.1.7 mrg integer (acc_handle_kind) async
1594 1.1.1.7 mrg call acc_update_self_async_l (a, int (len, kind = c_size_t), int (async, kind = c_int))
1595 1.1.1.7 mrg end subroutine
1596 1.1.1.7 mrg
1597 1.1.1.7 mrg subroutine acc_update_self_async_array_h (a, async)
1598 1.1.1.7 mrg use iso_c_binding, only: c_int
1599 1.1.1.7 mrg use openacc_internal, only: acc_update_self_async_l
1600 1.1.1.7 mrg use openacc_kinds, only: acc_handle_kind
1601 1.1.1.7 mrg type (*), dimension (..), contiguous :: a
1602 1.1.1.7 mrg integer (acc_handle_kind) async
1603 1.1.1.7 mrg call acc_update_self_async_l (a, sizeof (a), int (async, kind = c_int))
1604 1.1.1.7 mrg end subroutine
1605