annotate libgomp/openacc.f90 @ 138:fc828634a951

merge
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 08 Nov 2018 14:17:14 +0900
parents 84e7813d76e9
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! OpenACC Runtime Library Definitions.
kono
parents:
diff changeset
2
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
3 ! Copyright (C) 2014-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 ! Contributed by Tobias Burnus <burnus@net-b.de>
kono
parents:
diff changeset
6 ! and Mentor Embedded.
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 ! This file is part of the GNU Offloading and Multi Processing Library
kono
parents:
diff changeset
9 ! (libgomp).
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 ! Libgomp is free software; you can redistribute it and/or modify it
kono
parents:
diff changeset
12 ! under the terms of the GNU General Public License as published by
kono
parents:
diff changeset
13 ! the Free Software Foundation; either version 3, or (at your option)
kono
parents:
diff changeset
14 ! any later version.
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 ! Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
kono
parents:
diff changeset
17 ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
kono
parents:
diff changeset
18 ! FOR A PARTICULAR PURPOSE. See the GNU General Public License for
kono
parents:
diff changeset
19 ! more details.
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 ! Under Section 7 of GPL version 3, you are granted additional
kono
parents:
diff changeset
22 ! permissions described in the GCC Runtime Library Exception, version
kono
parents:
diff changeset
23 ! 3.1, as published by the Free Software Foundation.
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 ! You should have received a copy of the GNU General Public License and
kono
parents:
diff changeset
26 ! a copy of the GCC Runtime Library Exception along with this program;
kono
parents:
diff changeset
27 ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
kono
parents:
diff changeset
28 ! <http://www.gnu.org/licenses/>.
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 module openacc_kinds
kono
parents:
diff changeset
31 use iso_fortran_env, only: int32
kono
parents:
diff changeset
32 implicit none
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 private :: int32
kono
parents:
diff changeset
35 public :: acc_device_kind
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 integer, parameter :: acc_device_kind = int32
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 public :: acc_device_none, acc_device_default, acc_device_host
kono
parents:
diff changeset
40 public :: acc_device_not_host, acc_device_nvidia
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 ! Keep in sync with include/gomp-constants.h.
kono
parents:
diff changeset
43 integer (acc_device_kind), parameter :: acc_device_none = 0
kono
parents:
diff changeset
44 integer (acc_device_kind), parameter :: acc_device_default = 1
kono
parents:
diff changeset
45 integer (acc_device_kind), parameter :: acc_device_host = 2
kono
parents:
diff changeset
46 ! integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3 removed.
kono
parents:
diff changeset
47 integer (acc_device_kind), parameter :: acc_device_not_host = 4
kono
parents:
diff changeset
48 integer (acc_device_kind), parameter :: acc_device_nvidia = 5
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 public :: acc_handle_kind
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 integer, parameter :: acc_handle_kind = int32
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 public :: acc_async_noval, acc_async_sync
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 ! Keep in sync with include/gomp-constants.h.
kono
parents:
diff changeset
57 integer (acc_handle_kind), parameter :: acc_async_noval = -1
kono
parents:
diff changeset
58 integer (acc_handle_kind), parameter :: acc_async_sync = -2
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 end module
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 module openacc_internal
kono
parents:
diff changeset
63 use openacc_kinds
kono
parents:
diff changeset
64 implicit none
kono
parents:
diff changeset
65
kono
parents:
diff changeset
66 interface
kono
parents:
diff changeset
67 function acc_get_num_devices_h (d)
kono
parents:
diff changeset
68 import
kono
parents:
diff changeset
69 integer acc_get_num_devices_h
kono
parents:
diff changeset
70 integer (acc_device_kind) d
kono
parents:
diff changeset
71 end function
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 subroutine acc_set_device_type_h (d)
kono
parents:
diff changeset
74 import
kono
parents:
diff changeset
75 integer (acc_device_kind) d
kono
parents:
diff changeset
76 end subroutine
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 function acc_get_device_type_h ()
kono
parents:
diff changeset
79 import
kono
parents:
diff changeset
80 integer (acc_device_kind) acc_get_device_type_h
kono
parents:
diff changeset
81 end function
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 subroutine acc_set_device_num_h (n, d)
kono
parents:
diff changeset
84 import
kono
parents:
diff changeset
85 integer n
kono
parents:
diff changeset
86 integer (acc_device_kind) d
kono
parents:
diff changeset
87 end subroutine
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 function acc_get_device_num_h (d)
kono
parents:
diff changeset
90 import
kono
parents:
diff changeset
91 integer acc_get_device_num_h
kono
parents:
diff changeset
92 integer (acc_device_kind) d
kono
parents:
diff changeset
93 end function
kono
parents:
diff changeset
94
kono
parents:
diff changeset
95 function acc_async_test_h (a)
kono
parents:
diff changeset
96 logical acc_async_test_h
kono
parents:
diff changeset
97 integer a
kono
parents:
diff changeset
98 end function
kono
parents:
diff changeset
99
kono
parents:
diff changeset
100 function acc_async_test_all_h ()
kono
parents:
diff changeset
101 logical acc_async_test_all_h
kono
parents:
diff changeset
102 end function
kono
parents:
diff changeset
103
kono
parents:
diff changeset
104 subroutine acc_wait_h (a)
kono
parents:
diff changeset
105 integer a
kono
parents:
diff changeset
106 end subroutine
kono
parents:
diff changeset
107
kono
parents:
diff changeset
108 subroutine acc_wait_async_h (a1, a2)
kono
parents:
diff changeset
109 integer a1, a2
kono
parents:
diff changeset
110 end subroutine
kono
parents:
diff changeset
111
kono
parents:
diff changeset
112 subroutine acc_wait_all_h ()
kono
parents:
diff changeset
113 end subroutine
kono
parents:
diff changeset
114
kono
parents:
diff changeset
115 subroutine acc_wait_all_async_h (a)
kono
parents:
diff changeset
116 integer a
kono
parents:
diff changeset
117 end subroutine
kono
parents:
diff changeset
118
kono
parents:
diff changeset
119 subroutine acc_init_h (d)
kono
parents:
diff changeset
120 import
kono
parents:
diff changeset
121 integer (acc_device_kind) d
kono
parents:
diff changeset
122 end subroutine
kono
parents:
diff changeset
123
kono
parents:
diff changeset
124 subroutine acc_shutdown_h (d)
kono
parents:
diff changeset
125 import
kono
parents:
diff changeset
126 integer (acc_device_kind) d
kono
parents:
diff changeset
127 end subroutine
kono
parents:
diff changeset
128
kono
parents:
diff changeset
129 function acc_on_device_h (d)
kono
parents:
diff changeset
130 import
kono
parents:
diff changeset
131 integer (acc_device_kind) d
kono
parents:
diff changeset
132 logical acc_on_device_h
kono
parents:
diff changeset
133 end function
kono
parents:
diff changeset
134
kono
parents:
diff changeset
135 subroutine acc_copyin_32_h (a, len)
kono
parents:
diff changeset
136 use iso_c_binding, only: c_int32_t
kono
parents:
diff changeset
137 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
138 type (*), dimension (*) :: a
kono
parents:
diff changeset
139 integer (c_int32_t) len
kono
parents:
diff changeset
140 end subroutine
kono
parents:
diff changeset
141
kono
parents:
diff changeset
142 subroutine acc_copyin_64_h (a, len)
kono
parents:
diff changeset
143 use iso_c_binding, only: c_int64_t
kono
parents:
diff changeset
144 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
145 type (*), dimension (*) :: a
kono
parents:
diff changeset
146 integer (c_int64_t) len
kono
parents:
diff changeset
147 end subroutine
kono
parents:
diff changeset
148
kono
parents:
diff changeset
149 subroutine acc_copyin_array_h (a)
kono
parents:
diff changeset
150 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
151 end subroutine
kono
parents:
diff changeset
152
kono
parents:
diff changeset
153 subroutine acc_present_or_copyin_32_h (a, len)
kono
parents:
diff changeset
154 use iso_c_binding, only: c_int32_t
kono
parents:
diff changeset
155 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
156 type (*), dimension (*) :: a
kono
parents:
diff changeset
157 integer (c_int32_t) len
kono
parents:
diff changeset
158 end subroutine
kono
parents:
diff changeset
159
kono
parents:
diff changeset
160 subroutine acc_present_or_copyin_64_h (a, len)
kono
parents:
diff changeset
161 use iso_c_binding, only: c_int64_t
kono
parents:
diff changeset
162 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
163 type (*), dimension (*) :: a
kono
parents:
diff changeset
164 integer (c_int64_t) len
kono
parents:
diff changeset
165 end subroutine
kono
parents:
diff changeset
166
kono
parents:
diff changeset
167 subroutine acc_present_or_copyin_array_h (a)
kono
parents:
diff changeset
168 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
169 end subroutine
kono
parents:
diff changeset
170
kono
parents:
diff changeset
171 subroutine acc_create_32_h (a, len)
kono
parents:
diff changeset
172 use iso_c_binding, only: c_int32_t
kono
parents:
diff changeset
173 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
174 type (*), dimension (*) :: a
kono
parents:
diff changeset
175 integer (c_int32_t) len
kono
parents:
diff changeset
176 end subroutine
kono
parents:
diff changeset
177
kono
parents:
diff changeset
178 subroutine acc_create_64_h (a, len)
kono
parents:
diff changeset
179 use iso_c_binding, only: c_int64_t
kono
parents:
diff changeset
180 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
181 type (*), dimension (*) :: a
kono
parents:
diff changeset
182 integer (c_int64_t) len
kono
parents:
diff changeset
183 end subroutine
kono
parents:
diff changeset
184
kono
parents:
diff changeset
185 subroutine acc_create_array_h (a)
kono
parents:
diff changeset
186 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
187 end subroutine
kono
parents:
diff changeset
188
kono
parents:
diff changeset
189 subroutine acc_present_or_create_32_h (a, len)
kono
parents:
diff changeset
190 use iso_c_binding, only: c_int32_t
kono
parents:
diff changeset
191 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
192 type (*), dimension (*) :: a
kono
parents:
diff changeset
193 integer (c_int32_t) len
kono
parents:
diff changeset
194 end subroutine
kono
parents:
diff changeset
195
kono
parents:
diff changeset
196 subroutine acc_present_or_create_64_h (a, len)
kono
parents:
diff changeset
197 use iso_c_binding, only: c_int64_t
kono
parents:
diff changeset
198 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
199 type (*), dimension (*) :: a
kono
parents:
diff changeset
200 integer (c_int64_t) len
kono
parents:
diff changeset
201 end subroutine
kono
parents:
diff changeset
202
kono
parents:
diff changeset
203 subroutine acc_present_or_create_array_h (a)
kono
parents:
diff changeset
204 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
205 end subroutine
kono
parents:
diff changeset
206
kono
parents:
diff changeset
207 subroutine acc_copyout_32_h (a, len)
kono
parents:
diff changeset
208 use iso_c_binding, only: c_int32_t
kono
parents:
diff changeset
209 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
210 type (*), dimension (*) :: a
kono
parents:
diff changeset
211 integer (c_int32_t) len
kono
parents:
diff changeset
212 end subroutine
kono
parents:
diff changeset
213
kono
parents:
diff changeset
214 subroutine acc_copyout_64_h (a, len)
kono
parents:
diff changeset
215 use iso_c_binding, only: c_int64_t
kono
parents:
diff changeset
216 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
217 type (*), dimension (*) :: a
kono
parents:
diff changeset
218 integer (c_int64_t) len
kono
parents:
diff changeset
219 end subroutine
kono
parents:
diff changeset
220
kono
parents:
diff changeset
221 subroutine acc_copyout_array_h (a)
kono
parents:
diff changeset
222 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
223 end subroutine
kono
parents:
diff changeset
224
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
225 subroutine acc_copyout_finalize_32_h (a, len)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
226 use iso_c_binding, only: c_int32_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
227 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
228 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
229 integer (c_int32_t) len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
230 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
231
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
232 subroutine acc_copyout_finalize_64_h (a, len)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
233 use iso_c_binding, only: c_int64_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
234 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
235 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
236 integer (c_int64_t) len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
237 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
238
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
239 subroutine acc_copyout_finalize_array_h (a)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
240 type (*), dimension (..), contiguous :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
241 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
242
111
kono
parents:
diff changeset
243 subroutine acc_delete_32_h (a, len)
kono
parents:
diff changeset
244 use iso_c_binding, only: c_int32_t
kono
parents:
diff changeset
245 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
246 type (*), dimension (*) :: a
kono
parents:
diff changeset
247 integer (c_int32_t) len
kono
parents:
diff changeset
248 end subroutine
kono
parents:
diff changeset
249
kono
parents:
diff changeset
250 subroutine acc_delete_64_h (a, len)
kono
parents:
diff changeset
251 use iso_c_binding, only: c_int64_t
kono
parents:
diff changeset
252 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
253 type (*), dimension (*) :: a
kono
parents:
diff changeset
254 integer (c_int64_t) len
kono
parents:
diff changeset
255 end subroutine
kono
parents:
diff changeset
256
kono
parents:
diff changeset
257 subroutine acc_delete_array_h (a)
kono
parents:
diff changeset
258 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
259 end subroutine
kono
parents:
diff changeset
260
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
261 subroutine acc_delete_finalize_32_h (a, len)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
262 use iso_c_binding, only: c_int32_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
263 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
264 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
265 integer (c_int32_t) len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
266 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
267
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
268 subroutine acc_delete_finalize_64_h (a, len)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
269 use iso_c_binding, only: c_int64_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
270 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
271 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
272 integer (c_int64_t) len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
273 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
274
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
275 subroutine acc_delete_finalize_array_h (a)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
276 type (*), dimension (..), contiguous :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
277 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
278
111
kono
parents:
diff changeset
279 subroutine acc_update_device_32_h (a, len)
kono
parents:
diff changeset
280 use iso_c_binding, only: c_int32_t
kono
parents:
diff changeset
281 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
282 type (*), dimension (*) :: a
kono
parents:
diff changeset
283 integer (c_int32_t) len
kono
parents:
diff changeset
284 end subroutine
kono
parents:
diff changeset
285
kono
parents:
diff changeset
286 subroutine acc_update_device_64_h (a, len)
kono
parents:
diff changeset
287 use iso_c_binding, only: c_int64_t
kono
parents:
diff changeset
288 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
289 type (*), dimension (*) :: a
kono
parents:
diff changeset
290 integer (c_int64_t) len
kono
parents:
diff changeset
291 end subroutine
kono
parents:
diff changeset
292
kono
parents:
diff changeset
293 subroutine acc_update_device_array_h (a)
kono
parents:
diff changeset
294 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
295 end subroutine
kono
parents:
diff changeset
296
kono
parents:
diff changeset
297 subroutine acc_update_self_32_h (a, len)
kono
parents:
diff changeset
298 use iso_c_binding, only: c_int32_t
kono
parents:
diff changeset
299 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
300 type (*), dimension (*) :: a
kono
parents:
diff changeset
301 integer (c_int32_t) len
kono
parents:
diff changeset
302 end subroutine
kono
parents:
diff changeset
303
kono
parents:
diff changeset
304 subroutine acc_update_self_64_h (a, len)
kono
parents:
diff changeset
305 use iso_c_binding, only: c_int64_t
kono
parents:
diff changeset
306 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
307 type (*), dimension (*) :: a
kono
parents:
diff changeset
308 integer (c_int64_t) len
kono
parents:
diff changeset
309 end subroutine
kono
parents:
diff changeset
310
kono
parents:
diff changeset
311 subroutine acc_update_self_array_h (a)
kono
parents:
diff changeset
312 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
313 end subroutine
kono
parents:
diff changeset
314
kono
parents:
diff changeset
315 function acc_is_present_32_h (a, len)
kono
parents:
diff changeset
316 use iso_c_binding, only: c_int32_t
kono
parents:
diff changeset
317 logical acc_is_present_32_h
kono
parents:
diff changeset
318 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
319 type (*), dimension (*) :: a
kono
parents:
diff changeset
320 integer (c_int32_t) len
kono
parents:
diff changeset
321 end function
kono
parents:
diff changeset
322
kono
parents:
diff changeset
323 function acc_is_present_64_h (a, len)
kono
parents:
diff changeset
324 use iso_c_binding, only: c_int64_t
kono
parents:
diff changeset
325 logical acc_is_present_64_h
kono
parents:
diff changeset
326 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
327 type (*), dimension (*) :: a
kono
parents:
diff changeset
328 integer (c_int64_t) len
kono
parents:
diff changeset
329 end function
kono
parents:
diff changeset
330
kono
parents:
diff changeset
331 function acc_is_present_array_h (a)
kono
parents:
diff changeset
332 logical acc_is_present_array_h
kono
parents:
diff changeset
333 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
334 end function
kono
parents:
diff changeset
335 end interface
kono
parents:
diff changeset
336
kono
parents:
diff changeset
337 interface
kono
parents:
diff changeset
338 function acc_get_num_devices_l (d) &
kono
parents:
diff changeset
339 bind (C, name = "acc_get_num_devices")
kono
parents:
diff changeset
340 use iso_c_binding, only: c_int
kono
parents:
diff changeset
341 integer (c_int) :: acc_get_num_devices_l
kono
parents:
diff changeset
342 integer (c_int), value :: d
kono
parents:
diff changeset
343 end function
kono
parents:
diff changeset
344
kono
parents:
diff changeset
345 subroutine acc_set_device_type_l (d) &
kono
parents:
diff changeset
346 bind (C, name = "acc_set_device_type")
kono
parents:
diff changeset
347 use iso_c_binding, only: c_int
kono
parents:
diff changeset
348 integer (c_int), value :: d
kono
parents:
diff changeset
349 end subroutine
kono
parents:
diff changeset
350
kono
parents:
diff changeset
351 function acc_get_device_type_l () &
kono
parents:
diff changeset
352 bind (C, name = "acc_get_device_type")
kono
parents:
diff changeset
353 use iso_c_binding, only: c_int
kono
parents:
diff changeset
354 integer (c_int) :: acc_get_device_type_l
kono
parents:
diff changeset
355 end function
kono
parents:
diff changeset
356
kono
parents:
diff changeset
357 subroutine acc_set_device_num_l (n, d) &
kono
parents:
diff changeset
358 bind (C, name = "acc_set_device_num")
kono
parents:
diff changeset
359 use iso_c_binding, only: c_int
kono
parents:
diff changeset
360 integer (c_int), value :: n, d
kono
parents:
diff changeset
361 end subroutine
kono
parents:
diff changeset
362
kono
parents:
diff changeset
363 function acc_get_device_num_l (d) &
kono
parents:
diff changeset
364 bind (C, name = "acc_get_device_num")
kono
parents:
diff changeset
365 use iso_c_binding, only: c_int
kono
parents:
diff changeset
366 integer (c_int) :: acc_get_device_num_l
kono
parents:
diff changeset
367 integer (c_int), value :: d
kono
parents:
diff changeset
368 end function
kono
parents:
diff changeset
369
kono
parents:
diff changeset
370 function acc_async_test_l (a) &
kono
parents:
diff changeset
371 bind (C, name = "acc_async_test")
kono
parents:
diff changeset
372 use iso_c_binding, only: c_int
kono
parents:
diff changeset
373 integer (c_int) :: acc_async_test_l
kono
parents:
diff changeset
374 integer (c_int), value :: a
kono
parents:
diff changeset
375 end function
kono
parents:
diff changeset
376
kono
parents:
diff changeset
377 function acc_async_test_all_l () &
kono
parents:
diff changeset
378 bind (C, name = "acc_async_test_all")
kono
parents:
diff changeset
379 use iso_c_binding, only: c_int
kono
parents:
diff changeset
380 integer (c_int) :: acc_async_test_all_l
kono
parents:
diff changeset
381 end function
kono
parents:
diff changeset
382
kono
parents:
diff changeset
383 subroutine acc_wait_l (a) &
kono
parents:
diff changeset
384 bind (C, name = "acc_wait")
kono
parents:
diff changeset
385 use iso_c_binding, only: c_int
kono
parents:
diff changeset
386 integer (c_int), value :: a
kono
parents:
diff changeset
387 end subroutine
kono
parents:
diff changeset
388
kono
parents:
diff changeset
389 subroutine acc_wait_async_l (a1, a2) &
kono
parents:
diff changeset
390 bind (C, name = "acc_wait_async")
kono
parents:
diff changeset
391 use iso_c_binding, only: c_int
kono
parents:
diff changeset
392 integer (c_int), value :: a1, a2
kono
parents:
diff changeset
393 end subroutine
kono
parents:
diff changeset
394
kono
parents:
diff changeset
395 subroutine acc_wait_all_l () &
kono
parents:
diff changeset
396 bind (C, name = "acc_wait_all")
kono
parents:
diff changeset
397 use iso_c_binding, only: c_int
kono
parents:
diff changeset
398 end subroutine
kono
parents:
diff changeset
399
kono
parents:
diff changeset
400 subroutine acc_wait_all_async_l (a) &
kono
parents:
diff changeset
401 bind (C, name = "acc_wait_all_async")
kono
parents:
diff changeset
402 use iso_c_binding, only: c_int
kono
parents:
diff changeset
403 integer (c_int), value :: a
kono
parents:
diff changeset
404 end subroutine
kono
parents:
diff changeset
405
kono
parents:
diff changeset
406 subroutine acc_init_l (d) &
kono
parents:
diff changeset
407 bind (C, name = "acc_init")
kono
parents:
diff changeset
408 use iso_c_binding, only: c_int
kono
parents:
diff changeset
409 integer (c_int), value :: d
kono
parents:
diff changeset
410 end subroutine
kono
parents:
diff changeset
411
kono
parents:
diff changeset
412 subroutine acc_shutdown_l (d) &
kono
parents:
diff changeset
413 bind (C, name = "acc_shutdown")
kono
parents:
diff changeset
414 use iso_c_binding, only: c_int
kono
parents:
diff changeset
415 integer (c_int), value :: d
kono
parents:
diff changeset
416 end subroutine
kono
parents:
diff changeset
417
kono
parents:
diff changeset
418 function acc_on_device_l (d) &
kono
parents:
diff changeset
419 bind (C, name = "acc_on_device")
kono
parents:
diff changeset
420 use iso_c_binding, only: c_int
kono
parents:
diff changeset
421 integer (c_int) :: acc_on_device_l
kono
parents:
diff changeset
422 integer (c_int), value :: d
kono
parents:
diff changeset
423 end function
kono
parents:
diff changeset
424
kono
parents:
diff changeset
425 subroutine acc_copyin_l (a, len) &
kono
parents:
diff changeset
426 bind (C, name = "acc_copyin")
kono
parents:
diff changeset
427 use iso_c_binding, only: c_size_t
kono
parents:
diff changeset
428 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
429 type (*), dimension (*) :: a
kono
parents:
diff changeset
430 integer (c_size_t), value :: len
kono
parents:
diff changeset
431 end subroutine
kono
parents:
diff changeset
432
kono
parents:
diff changeset
433 subroutine acc_present_or_copyin_l (a, len) &
kono
parents:
diff changeset
434 bind (C, name = "acc_present_or_copyin")
kono
parents:
diff changeset
435 use iso_c_binding, only: c_size_t
kono
parents:
diff changeset
436 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
437 type (*), dimension (*) :: a
kono
parents:
diff changeset
438 integer (c_size_t), value :: len
kono
parents:
diff changeset
439 end subroutine
kono
parents:
diff changeset
440
kono
parents:
diff changeset
441 subroutine acc_create_l (a, len) &
kono
parents:
diff changeset
442 bind (C, name = "acc_create")
kono
parents:
diff changeset
443 use iso_c_binding, only: c_size_t
kono
parents:
diff changeset
444 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
445 type (*), dimension (*) :: a
kono
parents:
diff changeset
446 integer (c_size_t), value :: len
kono
parents:
diff changeset
447 end subroutine
kono
parents:
diff changeset
448
kono
parents:
diff changeset
449 subroutine acc_present_or_create_l (a, len) &
kono
parents:
diff changeset
450 bind (C, name = "acc_present_or_create")
kono
parents:
diff changeset
451 use iso_c_binding, only: c_size_t
kono
parents:
diff changeset
452 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
453 type (*), dimension (*) :: a
kono
parents:
diff changeset
454 integer (c_size_t), value :: len
kono
parents:
diff changeset
455 end subroutine
kono
parents:
diff changeset
456
kono
parents:
diff changeset
457 subroutine acc_copyout_l (a, len) &
kono
parents:
diff changeset
458 bind (C, name = "acc_copyout")
kono
parents:
diff changeset
459 use iso_c_binding, only: c_size_t
kono
parents:
diff changeset
460 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
461 type (*), dimension (*) :: a
kono
parents:
diff changeset
462 integer (c_size_t), value :: len
kono
parents:
diff changeset
463 end subroutine
kono
parents:
diff changeset
464
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
465 subroutine acc_copyout_finalize_l (a, len) &
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
466 bind (C, name = "acc_copyout_finalize")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
467 use iso_c_binding, only: c_size_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
468 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
469 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
470 integer (c_size_t), value :: len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
471 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
472
111
kono
parents:
diff changeset
473 subroutine acc_delete_l (a, len) &
kono
parents:
diff changeset
474 bind (C, name = "acc_delete")
kono
parents:
diff changeset
475 use iso_c_binding, only: c_size_t
kono
parents:
diff changeset
476 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
477 type (*), dimension (*) :: a
kono
parents:
diff changeset
478 integer (c_size_t), value :: len
kono
parents:
diff changeset
479 end subroutine
kono
parents:
diff changeset
480
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
481 subroutine acc_delete_finalize_l (a, len) &
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
482 bind (C, name = "acc_delete_finalize")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
483 use iso_c_binding, only: c_size_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
484 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
485 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
486 integer (c_size_t), value :: len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
487 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
488
111
kono
parents:
diff changeset
489 subroutine acc_update_device_l (a, len) &
kono
parents:
diff changeset
490 bind (C, name = "acc_update_device")
kono
parents:
diff changeset
491 use iso_c_binding, only: c_size_t
kono
parents:
diff changeset
492 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
493 type (*), dimension (*) :: a
kono
parents:
diff changeset
494 integer (c_size_t), value :: len
kono
parents:
diff changeset
495 end subroutine
kono
parents:
diff changeset
496
kono
parents:
diff changeset
497 subroutine acc_update_self_l (a, len) &
kono
parents:
diff changeset
498 bind (C, name = "acc_update_self")
kono
parents:
diff changeset
499 use iso_c_binding, only: c_size_t
kono
parents:
diff changeset
500 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
501 type (*), dimension (*) :: a
kono
parents:
diff changeset
502 integer (c_size_t), value :: len
kono
parents:
diff changeset
503 end subroutine
kono
parents:
diff changeset
504
kono
parents:
diff changeset
505 function acc_is_present_l (a, len) &
kono
parents:
diff changeset
506 bind (C, name = "acc_is_present")
kono
parents:
diff changeset
507 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
508 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
509 integer (c_int32_t) :: acc_is_present_l
kono
parents:
diff changeset
510 type (*), dimension (*) :: a
kono
parents:
diff changeset
511 integer (c_size_t), value :: len
kono
parents:
diff changeset
512 end function
kono
parents:
diff changeset
513 end interface
kono
parents:
diff changeset
514 end module
kono
parents:
diff changeset
515
kono
parents:
diff changeset
516 module openacc
kono
parents:
diff changeset
517 use openacc_kinds
kono
parents:
diff changeset
518 use openacc_internal
kono
parents:
diff changeset
519 implicit none
kono
parents:
diff changeset
520
kono
parents:
diff changeset
521 public :: openacc_version
kono
parents:
diff changeset
522
kono
parents:
diff changeset
523 public :: acc_get_num_devices, acc_set_device_type, acc_get_device_type
kono
parents:
diff changeset
524 public :: acc_set_device_num, acc_get_device_num, acc_async_test
kono
parents:
diff changeset
525 public :: acc_async_test_all
kono
parents:
diff changeset
526 public :: acc_wait, acc_async_wait, acc_wait_async
kono
parents:
diff changeset
527 public :: acc_wait_all, acc_async_wait_all, acc_wait_all_async
kono
parents:
diff changeset
528 public :: acc_init, acc_shutdown, acc_on_device
kono
parents:
diff changeset
529 public :: acc_copyin, acc_present_or_copyin, acc_pcopyin, acc_create
kono
parents:
diff changeset
530 public :: acc_present_or_create, acc_pcreate, acc_copyout, acc_delete
kono
parents:
diff changeset
531 public :: acc_update_device, acc_update_self, acc_is_present
kono
parents:
diff changeset
532
kono
parents:
diff changeset
533 integer, parameter :: openacc_version = 201306
kono
parents:
diff changeset
534
kono
parents:
diff changeset
535 interface acc_get_num_devices
kono
parents:
diff changeset
536 procedure :: acc_get_num_devices_h
kono
parents:
diff changeset
537 end interface
kono
parents:
diff changeset
538
kono
parents:
diff changeset
539 interface acc_set_device_type
kono
parents:
diff changeset
540 procedure :: acc_set_device_type_h
kono
parents:
diff changeset
541 end interface
kono
parents:
diff changeset
542
kono
parents:
diff changeset
543 interface acc_get_device_type
kono
parents:
diff changeset
544 procedure :: acc_get_device_type_h
kono
parents:
diff changeset
545 end interface
kono
parents:
diff changeset
546
kono
parents:
diff changeset
547 interface acc_set_device_num
kono
parents:
diff changeset
548 procedure :: acc_set_device_num_h
kono
parents:
diff changeset
549 end interface
kono
parents:
diff changeset
550
kono
parents:
diff changeset
551 interface acc_get_device_num
kono
parents:
diff changeset
552 procedure :: acc_get_device_num_h
kono
parents:
diff changeset
553 end interface
kono
parents:
diff changeset
554
kono
parents:
diff changeset
555 interface acc_async_test
kono
parents:
diff changeset
556 procedure :: acc_async_test_h
kono
parents:
diff changeset
557 end interface
kono
parents:
diff changeset
558
kono
parents:
diff changeset
559 interface acc_async_test_all
kono
parents:
diff changeset
560 procedure :: acc_async_test_all_h
kono
parents:
diff changeset
561 end interface
kono
parents:
diff changeset
562
kono
parents:
diff changeset
563 interface acc_wait
kono
parents:
diff changeset
564 procedure :: acc_wait_h
kono
parents:
diff changeset
565 end interface
kono
parents:
diff changeset
566
kono
parents:
diff changeset
567 ! acc_async_wait is an OpenACC 1.0 compatibility name for acc_wait.
kono
parents:
diff changeset
568 interface acc_async_wait
kono
parents:
diff changeset
569 procedure :: acc_wait_h
kono
parents:
diff changeset
570 end interface
kono
parents:
diff changeset
571
kono
parents:
diff changeset
572 interface acc_wait_async
kono
parents:
diff changeset
573 procedure :: acc_wait_async_h
kono
parents:
diff changeset
574 end interface
kono
parents:
diff changeset
575
kono
parents:
diff changeset
576 interface acc_wait_all
kono
parents:
diff changeset
577 procedure :: acc_wait_all_h
kono
parents:
diff changeset
578 end interface
kono
parents:
diff changeset
579
kono
parents:
diff changeset
580 ! acc_async_wait_all is an OpenACC 1.0 compatibility name for acc_wait_all.
kono
parents:
diff changeset
581 interface acc_async_wait_all
kono
parents:
diff changeset
582 procedure :: acc_wait_all_h
kono
parents:
diff changeset
583 end interface
kono
parents:
diff changeset
584
kono
parents:
diff changeset
585 interface acc_wait_all_async
kono
parents:
diff changeset
586 procedure :: acc_wait_all_async_h
kono
parents:
diff changeset
587 end interface
kono
parents:
diff changeset
588
kono
parents:
diff changeset
589 interface acc_init
kono
parents:
diff changeset
590 procedure :: acc_init_h
kono
parents:
diff changeset
591 end interface
kono
parents:
diff changeset
592
kono
parents:
diff changeset
593 interface acc_shutdown
kono
parents:
diff changeset
594 procedure :: acc_shutdown_h
kono
parents:
diff changeset
595 end interface
kono
parents:
diff changeset
596
kono
parents:
diff changeset
597 interface acc_on_device
kono
parents:
diff changeset
598 procedure :: acc_on_device_h
kono
parents:
diff changeset
599 end interface
kono
parents:
diff changeset
600
kono
parents:
diff changeset
601 ! acc_malloc: Only available in C/C++
kono
parents:
diff changeset
602 ! acc_free: Only available in C/C++
kono
parents:
diff changeset
603
kono
parents:
diff changeset
604 ! As vendor extension, the following code supports both 32bit and 64bit
kono
parents:
diff changeset
605 ! arguments for "size"; the OpenACC standard only permits default-kind
kono
parents:
diff changeset
606 ! integers, which are of kind 4 (i.e. 32 bits).
kono
parents:
diff changeset
607 ! Additionally, the two-argument version also takes arrays as argument.
kono
parents:
diff changeset
608 ! and the one argument version also scalars. Note that the code assumes
kono
parents:
diff changeset
609 ! that the arrays are contiguous.
kono
parents:
diff changeset
610
kono
parents:
diff changeset
611 interface acc_copyin
kono
parents:
diff changeset
612 procedure :: acc_copyin_32_h
kono
parents:
diff changeset
613 procedure :: acc_copyin_64_h
kono
parents:
diff changeset
614 procedure :: acc_copyin_array_h
kono
parents:
diff changeset
615 end interface
kono
parents:
diff changeset
616
kono
parents:
diff changeset
617 interface acc_present_or_copyin
kono
parents:
diff changeset
618 procedure :: acc_present_or_copyin_32_h
kono
parents:
diff changeset
619 procedure :: acc_present_or_copyin_64_h
kono
parents:
diff changeset
620 procedure :: acc_present_or_copyin_array_h
kono
parents:
diff changeset
621 end interface
kono
parents:
diff changeset
622
kono
parents:
diff changeset
623 interface acc_pcopyin
kono
parents:
diff changeset
624 procedure :: acc_present_or_copyin_32_h
kono
parents:
diff changeset
625 procedure :: acc_present_or_copyin_64_h
kono
parents:
diff changeset
626 procedure :: acc_present_or_copyin_array_h
kono
parents:
diff changeset
627 end interface
kono
parents:
diff changeset
628
kono
parents:
diff changeset
629 interface acc_create
kono
parents:
diff changeset
630 procedure :: acc_create_32_h
kono
parents:
diff changeset
631 procedure :: acc_create_64_h
kono
parents:
diff changeset
632 procedure :: acc_create_array_h
kono
parents:
diff changeset
633 end interface
kono
parents:
diff changeset
634
kono
parents:
diff changeset
635 interface acc_present_or_create
kono
parents:
diff changeset
636 procedure :: acc_present_or_create_32_h
kono
parents:
diff changeset
637 procedure :: acc_present_or_create_64_h
kono
parents:
diff changeset
638 procedure :: acc_present_or_create_array_h
kono
parents:
diff changeset
639 end interface
kono
parents:
diff changeset
640
kono
parents:
diff changeset
641 interface acc_pcreate
kono
parents:
diff changeset
642 procedure :: acc_present_or_create_32_h
kono
parents:
diff changeset
643 procedure :: acc_present_or_create_64_h
kono
parents:
diff changeset
644 procedure :: acc_present_or_create_array_h
kono
parents:
diff changeset
645 end interface
kono
parents:
diff changeset
646
kono
parents:
diff changeset
647 interface acc_copyout
kono
parents:
diff changeset
648 procedure :: acc_copyout_32_h
kono
parents:
diff changeset
649 procedure :: acc_copyout_64_h
kono
parents:
diff changeset
650 procedure :: acc_copyout_array_h
kono
parents:
diff changeset
651 end interface
kono
parents:
diff changeset
652
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
653 interface acc_copyout_finalize
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
654 procedure :: acc_copyout_finalize_32_h
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
655 procedure :: acc_copyout_finalize_64_h
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
656 procedure :: acc_copyout_finalize_array_h
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
657 end interface
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
658
111
kono
parents:
diff changeset
659 interface acc_delete
kono
parents:
diff changeset
660 procedure :: acc_delete_32_h
kono
parents:
diff changeset
661 procedure :: acc_delete_64_h
kono
parents:
diff changeset
662 procedure :: acc_delete_array_h
kono
parents:
diff changeset
663 end interface
kono
parents:
diff changeset
664
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
665 interface acc_delete_finalize
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
666 procedure :: acc_delete_finalize_32_h
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
667 procedure :: acc_delete_finalize_64_h
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
668 procedure :: acc_delete_finalize_array_h
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
669 end interface
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
670
111
kono
parents:
diff changeset
671 interface acc_update_device
kono
parents:
diff changeset
672 procedure :: acc_update_device_32_h
kono
parents:
diff changeset
673 procedure :: acc_update_device_64_h
kono
parents:
diff changeset
674 procedure :: acc_update_device_array_h
kono
parents:
diff changeset
675 end interface
kono
parents:
diff changeset
676
kono
parents:
diff changeset
677 interface acc_update_self
kono
parents:
diff changeset
678 procedure :: acc_update_self_32_h
kono
parents:
diff changeset
679 procedure :: acc_update_self_64_h
kono
parents:
diff changeset
680 procedure :: acc_update_self_array_h
kono
parents:
diff changeset
681 end interface
kono
parents:
diff changeset
682
kono
parents:
diff changeset
683 ! acc_map_data: Only available in C/C++
kono
parents:
diff changeset
684 ! acc_unmap_data: Only available in C/C++
kono
parents:
diff changeset
685 ! acc_deviceptr: Only available in C/C++
kono
parents:
diff changeset
686 ! acc_hostptr: Only available in C/C++
kono
parents:
diff changeset
687
kono
parents:
diff changeset
688 interface acc_is_present
kono
parents:
diff changeset
689 procedure :: acc_is_present_32_h
kono
parents:
diff changeset
690 procedure :: acc_is_present_64_h
kono
parents:
diff changeset
691 procedure :: acc_is_present_array_h
kono
parents:
diff changeset
692 end interface
kono
parents:
diff changeset
693
kono
parents:
diff changeset
694 ! acc_memcpy_to_device: Only available in C/C++
kono
parents:
diff changeset
695 ! acc_memcpy_from_device: Only available in C/C++
kono
parents:
diff changeset
696
kono
parents:
diff changeset
697 end module
kono
parents:
diff changeset
698
kono
parents:
diff changeset
699 function acc_get_num_devices_h (d)
kono
parents:
diff changeset
700 use openacc_internal, only: acc_get_num_devices_l
kono
parents:
diff changeset
701 use openacc_kinds
kono
parents:
diff changeset
702 integer acc_get_num_devices_h
kono
parents:
diff changeset
703 integer (acc_device_kind) d
kono
parents:
diff changeset
704 acc_get_num_devices_h = acc_get_num_devices_l (d)
kono
parents:
diff changeset
705 end function
kono
parents:
diff changeset
706
kono
parents:
diff changeset
707 subroutine acc_set_device_type_h (d)
kono
parents:
diff changeset
708 use openacc_internal, only: acc_set_device_type_l
kono
parents:
diff changeset
709 use openacc_kinds
kono
parents:
diff changeset
710 integer (acc_device_kind) d
kono
parents:
diff changeset
711 call acc_set_device_type_l (d)
kono
parents:
diff changeset
712 end subroutine
kono
parents:
diff changeset
713
kono
parents:
diff changeset
714 function acc_get_device_type_h ()
kono
parents:
diff changeset
715 use openacc_internal, only: acc_get_device_type_l
kono
parents:
diff changeset
716 use openacc_kinds
kono
parents:
diff changeset
717 integer (acc_device_kind) acc_get_device_type_h
kono
parents:
diff changeset
718 acc_get_device_type_h = acc_get_device_type_l ()
kono
parents:
diff changeset
719 end function
kono
parents:
diff changeset
720
kono
parents:
diff changeset
721 subroutine acc_set_device_num_h (n, d)
kono
parents:
diff changeset
722 use openacc_internal, only: acc_set_device_num_l
kono
parents:
diff changeset
723 use openacc_kinds
kono
parents:
diff changeset
724 integer n
kono
parents:
diff changeset
725 integer (acc_device_kind) d
kono
parents:
diff changeset
726 call acc_set_device_num_l (n, d)
kono
parents:
diff changeset
727 end subroutine
kono
parents:
diff changeset
728
kono
parents:
diff changeset
729 function acc_get_device_num_h (d)
kono
parents:
diff changeset
730 use openacc_internal, only: acc_get_device_num_l
kono
parents:
diff changeset
731 use openacc_kinds
kono
parents:
diff changeset
732 integer acc_get_device_num_h
kono
parents:
diff changeset
733 integer (acc_device_kind) d
kono
parents:
diff changeset
734 acc_get_device_num_h = acc_get_device_num_l (d)
kono
parents:
diff changeset
735 end function
kono
parents:
diff changeset
736
kono
parents:
diff changeset
737 function acc_async_test_h (a)
kono
parents:
diff changeset
738 use openacc_internal, only: acc_async_test_l
kono
parents:
diff changeset
739 logical acc_async_test_h
kono
parents:
diff changeset
740 integer a
kono
parents:
diff changeset
741 if (acc_async_test_l (a) .eq. 1) then
kono
parents:
diff changeset
742 acc_async_test_h = .TRUE.
kono
parents:
diff changeset
743 else
kono
parents:
diff changeset
744 acc_async_test_h = .FALSE.
kono
parents:
diff changeset
745 end if
kono
parents:
diff changeset
746 end function
kono
parents:
diff changeset
747
kono
parents:
diff changeset
748 function acc_async_test_all_h ()
kono
parents:
diff changeset
749 use openacc_internal, only: acc_async_test_all_l
kono
parents:
diff changeset
750 logical acc_async_test_all_h
kono
parents:
diff changeset
751 if (acc_async_test_all_l () .eq. 1) then
kono
parents:
diff changeset
752 acc_async_test_all_h = .TRUE.
kono
parents:
diff changeset
753 else
kono
parents:
diff changeset
754 acc_async_test_all_h = .FALSE.
kono
parents:
diff changeset
755 end if
kono
parents:
diff changeset
756 end function
kono
parents:
diff changeset
757
kono
parents:
diff changeset
758 subroutine acc_wait_h (a)
kono
parents:
diff changeset
759 use openacc_internal, only: acc_wait_l
kono
parents:
diff changeset
760 integer a
kono
parents:
diff changeset
761 call acc_wait_l (a)
kono
parents:
diff changeset
762 end subroutine
kono
parents:
diff changeset
763
kono
parents:
diff changeset
764 subroutine acc_wait_async_h (a1, a2)
kono
parents:
diff changeset
765 use openacc_internal, only: acc_wait_async_l
kono
parents:
diff changeset
766 integer a1, a2
kono
parents:
diff changeset
767 call acc_wait_async_l (a1, a2)
kono
parents:
diff changeset
768 end subroutine
kono
parents:
diff changeset
769
kono
parents:
diff changeset
770 subroutine acc_wait_all_h ()
kono
parents:
diff changeset
771 use openacc_internal, only: acc_wait_all_l
kono
parents:
diff changeset
772 call acc_wait_all_l ()
kono
parents:
diff changeset
773 end subroutine
kono
parents:
diff changeset
774
kono
parents:
diff changeset
775 subroutine acc_wait_all_async_h (a)
kono
parents:
diff changeset
776 use openacc_internal, only: acc_wait_all_async_l
kono
parents:
diff changeset
777 integer a
kono
parents:
diff changeset
778 call acc_wait_all_async_l (a)
kono
parents:
diff changeset
779 end subroutine
kono
parents:
diff changeset
780
kono
parents:
diff changeset
781 subroutine acc_init_h (d)
kono
parents:
diff changeset
782 use openacc_internal, only: acc_init_l
kono
parents:
diff changeset
783 use openacc_kinds
kono
parents:
diff changeset
784 integer (acc_device_kind) d
kono
parents:
diff changeset
785 call acc_init_l (d)
kono
parents:
diff changeset
786 end subroutine
kono
parents:
diff changeset
787
kono
parents:
diff changeset
788 subroutine acc_shutdown_h (d)
kono
parents:
diff changeset
789 use openacc_internal, only: acc_shutdown_l
kono
parents:
diff changeset
790 use openacc_kinds
kono
parents:
diff changeset
791 integer (acc_device_kind) d
kono
parents:
diff changeset
792 call acc_shutdown_l (d)
kono
parents:
diff changeset
793 end subroutine
kono
parents:
diff changeset
794
kono
parents:
diff changeset
795 function acc_on_device_h (d)
kono
parents:
diff changeset
796 use openacc_internal, only: acc_on_device_l
kono
parents:
diff changeset
797 use openacc_kinds
kono
parents:
diff changeset
798 integer (acc_device_kind) d
kono
parents:
diff changeset
799 logical acc_on_device_h
kono
parents:
diff changeset
800 if (acc_on_device_l (d) .eq. 1) then
kono
parents:
diff changeset
801 acc_on_device_h = .TRUE.
kono
parents:
diff changeset
802 else
kono
parents:
diff changeset
803 acc_on_device_h = .FALSE.
kono
parents:
diff changeset
804 end if
kono
parents:
diff changeset
805 end function
kono
parents:
diff changeset
806
kono
parents:
diff changeset
807 subroutine acc_copyin_32_h (a, len)
kono
parents:
diff changeset
808 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
809 use openacc_internal, only: acc_copyin_l
kono
parents:
diff changeset
810 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
811 type (*), dimension (*) :: a
kono
parents:
diff changeset
812 integer (c_int32_t) len
kono
parents:
diff changeset
813 call acc_copyin_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
814 end subroutine
kono
parents:
diff changeset
815
kono
parents:
diff changeset
816 subroutine acc_copyin_64_h (a, len)
kono
parents:
diff changeset
817 use iso_c_binding, only: c_int64_t, c_size_t
kono
parents:
diff changeset
818 use openacc_internal, only: acc_copyin_l
kono
parents:
diff changeset
819 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
820 type (*), dimension (*) :: a
kono
parents:
diff changeset
821 integer (c_int64_t) len
kono
parents:
diff changeset
822 call acc_copyin_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
823 end subroutine
kono
parents:
diff changeset
824
kono
parents:
diff changeset
825 subroutine acc_copyin_array_h (a)
kono
parents:
diff changeset
826 use openacc_internal, only: acc_copyin_l
kono
parents:
diff changeset
827 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
828 call acc_copyin_l (a, sizeof (a))
kono
parents:
diff changeset
829 end subroutine
kono
parents:
diff changeset
830
kono
parents:
diff changeset
831 subroutine acc_present_or_copyin_32_h (a, len)
kono
parents:
diff changeset
832 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
833 use openacc_internal, only: acc_present_or_copyin_l
kono
parents:
diff changeset
834 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
835 type (*), dimension (*) :: a
kono
parents:
diff changeset
836 integer (c_int32_t) len
kono
parents:
diff changeset
837 call acc_present_or_copyin_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
838 end subroutine
kono
parents:
diff changeset
839
kono
parents:
diff changeset
840 subroutine acc_present_or_copyin_64_h (a, len)
kono
parents:
diff changeset
841 use iso_c_binding, only: c_int64_t, c_size_t
kono
parents:
diff changeset
842 use openacc_internal, only: acc_present_or_copyin_l
kono
parents:
diff changeset
843 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
844 type (*), dimension (*) :: a
kono
parents:
diff changeset
845 integer (c_int64_t) len
kono
parents:
diff changeset
846 call acc_present_or_copyin_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
847 end subroutine
kono
parents:
diff changeset
848
kono
parents:
diff changeset
849 subroutine acc_present_or_copyin_array_h (a)
kono
parents:
diff changeset
850 use openacc_internal, only: acc_present_or_copyin_l
kono
parents:
diff changeset
851 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
852 call acc_present_or_copyin_l (a, sizeof (a))
kono
parents:
diff changeset
853 end subroutine
kono
parents:
diff changeset
854
kono
parents:
diff changeset
855 subroutine acc_create_32_h (a, len)
kono
parents:
diff changeset
856 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
857 use openacc_internal, only: acc_create_l
kono
parents:
diff changeset
858 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
859 type (*), dimension (*) :: a
kono
parents:
diff changeset
860 integer (c_int32_t) len
kono
parents:
diff changeset
861 call acc_create_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
862 end subroutine
kono
parents:
diff changeset
863
kono
parents:
diff changeset
864 subroutine acc_create_64_h (a, len)
kono
parents:
diff changeset
865 use iso_c_binding, only: c_int64_t, c_size_t
kono
parents:
diff changeset
866 use openacc_internal, only: acc_create_l
kono
parents:
diff changeset
867 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
868 type (*), dimension (*) :: a
kono
parents:
diff changeset
869 integer (c_int64_t) len
kono
parents:
diff changeset
870 call acc_create_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
871 end subroutine
kono
parents:
diff changeset
872
kono
parents:
diff changeset
873 subroutine acc_create_array_h (a)
kono
parents:
diff changeset
874 use openacc_internal, only: acc_create_l
kono
parents:
diff changeset
875 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
876 call acc_create_l (a, sizeof (a))
kono
parents:
diff changeset
877 end subroutine
kono
parents:
diff changeset
878
kono
parents:
diff changeset
879 subroutine acc_present_or_create_32_h (a, len)
kono
parents:
diff changeset
880 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
881 use openacc_internal, only: acc_present_or_create_l
kono
parents:
diff changeset
882 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
883 type (*), dimension (*) :: a
kono
parents:
diff changeset
884 integer (c_int32_t) len
kono
parents:
diff changeset
885 call acc_present_or_create_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
886 end subroutine
kono
parents:
diff changeset
887
kono
parents:
diff changeset
888 subroutine acc_present_or_create_64_h (a, len)
kono
parents:
diff changeset
889 use iso_c_binding, only: c_int64_t, c_size_t
kono
parents:
diff changeset
890 use openacc_internal, only: acc_present_or_create_l
kono
parents:
diff changeset
891 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
892 type (*), dimension (*) :: a
kono
parents:
diff changeset
893 integer (c_int64_t) len
kono
parents:
diff changeset
894 call acc_present_or_create_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
895 end subroutine
kono
parents:
diff changeset
896
kono
parents:
diff changeset
897 subroutine acc_present_or_create_array_h (a)
kono
parents:
diff changeset
898 use openacc_internal, only: acc_present_or_create_l
kono
parents:
diff changeset
899 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
900 call acc_present_or_create_l (a, sizeof (a))
kono
parents:
diff changeset
901 end subroutine
kono
parents:
diff changeset
902
kono
parents:
diff changeset
903 subroutine acc_copyout_32_h (a, len)
kono
parents:
diff changeset
904 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
905 use openacc_internal, only: acc_copyout_l
kono
parents:
diff changeset
906 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
907 type (*), dimension (*) :: a
kono
parents:
diff changeset
908 integer (c_int32_t) len
kono
parents:
diff changeset
909 call acc_copyout_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
910 end subroutine
kono
parents:
diff changeset
911
kono
parents:
diff changeset
912 subroutine acc_copyout_64_h (a, len)
kono
parents:
diff changeset
913 use iso_c_binding, only: c_int64_t, c_size_t
kono
parents:
diff changeset
914 use openacc_internal, only: acc_copyout_l
kono
parents:
diff changeset
915 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
916 type (*), dimension (*) :: a
kono
parents:
diff changeset
917 integer (c_int64_t) len
kono
parents:
diff changeset
918 call acc_copyout_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
919 end subroutine
kono
parents:
diff changeset
920
kono
parents:
diff changeset
921 subroutine acc_copyout_array_h (a)
kono
parents:
diff changeset
922 use openacc_internal, only: acc_copyout_l
kono
parents:
diff changeset
923 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
924 call acc_copyout_l (a, sizeof (a))
kono
parents:
diff changeset
925 end subroutine
kono
parents:
diff changeset
926
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
927 subroutine acc_copyout_finalize_32_h (a, len)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
928 use iso_c_binding, only: c_int32_t, c_size_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
929 use openacc_internal, only: acc_copyout_finalize_l
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
930 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
931 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
932 integer (c_int32_t) len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
933 call acc_copyout_finalize_l (a, int (len, kind = c_size_t))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
934 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
935
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
936 subroutine acc_copyout_finalize_64_h (a, len)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
937 use iso_c_binding, only: c_int64_t, c_size_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
938 use openacc_internal, only: acc_copyout_finalize_l
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
939 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
940 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
941 integer (c_int64_t) len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
942 call acc_copyout_finalize_l (a, int (len, kind = c_size_t))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
943 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
944
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
945 subroutine acc_copyout_finalize_array_h (a)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
946 use openacc_internal, only: acc_copyout_finalize_l
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
947 type (*), dimension (..), contiguous :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
948 call acc_copyout_finalize_l (a, sizeof (a))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
949 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
950
111
kono
parents:
diff changeset
951 subroutine acc_delete_32_h (a, len)
kono
parents:
diff changeset
952 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
953 use openacc_internal, only: acc_delete_l
kono
parents:
diff changeset
954 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
955 type (*), dimension (*) :: a
kono
parents:
diff changeset
956 integer (c_int32_t) len
kono
parents:
diff changeset
957 call acc_delete_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
958 end subroutine
kono
parents:
diff changeset
959
kono
parents:
diff changeset
960 subroutine acc_delete_64_h (a, len)
kono
parents:
diff changeset
961 use iso_c_binding, only: c_int64_t, c_size_t
kono
parents:
diff changeset
962 use openacc_internal, only: acc_delete_l
kono
parents:
diff changeset
963 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
964 type (*), dimension (*) :: a
kono
parents:
diff changeset
965 integer (c_int64_t) len
kono
parents:
diff changeset
966 call acc_delete_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
967 end subroutine
kono
parents:
diff changeset
968
kono
parents:
diff changeset
969 subroutine acc_delete_array_h (a)
kono
parents:
diff changeset
970 use openacc_internal, only: acc_delete_l
kono
parents:
diff changeset
971 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
972 call acc_delete_l (a, sizeof (a))
kono
parents:
diff changeset
973 end subroutine
kono
parents:
diff changeset
974
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
975 subroutine acc_delete_finalize_32_h (a, len)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
976 use iso_c_binding, only: c_int32_t, c_size_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
977 use openacc_internal, only: acc_delete_finalize_l
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
978 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
979 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
980 integer (c_int32_t) len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
981 call acc_delete_finalize_l (a, int (len, kind = c_size_t))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
982 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
983
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
984 subroutine acc_delete_finalize_64_h (a, len)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
985 use iso_c_binding, only: c_int64_t, c_size_t
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
986 use openacc_internal, only: acc_delete_finalize_l
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
987 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
988 type (*), dimension (*) :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
989 integer (c_int64_t) len
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
990 call acc_delete_finalize_l (a, int (len, kind = c_size_t))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
991 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
992
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
993 subroutine acc_delete_finalize_array_h (a)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
994 use openacc_internal, only: acc_delete_finalize_l
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
995 type (*), dimension (..), contiguous :: a
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
996 call acc_delete_finalize_l (a, sizeof (a))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
997 end subroutine
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
998
111
kono
parents:
diff changeset
999 subroutine acc_update_device_32_h (a, len)
kono
parents:
diff changeset
1000 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
1001 use openacc_internal, only: acc_update_device_l
kono
parents:
diff changeset
1002 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
1003 type (*), dimension (*) :: a
kono
parents:
diff changeset
1004 integer (c_int32_t) len
kono
parents:
diff changeset
1005 call acc_update_device_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
1006 end subroutine
kono
parents:
diff changeset
1007
kono
parents:
diff changeset
1008 subroutine acc_update_device_64_h (a, len)
kono
parents:
diff changeset
1009 use iso_c_binding, only: c_int64_t, c_size_t
kono
parents:
diff changeset
1010 use openacc_internal, only: acc_update_device_l
kono
parents:
diff changeset
1011 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
1012 type (*), dimension (*) :: a
kono
parents:
diff changeset
1013 integer (c_int64_t) len
kono
parents:
diff changeset
1014 call acc_update_device_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
1015 end subroutine
kono
parents:
diff changeset
1016
kono
parents:
diff changeset
1017 subroutine acc_update_device_array_h (a)
kono
parents:
diff changeset
1018 use openacc_internal, only: acc_update_device_l
kono
parents:
diff changeset
1019 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
1020 call acc_update_device_l (a, sizeof (a))
kono
parents:
diff changeset
1021 end subroutine
kono
parents:
diff changeset
1022
kono
parents:
diff changeset
1023 subroutine acc_update_self_32_h (a, len)
kono
parents:
diff changeset
1024 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
1025 use openacc_internal, only: acc_update_self_l
kono
parents:
diff changeset
1026 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
1027 type (*), dimension (*) :: a
kono
parents:
diff changeset
1028 integer (c_int32_t) len
kono
parents:
diff changeset
1029 call acc_update_self_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
1030 end subroutine
kono
parents:
diff changeset
1031
kono
parents:
diff changeset
1032 subroutine acc_update_self_64_h (a, len)
kono
parents:
diff changeset
1033 use iso_c_binding, only: c_int64_t, c_size_t
kono
parents:
diff changeset
1034 use openacc_internal, only: acc_update_self_l
kono
parents:
diff changeset
1035 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
1036 type (*), dimension (*) :: a
kono
parents:
diff changeset
1037 integer (c_int64_t) len
kono
parents:
diff changeset
1038 call acc_update_self_l (a, int (len, kind = c_size_t))
kono
parents:
diff changeset
1039 end subroutine
kono
parents:
diff changeset
1040
kono
parents:
diff changeset
1041 subroutine acc_update_self_array_h (a)
kono
parents:
diff changeset
1042 use openacc_internal, only: acc_update_self_l
kono
parents:
diff changeset
1043 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
1044 call acc_update_self_l (a, sizeof (a))
kono
parents:
diff changeset
1045 end subroutine
kono
parents:
diff changeset
1046
kono
parents:
diff changeset
1047 function acc_is_present_32_h (a, len)
kono
parents:
diff changeset
1048 use iso_c_binding, only: c_int32_t, c_size_t
kono
parents:
diff changeset
1049 use openacc_internal, only: acc_is_present_l
kono
parents:
diff changeset
1050 logical acc_is_present_32_h
kono
parents:
diff changeset
1051 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
1052 type (*), dimension (*) :: a
kono
parents:
diff changeset
1053 integer (c_int32_t) len
kono
parents:
diff changeset
1054 if (acc_is_present_l (a, int (len, kind = c_size_t)) .eq. 1) then
kono
parents:
diff changeset
1055 acc_is_present_32_h = .TRUE.
kono
parents:
diff changeset
1056 else
kono
parents:
diff changeset
1057 acc_is_present_32_h = .FALSE.
kono
parents:
diff changeset
1058 end if
kono
parents:
diff changeset
1059 end function
kono
parents:
diff changeset
1060
kono
parents:
diff changeset
1061 function acc_is_present_64_h (a, len)
kono
parents:
diff changeset
1062 use iso_c_binding, only: c_int64_t, c_size_t
kono
parents:
diff changeset
1063 use openacc_internal, only: acc_is_present_l
kono
parents:
diff changeset
1064 logical acc_is_present_64_h
kono
parents:
diff changeset
1065 !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
kono
parents:
diff changeset
1066 type (*), dimension (*) :: a
kono
parents:
diff changeset
1067 integer (c_int64_t) len
kono
parents:
diff changeset
1068 if (acc_is_present_l (a, int (len, kind = c_size_t)) .eq. 1) then
kono
parents:
diff changeset
1069 acc_is_present_64_h = .TRUE.
kono
parents:
diff changeset
1070 else
kono
parents:
diff changeset
1071 acc_is_present_64_h = .FALSE.
kono
parents:
diff changeset
1072 end if
kono
parents:
diff changeset
1073 end function
kono
parents:
diff changeset
1074
kono
parents:
diff changeset
1075 function acc_is_present_array_h (a)
kono
parents:
diff changeset
1076 use openacc_internal, only: acc_is_present_l
kono
parents:
diff changeset
1077 logical acc_is_present_array_h
kono
parents:
diff changeset
1078 type (*), dimension (..), contiguous :: a
kono
parents:
diff changeset
1079 acc_is_present_array_h = acc_is_present_l (a, sizeof (a)) == 1
kono
parents:
diff changeset
1080 end function