comparison libgomp/omp_lib.f90.in @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents a06113de4d67
children 84e7813d76e9
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 ! Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. 1 ! Copyright (C) 2005-2017 Free Software Foundation, Inc.
2 ! Contributed by Jakub Jelinek <jakub@redhat.com>. 2 ! Contributed by Jakub Jelinek <jakub@redhat.com>.
3 3
4 ! This file is part of the GNU OpenMP Library (libgomp). 4 ! This file is part of the GNU Offloading and Multi Processing Library
5 ! (libgomp).
5 6
6 ! Libgomp is free software; you can redistribute it and/or modify it 7 ! Libgomp is free software; you can redistribute it and/or modify it
7 ! under the terms of the GNU General Public License as published by 8 ! under the terms of the GNU General Public License as published by
8 ! the Free Software Foundation; either version 3, or (at your option) 9 ! the Free Software Foundation; either version 3, or (at your option)
9 ! any later version. 10 ! any later version.
22 ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23 ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 ! <http://www.gnu.org/licenses/>. 24 ! <http://www.gnu.org/licenses/>.
24 25
25 module omp_lib_kinds 26 module omp_lib_kinds
26 implicit none 27 implicit none
27 integer, parameter :: omp_integer_kind = 4
28 integer, parameter :: omp_logical_kind = 4
29 integer, parameter :: omp_lock_kind = @OMP_LOCK_KIND@ 28 integer, parameter :: omp_lock_kind = @OMP_LOCK_KIND@
30 integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@ 29 integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@
31 integer, parameter :: omp_sched_kind = 4 30 integer, parameter :: omp_sched_kind = 4
32 end module 31 integer, parameter :: omp_proc_bind_kind = 4
33 32 integer, parameter :: omp_lock_hint_kind = 4
34 module omp_lib
35 use omp_lib_kinds
36 implicit none
37 integer, parameter :: openmp_version = 200805
38 integer (omp_sched_kind), parameter :: omp_sched_static = 1 33 integer (omp_sched_kind), parameter :: omp_sched_static = 1
39 integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2 34 integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2
40 integer (omp_sched_kind), parameter :: omp_sched_guided = 3 35 integer (omp_sched_kind), parameter :: omp_sched_guided = 3
41 integer (omp_sched_kind), parameter :: omp_sched_auto = 4 36 integer (omp_sched_kind), parameter :: omp_sched_auto = 4
42 37 integer (omp_proc_bind_kind), &
43 interface 38 parameter :: omp_proc_bind_false = 0
44 subroutine omp_init_lock (lock) 39 integer (omp_proc_bind_kind), &
45 use omp_lib_kinds 40 parameter :: omp_proc_bind_true = 1
46 integer (omp_lock_kind), intent (out) :: lock 41 integer (omp_proc_bind_kind), &
42 parameter :: omp_proc_bind_master = 2
43 integer (omp_proc_bind_kind), &
44 parameter :: omp_proc_bind_close = 3
45 integer (omp_proc_bind_kind), &
46 parameter :: omp_proc_bind_spread = 4
47 integer (omp_lock_hint_kind), &
48 parameter :: omp_lock_hint_none = 0
49 integer (omp_lock_hint_kind), &
50 parameter :: omp_lock_hint_uncontended = 1
51 integer (omp_lock_hint_kind), &
52 parameter :: omp_lock_hint_contended = 2
53 integer (omp_lock_hint_kind), &
54 parameter :: omp_lock_hint_nonspeculative = 4
55 integer (omp_lock_hint_kind), &
56 parameter :: omp_lock_hint_speculative = 8
57 end module
58
59 module omp_lib
60 use omp_lib_kinds
61 implicit none
62 integer, parameter :: openmp_version = 201511
63
64 interface
65 subroutine omp_init_lock (svar)
66 use omp_lib_kinds
67 integer (omp_lock_kind), intent (out) :: svar
47 end subroutine omp_init_lock 68 end subroutine omp_init_lock
48 end interface 69 end interface
49 70
50 interface 71 interface
51 subroutine omp_init_nest_lock (lock) 72 subroutine omp_init_lock_with_hint (svar, hint)
52 use omp_lib_kinds 73 use omp_lib_kinds
53 integer (omp_nest_lock_kind), intent (out) :: lock 74 integer (omp_lock_kind), intent (out) :: svar
75 integer (omp_lock_hint_kind), intent (in) :: hint
76 end subroutine omp_init_lock_with_hint
77 end interface
78
79 interface
80 subroutine omp_init_nest_lock (nvar)
81 use omp_lib_kinds
82 integer (omp_nest_lock_kind), intent (out) :: nvar
54 end subroutine omp_init_nest_lock 83 end subroutine omp_init_nest_lock
55 end interface 84 end interface
56 85
57 interface 86 interface
58 subroutine omp_destroy_lock (lock) 87 subroutine omp_init_nest_lock_with_hint (nvar, hint)
59 use omp_lib_kinds 88 use omp_lib_kinds
60 integer (omp_lock_kind), intent (inout) :: lock 89 integer (omp_nest_lock_kind), intent (out) :: nvar
90 integer (omp_lock_hint_kind), intent (in) :: hint
91 end subroutine omp_init_nest_lock_with_hint
92 end interface
93
94 interface
95 subroutine omp_destroy_lock (svar)
96 use omp_lib_kinds
97 integer (omp_lock_kind), intent (inout) :: svar
61 end subroutine omp_destroy_lock 98 end subroutine omp_destroy_lock
62 end interface 99 end interface
63 100
64 interface 101 interface
65 subroutine omp_destroy_nest_lock (lock) 102 subroutine omp_destroy_nest_lock (nvar)
66 use omp_lib_kinds 103 use omp_lib_kinds
67 integer (omp_nest_lock_kind), intent (inout) :: lock 104 integer (omp_nest_lock_kind), intent (inout) :: nvar
68 end subroutine omp_destroy_nest_lock 105 end subroutine omp_destroy_nest_lock
69 end interface 106 end interface
70 107
71 interface 108 interface
72 subroutine omp_set_lock (lock) 109 subroutine omp_set_lock (svar)
73 use omp_lib_kinds 110 use omp_lib_kinds
74 integer (omp_lock_kind), intent (inout) :: lock 111 integer (omp_lock_kind), intent (inout) :: svar
75 end subroutine omp_set_lock 112 end subroutine omp_set_lock
76 end interface 113 end interface
77 114
78 interface 115 interface
79 subroutine omp_set_nest_lock (lock) 116 subroutine omp_set_nest_lock (nvar)
80 use omp_lib_kinds 117 use omp_lib_kinds
81 integer (omp_nest_lock_kind), intent (inout) :: lock 118 integer (omp_nest_lock_kind), intent (inout) :: nvar
82 end subroutine omp_set_nest_lock 119 end subroutine omp_set_nest_lock
83 end interface 120 end interface
84 121
85 interface 122 interface
86 subroutine omp_unset_lock (lock) 123 subroutine omp_unset_lock (svar)
87 use omp_lib_kinds 124 use omp_lib_kinds
88 integer (omp_lock_kind), intent (inout) :: lock 125 integer (omp_lock_kind), intent (inout) :: svar
89 end subroutine omp_unset_lock 126 end subroutine omp_unset_lock
90 end interface 127 end interface
91 128
92 interface 129 interface
93 subroutine omp_unset_nest_lock (lock) 130 subroutine omp_unset_nest_lock (nvar)
94 use omp_lib_kinds 131 use omp_lib_kinds
95 integer (omp_nest_lock_kind), intent (inout) :: lock 132 integer (omp_nest_lock_kind), intent (inout) :: nvar
96 end subroutine omp_unset_nest_lock 133 end subroutine omp_unset_nest_lock
97 end interface 134 end interface
98 135
99 interface omp_set_dynamic 136 interface omp_set_dynamic
100 subroutine omp_set_dynamic (set) 137 subroutine omp_set_dynamic (dynamic_threads)
101 logical (4), intent (in) :: set 138 logical (4), intent (in) :: dynamic_threads
102 end subroutine omp_set_dynamic 139 end subroutine omp_set_dynamic
103 subroutine omp_set_dynamic_8 (set) 140 subroutine omp_set_dynamic_8 (dynamic_threads)
104 logical (8), intent (in) :: set 141 logical (8), intent (in) :: dynamic_threads
105 end subroutine omp_set_dynamic_8 142 end subroutine omp_set_dynamic_8
106 end interface 143 end interface
107 144
108 interface omp_set_nested 145 interface omp_set_nested
109 subroutine omp_set_nested (set) 146 subroutine omp_set_nested (nested)
110 logical (4), intent (in) :: set 147 logical (4), intent (in) :: nested
111 end subroutine omp_set_nested 148 end subroutine omp_set_nested
112 subroutine omp_set_nested_8 (set) 149 subroutine omp_set_nested_8 (nested)
113 logical (8), intent (in) :: set 150 logical (8), intent (in) :: nested
114 end subroutine omp_set_nested_8 151 end subroutine omp_set_nested_8
115 end interface 152 end interface
116 153
117 interface omp_set_num_threads 154 interface omp_set_num_threads
118 subroutine omp_set_num_threads (set) 155 subroutine omp_set_num_threads (num_threads)
119 integer (4), intent (in) :: set 156 integer (4), intent (in) :: num_threads
120 end subroutine omp_set_num_threads 157 end subroutine omp_set_num_threads
121 subroutine omp_set_num_threads_8 (set) 158 subroutine omp_set_num_threads_8 (num_threads)
122 integer (8), intent (in) :: set 159 integer (8), intent (in) :: num_threads
123 end subroutine omp_set_num_threads_8 160 end subroutine omp_set_num_threads_8
124 end interface 161 end interface
125 162
126 interface 163 interface
127 function omp_get_dynamic () 164 function omp_get_dynamic ()
128 use omp_lib_kinds 165 logical (4) :: omp_get_dynamic
129 logical (omp_logical_kind) :: omp_get_dynamic
130 end function omp_get_dynamic 166 end function omp_get_dynamic
131 end interface 167 end interface
132 168
133 interface 169 interface
134 function omp_get_nested () 170 function omp_get_nested ()
135 use omp_lib_kinds 171 logical (4) :: omp_get_nested
136 logical (omp_logical_kind) :: omp_get_nested
137 end function omp_get_nested 172 end function omp_get_nested
138 end interface 173 end interface
139 174
140 interface 175 interface
141 function omp_in_parallel () 176 function omp_in_parallel ()
142 use omp_lib_kinds 177 logical (4) :: omp_in_parallel
143 logical (omp_logical_kind) :: omp_in_parallel
144 end function omp_in_parallel 178 end function omp_in_parallel
145 end interface 179 end interface
146 180
147 interface 181 interface
148 function omp_test_lock (lock) 182 function omp_test_lock (svar)
149 use omp_lib_kinds 183 use omp_lib_kinds
150 logical (omp_logical_kind) :: omp_test_lock 184 logical (4) :: omp_test_lock
151 integer (omp_lock_kind), intent (inout) :: lock 185 integer (omp_lock_kind), intent (inout) :: svar
152 end function omp_test_lock 186 end function omp_test_lock
153 end interface 187 end interface
154 188
155 interface 189 interface
156 function omp_get_max_threads () 190 function omp_get_max_threads ()
157 use omp_lib_kinds 191 integer (4) :: omp_get_max_threads
158 integer (omp_integer_kind) :: omp_get_max_threads
159 end function omp_get_max_threads 192 end function omp_get_max_threads
160 end interface 193 end interface
161 194
162 interface 195 interface
163 function omp_get_num_procs () 196 function omp_get_num_procs ()
164 use omp_lib_kinds 197 integer (4) :: omp_get_num_procs
165 integer (omp_integer_kind) :: omp_get_num_procs
166 end function omp_get_num_procs 198 end function omp_get_num_procs
167 end interface 199 end interface
168 200
169 interface 201 interface
170 function omp_get_num_threads () 202 function omp_get_num_threads ()
171 use omp_lib_kinds 203 integer (4) :: omp_get_num_threads
172 integer (omp_integer_kind) :: omp_get_num_threads
173 end function omp_get_num_threads 204 end function omp_get_num_threads
174 end interface 205 end interface
175 206
176 interface 207 interface
177 function omp_get_thread_num () 208 function omp_get_thread_num ()
178 use omp_lib_kinds 209 integer (4) :: omp_get_thread_num
179 integer (omp_integer_kind) :: omp_get_thread_num
180 end function omp_get_thread_num 210 end function omp_get_thread_num
181 end interface 211 end interface
182 212
183 interface 213 interface
184 function omp_test_nest_lock (lock) 214 function omp_test_nest_lock (nvar)
185 use omp_lib_kinds 215 use omp_lib_kinds
186 integer (omp_integer_kind) :: omp_test_nest_lock 216 integer (4) :: omp_test_nest_lock
187 integer (omp_nest_lock_kind), intent (inout) :: lock 217 integer (omp_nest_lock_kind), intent (inout) :: nvar
188 end function omp_test_nest_lock 218 end function omp_test_nest_lock
189 end interface 219 end interface
190 220
191 interface 221 interface
192 function omp_get_wtick () 222 function omp_get_wtick ()
199 double precision :: omp_get_wtime 229 double precision :: omp_get_wtime
200 end function omp_get_wtime 230 end function omp_get_wtime
201 end interface 231 end interface
202 232
203 interface omp_set_schedule 233 interface omp_set_schedule
204 subroutine omp_set_schedule (kind, modifier) 234 subroutine omp_set_schedule (kind, chunk_size)
205 use omp_lib_kinds 235 use omp_lib_kinds
206 integer (omp_sched_kind), intent (in) :: kind 236 integer (omp_sched_kind), intent (in) :: kind
207 integer (4), intent (in) :: modifier 237 integer (4), intent (in) :: chunk_size
208 end subroutine omp_set_schedule 238 end subroutine omp_set_schedule
209 subroutine omp_set_schedule_8 (kind, modifier) 239 subroutine omp_set_schedule_8 (kind, chunk_size)
210 use omp_lib_kinds 240 use omp_lib_kinds
211 integer (omp_sched_kind), intent (in) :: kind 241 integer (omp_sched_kind), intent (in) :: kind
212 integer (8), intent (in) :: modifier 242 integer (8), intent (in) :: chunk_size
213 end subroutine omp_set_schedule_8 243 end subroutine omp_set_schedule_8
214 end interface 244 end interface
215 245
216 interface omp_get_schedule 246 interface omp_get_schedule
217 subroutine omp_get_schedule (kind, modifier) 247 subroutine omp_get_schedule (kind, chunk_size)
218 use omp_lib_kinds 248 use omp_lib_kinds
219 integer (omp_sched_kind), intent (out) :: kind 249 integer (omp_sched_kind), intent (out) :: kind
220 integer (4), intent (out) :: modifier 250 integer (4), intent (out) :: chunk_size
221 end subroutine omp_get_schedule 251 end subroutine omp_get_schedule
222 subroutine omp_get_schedule_8 (kind, modifier) 252 subroutine omp_get_schedule_8 (kind, chunk_size)
223 use omp_lib_kinds 253 use omp_lib_kinds
224 integer (omp_sched_kind), intent (out) :: kind 254 integer (omp_sched_kind), intent (out) :: kind
225 integer (8), intent (out) :: modifier 255 integer (8), intent (out) :: chunk_size
226 end subroutine omp_get_schedule_8 256 end subroutine omp_get_schedule_8
227 end interface 257 end interface
228 258
229 interface 259 interface
230 function omp_get_thread_limit () 260 function omp_get_thread_limit ()
231 use omp_lib_kinds 261 integer (4) :: omp_get_thread_limit
232 integer (omp_integer_kind) :: omp_get_thread_limit
233 end function omp_get_thread_limit 262 end function omp_get_thread_limit
234 end interface 263 end interface
235 264
236 interface omp_set_max_active_levels 265 interface omp_set_max_active_levels
237 subroutine omp_set_max_active_levels (max_levels) 266 subroutine omp_set_max_active_levels (max_levels)
238 use omp_lib_kinds
239 integer (4), intent (in) :: max_levels 267 integer (4), intent (in) :: max_levels
240 end subroutine omp_set_max_active_levels 268 end subroutine omp_set_max_active_levels
241 subroutine omp_set_max_active_levels_8 (max_levels) 269 subroutine omp_set_max_active_levels_8 (max_levels)
242 use omp_lib_kinds
243 integer (8), intent (in) :: max_levels 270 integer (8), intent (in) :: max_levels
244 end subroutine omp_set_max_active_levels_8 271 end subroutine omp_set_max_active_levels_8
245 end interface 272 end interface
246 273
247 interface 274 interface
248 function omp_get_max_active_levels () 275 function omp_get_max_active_levels ()
249 use omp_lib_kinds 276 integer (4) :: omp_get_max_active_levels
250 integer (omp_integer_kind) :: omp_get_max_active_levels
251 end function omp_get_max_active_levels 277 end function omp_get_max_active_levels
252 end interface 278 end interface
253 279
254 interface 280 interface
255 function omp_get_level () 281 function omp_get_level ()
256 use omp_lib_kinds 282 integer (4) :: omp_get_level
257 integer (omp_integer_kind) :: omp_get_level
258 end function omp_get_level 283 end function omp_get_level
259 end interface 284 end interface
260 285
261 interface omp_get_ancestor_thread_num 286 interface omp_get_ancestor_thread_num
262 function omp_get_ancestor_thread_num (level) 287 function omp_get_ancestor_thread_num (level)
263 use omp_lib_kinds
264 integer (4), intent (in) :: level 288 integer (4), intent (in) :: level
265 integer (omp_integer_kind) :: omp_get_ancestor_thread_num 289 integer (4) :: omp_get_ancestor_thread_num
266 end function omp_get_ancestor_thread_num 290 end function omp_get_ancestor_thread_num
267 function omp_get_ancestor_thread_num_8 (level) 291 function omp_get_ancestor_thread_num_8 (level)
268 use omp_lib_kinds
269 integer (8), intent (in) :: level 292 integer (8), intent (in) :: level
270 integer (omp_integer_kind) :: omp_get_ancestor_thread_num_8 293 integer (4) :: omp_get_ancestor_thread_num_8
271 end function omp_get_ancestor_thread_num_8 294 end function omp_get_ancestor_thread_num_8
272 end interface 295 end interface
273 296
274 interface omp_get_team_size 297 interface omp_get_team_size
275 function omp_get_team_size (level) 298 function omp_get_team_size (level)
276 use omp_lib_kinds
277 integer (4), intent (in) :: level 299 integer (4), intent (in) :: level
278 integer (omp_integer_kind) :: omp_get_team_size 300 integer (4) :: omp_get_team_size
279 end function omp_get_team_size 301 end function omp_get_team_size
280 function omp_get_team_size_8 (level) 302 function omp_get_team_size_8 (level)
281 use omp_lib_kinds
282 integer (8), intent (in) :: level 303 integer (8), intent (in) :: level
283 integer (omp_integer_kind) :: omp_get_team_size_8 304 integer (4) :: omp_get_team_size_8
284 end function omp_get_team_size_8 305 end function omp_get_team_size_8
285 end interface 306 end interface
286 307
287 interface 308 interface
288 function omp_get_active_level () 309 function omp_get_active_level ()
289 use omp_lib_kinds 310 integer (4) :: omp_get_active_level
290 integer (omp_integer_kind) :: omp_get_active_level
291 end function omp_get_active_level 311 end function omp_get_active_level
292 end interface 312 end interface
293 313
314 interface
315 function omp_in_final ()
316 logical (4) :: omp_in_final
317 end function omp_in_final
318 end interface
319
320 interface
321 function omp_get_cancellation ()
322 logical (4) :: omp_get_cancellation
323 end function omp_get_cancellation
324 end interface
325
326 interface
327 function omp_get_proc_bind ()
328 use omp_lib_kinds
329 integer (omp_proc_bind_kind) :: omp_get_proc_bind
330 end function omp_get_proc_bind
331 end interface
332
333 interface
334 function omp_get_num_places ()
335 integer (4) :: omp_get_num_places
336 end function omp_get_num_places
337 end interface
338
339 interface omp_get_place_num_procs
340 function omp_get_place_num_procs (place_num)
341 integer (4), intent(in) :: place_num
342 integer (4) :: omp_get_place_num_procs
343 end function omp_get_place_num_procs
344
345 function omp_get_place_num_procs_8 (place_num)
346 integer (8), intent(in) :: place_num
347 integer (4) :: omp_get_place_num_procs_8
348 end function omp_get_place_num_procs_8
349 end interface
350
351 interface omp_get_place_proc_ids
352 subroutine omp_get_place_proc_ids (place_num, ids)
353 integer (4), intent(in) :: place_num
354 integer (4), intent(out) :: ids(*)
355 end subroutine omp_get_place_proc_ids
356
357 subroutine omp_get_place_proc_ids_8 (place_num, ids)
358 integer (8), intent(in) :: place_num
359 integer (8), intent(out) :: ids(*)
360 end subroutine omp_get_place_proc_ids_8
361 end interface
362
363 interface
364 function omp_get_place_num ()
365 integer (4) :: omp_get_place_num
366 end function omp_get_place_num
367 end interface
368
369 interface
370 function omp_get_partition_num_places ()
371 integer (4) :: omp_get_partition_num_places
372 end function omp_get_partition_num_places
373 end interface
374
375 interface omp_get_partition_place_nums
376 subroutine omp_get_partition_place_nums (place_nums)
377 integer (4), intent(out) :: place_nums(*)
378 end subroutine omp_get_partition_place_nums
379
380 subroutine omp_get_partition_place_nums_8 (place_nums)
381 integer (8), intent(out) :: place_nums(*)
382 end subroutine omp_get_partition_place_nums_8
383 end interface
384
385 interface omp_set_default_device
386 subroutine omp_set_default_device (device_num)
387 integer (4), intent (in) :: device_num
388 end subroutine omp_set_default_device
389 subroutine omp_set_default_device_8 (device_num)
390 integer (8), intent (in) :: device_num
391 end subroutine omp_set_default_device_8
392 end interface
393
394 interface
395 function omp_get_default_device ()
396 integer (4) :: omp_get_default_device
397 end function omp_get_default_device
398 end interface
399
400 interface
401 function omp_get_num_devices ()
402 integer (4) :: omp_get_num_devices
403 end function omp_get_num_devices
404 end interface
405
406 interface
407 function omp_get_num_teams ()
408 integer (4) :: omp_get_num_teams
409 end function omp_get_num_teams
410 end interface
411
412 interface
413 function omp_get_team_num ()
414 integer (4) :: omp_get_team_num
415 end function omp_get_team_num
416 end interface
417
418 interface
419 function omp_is_initial_device ()
420 logical (4) :: omp_is_initial_device
421 end function omp_is_initial_device
422 end interface
423
424 interface
425 function omp_get_initial_device ()
426 integer (4) :: omp_get_initial_device
427 end function omp_get_initial_device
428 end interface
429
430 interface
431 function omp_get_max_task_priority ()
432 integer (4) :: omp_get_max_task_priority
433 end function omp_get_max_task_priority
434 end interface
435
294 end module omp_lib 436 end module omp_lib