0
|
1 ! Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
|
|
2 ! Contributed by Jakub Jelinek <jakub@redhat.com>.
|
|
3
|
|
4 ! This file is part of the GNU OpenMP Library (libgomp).
|
|
5
|
|
6 ! 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 ! the Free Software Foundation; either version 3, or (at your option)
|
|
9 ! any later version.
|
|
10
|
|
11 ! Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
12 ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
13 ! FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
14 ! more details.
|
|
15
|
|
16 ! Under Section 7 of GPL version 3, you are granted additional
|
|
17 ! permissions described in the GCC Runtime Library Exception, version
|
|
18 ! 3.1, as published by the Free Software Foundation.
|
|
19
|
|
20 ! You should have received a copy of the GNU General Public License and
|
|
21 ! a copy of the GCC Runtime Library Exception along with this program;
|
|
22 ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
23 ! <http://www.gnu.org/licenses/>.
|
|
24
|
|
25 module omp_lib_kinds
|
|
26 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@
|
|
30 integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@
|
|
31 integer, parameter :: omp_sched_kind = 4
|
|
32 end module
|
|
33
|
|
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
|
|
39 integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2
|
|
40 integer (omp_sched_kind), parameter :: omp_sched_guided = 3
|
|
41 integer (omp_sched_kind), parameter :: omp_sched_auto = 4
|
|
42
|
|
43 interface
|
|
44 subroutine omp_init_lock (lock)
|
|
45 use omp_lib_kinds
|
|
46 integer (omp_lock_kind), intent (out) :: lock
|
|
47 end subroutine omp_init_lock
|
|
48 end interface
|
|
49
|
|
50 interface
|
|
51 subroutine omp_init_nest_lock (lock)
|
|
52 use omp_lib_kinds
|
|
53 integer (omp_nest_lock_kind), intent (out) :: lock
|
|
54 end subroutine omp_init_nest_lock
|
|
55 end interface
|
|
56
|
|
57 interface
|
|
58 subroutine omp_destroy_lock (lock)
|
|
59 use omp_lib_kinds
|
|
60 integer (omp_lock_kind), intent (inout) :: lock
|
|
61 end subroutine omp_destroy_lock
|
|
62 end interface
|
|
63
|
|
64 interface
|
|
65 subroutine omp_destroy_nest_lock (lock)
|
|
66 use omp_lib_kinds
|
|
67 integer (omp_nest_lock_kind), intent (inout) :: lock
|
|
68 end subroutine omp_destroy_nest_lock
|
|
69 end interface
|
|
70
|
|
71 interface
|
|
72 subroutine omp_set_lock (lock)
|
|
73 use omp_lib_kinds
|
|
74 integer (omp_lock_kind), intent (inout) :: lock
|
|
75 end subroutine omp_set_lock
|
|
76 end interface
|
|
77
|
|
78 interface
|
|
79 subroutine omp_set_nest_lock (lock)
|
|
80 use omp_lib_kinds
|
|
81 integer (omp_nest_lock_kind), intent (inout) :: lock
|
|
82 end subroutine omp_set_nest_lock
|
|
83 end interface
|
|
84
|
|
85 interface
|
|
86 subroutine omp_unset_lock (lock)
|
|
87 use omp_lib_kinds
|
|
88 integer (omp_lock_kind), intent (inout) :: lock
|
|
89 end subroutine omp_unset_lock
|
|
90 end interface
|
|
91
|
|
92 interface
|
|
93 subroutine omp_unset_nest_lock (lock)
|
|
94 use omp_lib_kinds
|
|
95 integer (omp_nest_lock_kind), intent (inout) :: lock
|
|
96 end subroutine omp_unset_nest_lock
|
|
97 end interface
|
|
98
|
|
99 interface omp_set_dynamic
|
|
100 subroutine omp_set_dynamic (set)
|
|
101 logical (4), intent (in) :: set
|
|
102 end subroutine omp_set_dynamic
|
|
103 subroutine omp_set_dynamic_8 (set)
|
|
104 logical (8), intent (in) :: set
|
|
105 end subroutine omp_set_dynamic_8
|
|
106 end interface
|
|
107
|
|
108 interface omp_set_nested
|
|
109 subroutine omp_set_nested (set)
|
|
110 logical (4), intent (in) :: set
|
|
111 end subroutine omp_set_nested
|
|
112 subroutine omp_set_nested_8 (set)
|
|
113 logical (8), intent (in) :: set
|
|
114 end subroutine omp_set_nested_8
|
|
115 end interface
|
|
116
|
|
117 interface omp_set_num_threads
|
|
118 subroutine omp_set_num_threads (set)
|
|
119 integer (4), intent (in) :: set
|
|
120 end subroutine omp_set_num_threads
|
|
121 subroutine omp_set_num_threads_8 (set)
|
|
122 integer (8), intent (in) :: set
|
|
123 end subroutine omp_set_num_threads_8
|
|
124 end interface
|
|
125
|
|
126 interface
|
|
127 function omp_get_dynamic ()
|
|
128 use omp_lib_kinds
|
|
129 logical (omp_logical_kind) :: omp_get_dynamic
|
|
130 end function omp_get_dynamic
|
|
131 end interface
|
|
132
|
|
133 interface
|
|
134 function omp_get_nested ()
|
|
135 use omp_lib_kinds
|
|
136 logical (omp_logical_kind) :: omp_get_nested
|
|
137 end function omp_get_nested
|
|
138 end interface
|
|
139
|
|
140 interface
|
|
141 function omp_in_parallel ()
|
|
142 use omp_lib_kinds
|
|
143 logical (omp_logical_kind) :: omp_in_parallel
|
|
144 end function omp_in_parallel
|
|
145 end interface
|
|
146
|
|
147 interface
|
|
148 function omp_test_lock (lock)
|
|
149 use omp_lib_kinds
|
|
150 logical (omp_logical_kind) :: omp_test_lock
|
|
151 integer (omp_lock_kind), intent (inout) :: lock
|
|
152 end function omp_test_lock
|
|
153 end interface
|
|
154
|
|
155 interface
|
|
156 function omp_get_max_threads ()
|
|
157 use omp_lib_kinds
|
|
158 integer (omp_integer_kind) :: omp_get_max_threads
|
|
159 end function omp_get_max_threads
|
|
160 end interface
|
|
161
|
|
162 interface
|
|
163 function omp_get_num_procs ()
|
|
164 use omp_lib_kinds
|
|
165 integer (omp_integer_kind) :: omp_get_num_procs
|
|
166 end function omp_get_num_procs
|
|
167 end interface
|
|
168
|
|
169 interface
|
|
170 function omp_get_num_threads ()
|
|
171 use omp_lib_kinds
|
|
172 integer (omp_integer_kind) :: omp_get_num_threads
|
|
173 end function omp_get_num_threads
|
|
174 end interface
|
|
175
|
|
176 interface
|
|
177 function omp_get_thread_num ()
|
|
178 use omp_lib_kinds
|
|
179 integer (omp_integer_kind) :: omp_get_thread_num
|
|
180 end function omp_get_thread_num
|
|
181 end interface
|
|
182
|
|
183 interface
|
|
184 function omp_test_nest_lock (lock)
|
|
185 use omp_lib_kinds
|
|
186 integer (omp_integer_kind) :: omp_test_nest_lock
|
|
187 integer (omp_nest_lock_kind), intent (inout) :: lock
|
|
188 end function omp_test_nest_lock
|
|
189 end interface
|
|
190
|
|
191 interface
|
|
192 function omp_get_wtick ()
|
|
193 double precision :: omp_get_wtick
|
|
194 end function omp_get_wtick
|
|
195 end interface
|
|
196
|
|
197 interface
|
|
198 function omp_get_wtime ()
|
|
199 double precision :: omp_get_wtime
|
|
200 end function omp_get_wtime
|
|
201 end interface
|
|
202
|
|
203 interface omp_set_schedule
|
|
204 subroutine omp_set_schedule (kind, modifier)
|
|
205 use omp_lib_kinds
|
|
206 integer (omp_sched_kind), intent (in) :: kind
|
|
207 integer (4), intent (in) :: modifier
|
|
208 end subroutine omp_set_schedule
|
|
209 subroutine omp_set_schedule_8 (kind, modifier)
|
|
210 use omp_lib_kinds
|
|
211 integer (omp_sched_kind), intent (in) :: kind
|
|
212 integer (8), intent (in) :: modifier
|
|
213 end subroutine omp_set_schedule_8
|
|
214 end interface
|
|
215
|
|
216 interface omp_get_schedule
|
|
217 subroutine omp_get_schedule (kind, modifier)
|
|
218 use omp_lib_kinds
|
|
219 integer (omp_sched_kind), intent (out) :: kind
|
|
220 integer (4), intent (out) :: modifier
|
|
221 end subroutine omp_get_schedule
|
|
222 subroutine omp_get_schedule_8 (kind, modifier)
|
|
223 use omp_lib_kinds
|
|
224 integer (omp_sched_kind), intent (out) :: kind
|
|
225 integer (8), intent (out) :: modifier
|
|
226 end subroutine omp_get_schedule_8
|
|
227 end interface
|
|
228
|
|
229 interface
|
|
230 function omp_get_thread_limit ()
|
|
231 use omp_lib_kinds
|
|
232 integer (omp_integer_kind) :: omp_get_thread_limit
|
|
233 end function omp_get_thread_limit
|
|
234 end interface
|
|
235
|
|
236 interface omp_set_max_active_levels
|
|
237 subroutine omp_set_max_active_levels (max_levels)
|
|
238 use omp_lib_kinds
|
|
239 integer (4), intent (in) :: max_levels
|
|
240 end subroutine omp_set_max_active_levels
|
|
241 subroutine omp_set_max_active_levels_8 (max_levels)
|
|
242 use omp_lib_kinds
|
|
243 integer (8), intent (in) :: max_levels
|
|
244 end subroutine omp_set_max_active_levels_8
|
|
245 end interface
|
|
246
|
|
247 interface
|
|
248 function omp_get_max_active_levels ()
|
|
249 use omp_lib_kinds
|
|
250 integer (omp_integer_kind) :: omp_get_max_active_levels
|
|
251 end function omp_get_max_active_levels
|
|
252 end interface
|
|
253
|
|
254 interface
|
|
255 function omp_get_level ()
|
|
256 use omp_lib_kinds
|
|
257 integer (omp_integer_kind) :: omp_get_level
|
|
258 end function omp_get_level
|
|
259 end interface
|
|
260
|
|
261 interface omp_get_ancestor_thread_num
|
|
262 function omp_get_ancestor_thread_num (level)
|
|
263 use omp_lib_kinds
|
|
264 integer (4), intent (in) :: level
|
|
265 integer (omp_integer_kind) :: omp_get_ancestor_thread_num
|
|
266 end function omp_get_ancestor_thread_num
|
|
267 function omp_get_ancestor_thread_num_8 (level)
|
|
268 use omp_lib_kinds
|
|
269 integer (8), intent (in) :: level
|
|
270 integer (omp_integer_kind) :: omp_get_ancestor_thread_num_8
|
|
271 end function omp_get_ancestor_thread_num_8
|
|
272 end interface
|
|
273
|
|
274 interface omp_get_team_size
|
|
275 function omp_get_team_size (level)
|
|
276 use omp_lib_kinds
|
|
277 integer (4), intent (in) :: level
|
|
278 integer (omp_integer_kind) :: omp_get_team_size
|
|
279 end function omp_get_team_size
|
|
280 function omp_get_team_size_8 (level)
|
|
281 use omp_lib_kinds
|
|
282 integer (8), intent (in) :: level
|
|
283 integer (omp_integer_kind) :: omp_get_team_size_8
|
|
284 end function omp_get_team_size_8
|
|
285 end interface
|
|
286
|
|
287 interface
|
|
288 function omp_get_active_level ()
|
|
289 use omp_lib_kinds
|
|
290 integer (omp_integer_kind) :: omp_get_active_level
|
|
291 end function omp_get_active_level
|
|
292 end interface
|
|
293
|
|
294 end module omp_lib
|