This source file includes following definitions.
- Copyright
- bar
1 ! -*- f90 -*-
2 !
3 ! Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved.
4 ! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
5 ! All rights reserved.
6 ! Copyright (c) 2012 The University of Tennessee and The University
7 ! of Tennessee Research Foundation. All rights
8 ! reserved.
9 ! Copyright (c) 2012 Inria. All rights reserved.
10 ! Copyright (c) 2015-2019 Research Organization for Information Science
11 ! and Technology (RIST). All rights reserved.
12 ! $COPYRIGHT$
13 !
14 ! This file provides the interface specifications for the MPI Fortran
15 ! API bindings. It effectively maps between public names ("MPI_Init")
16 ! and the back-end OMPI implementation subroutine name (e.g.,
17 ! "ompi_init_f").
18 !
19
20 #include "ompi/mpi/fortran/configure-fortran-output.h"
21
22 !
23 ! Most of the "wrapper" subroutines in the mpi_f08 module (i.e., all
24 ! the ones prototyped in this file) are simple routines that simply
25 ! invoke a back-end ompi_*_f() subroutine, which is BIND(C)-bound to a
26 ! back-end C function. Easy-peasy.
27 !
28 ! However, a bunch of MPI Fortran subroutines use LOGICAL dummy
29 ! parameters, and Fortran disallows passing LOGICAL parameters to
30 ! BIND(C) routines (because the .TRUE. and .FALSE. values are not
31 ! standardized (!)). Hence, for these
32 ! subroutines-with-LOGICAL-params, we have to be creative on how to
33 ! invoke the back-end ompi_*_f() C function. There are 2 cases:
34
35 ! 1. If the Fortran interface has a LOGICAL parameter and no
36 ! TYPE(MPI_Status) parameter, the individual wrapper implementation
37 ! files (e.g., finalized_f08.F90) use the "mpi" module to get a
38 ! interface for the subroutine and call the PMPI_* name of the
39 ! function, which then invokes the corresponding function in the
40 ! ompi/mpi/fortran/mpif-h directory.
41 !
42 ! This is a bit of a hack: the "mpi" module will provide the right
43 ! Fortran interface so that the compiler can verify that we're passing
44 ! the right types (e.g., convert MPI handles from comm to
45 ! comm%MPI_VAL). But here's the hack part: when we pass *unbounded
46 ! arrays* of handles (e.g., the sendtypes and recvtypes arrays
47 ! MPI_Alltoallw), we declare that the corresponding ompi_*_f()
48 ! subroutine takes a *scalar*, and then we pass sendtypes(0)%MPI_VAL.
49 !
50 ! >>>THIS IS A LIE!<<< We're passing a scalar to something that
51 ! expects an array.
52 !
53 ! However, remember that Fortran passes by reference. So the compiler
54 ! will pass a pointer to sendtypes(0)%MPI_VAL (i.e., the first integer
55 ! in the array). And since the mpi_f08 handles were cleverly designed
56 ! to be exactly equivalent to a single INTEGER, an array of mpi_f08
57 ! handles is exactly equivalent to an array of INTEGERS. So passing
58 ! an address to the first MPI_VAL is exactly the same as passing an
59 ! array of INTEGERS.
60 !
61 ! Specifically: the back-end C function (in *.c files in
62 ! ompi/mpi/fortran/mpif-h) gets an (MPI_Fint*), and it's all good.
63 !
64 ! The key here is that there is a disconnect between Fortran and C:
65 ! we're telling the Fortran compiler what the C interface is, and
66 ! we're lying. But just a little bit. No one gets hurt.
67 !
68 ! Yes, this is a total hack. But Craig Rasumussen tells me that this
69 ! is actually quite a common hack in the Fortran developer world, so
70 ! we shouldn't feel bad about using it. Shrug.
71 !
72 ! 2. If the Fortran interface has both LOGICAL and TYPE(MPI_Status)
73 ! parameters, then we have to do even more tricks than we described
74 ! above. :-(
75 !
76 ! The problem occurs because in the mpi_f08 module, an MPI_Status is
77 ! TYPE(MPI_Status), but in the mpi module, it's INTEGER,
78 ! DIMENSION(MPI_STATUS_SIZE). Just like MPI handles, TYPE(MPI_Status)
79 ! was cleverly designed so that it can be identical (in terms of a
80 ! memory map) to INTEGER, DIMENSION(MPI_STATUS_SIZE). So we just have
81 ! to fool the compiler into accepting it (it's the same C<-->Fortran
82 ! disconnect from #1).
83 !
84 ! So in this case, we actually don't "use mpi" at all -- we just add
85 ! an "interface" block for the PMPI_* subroutine that we want to call.
86 ! And we lie in that interface block, saying that the status argument
87 ! is TYPE(MPI_Status) (rather than an INTEGER,
88 ! DIMENSION(MPI_STATUS_SIZE), which is what it *really* is) -- i.e.,
89 ! the same type that we already have.
90 !
91 ! For the C programmers reading this, this is very much analogous to
92 ! something like this:
93 !
94 ! $ cat header.h
95 ! void foo(int *param);
96 ! $ cat source.c
97 ! #include "header.h"
98 !
99 !
100 ! void bar(char *param) {
101 ! foo(param);
102 ! }
103 !
104 ! To fix the compiler warning, instead of including "header.h", we
105 ! just put a byte-equivalent prototype in source.c:
106 !
107 ! $ cat source.c
108 ! void foo(char *param);
109 ! void bar(char *param) {
110 ! foo(param);
111 ! }
112 !
113 ! And now it compiles without warning.
114 !
115 ! The main difference here is that in Fortran, it is an error -- not a
116 ! warning.
117 !
118 ! Again, we're making the Fortran compiler happy, but we're lying
119 ! because we know the back-end memory representation of the two types
120 ! is the same.
121 !
122 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
123 !
124 ! Wasn't that simple? Here's the list of subroutines that are not
125 ! prototyped in this file because they fall into case #1 or #2, above.
126 !
127 ! Case #1:
128 ! MPI_Cart_create
129 ! MPI_Cart_get
130 ! MPI_Cart_map
131 ! MPI_Cart_sub
132 ! MPI_Comm_get_attr
133 ! MPI_Comm_test_inter
134 ! MPI_Dist_graph_create
135 ! MPI_Dist_graph_create_adjacent
136 ! MPI_Dist_graph_neighbors_count
137 ! MPI_File_get_atomicity
138 ! MPI_File_set_atomicity
139 ! MPI_Finalized
140 ! MPI_Graph_create
141 ! MPI_Info_get
142 ! MPI_Info_get_valuelen
143 ! MPI_Initialized
144 ! MPI_Intercomm_merge
145 ! MPI_Is_thread_main
146 ! MPI_Op_commutative
147 ! MPI_Op_create
148 ! MPI_Type_get_attr
149 ! MPI_Win_get_attr
150 ! MPI_Win_test
151 !
152 ! Case #2:
153 ! MPI_Iprobe
154 ! MPI_Improbe
155 ! MPI_Request_get_status
156 ! MPI_Status_set_cancelled
157 ! MPI_Test
158 ! MPI_Testall
159 ! MPI_Testany
160 ! MPI_Testsome
161 ! MPI_Test_cancelled
162 !
163
164 interface
165
166 subroutine ompi_bsend_f(buf,count,datatype,dest,tag,comm,ierror) &
167 BIND(C, name="ompi_bsend_f")
168 implicit none
169 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
170 INTEGER, INTENT(IN) :: count, dest, tag
171 INTEGER, INTENT(IN) :: datatype
172 INTEGER, INTENT(IN) :: comm
173 INTEGER, INTENT(OUT) :: ierror
174 end subroutine ompi_bsend_f
175
176 subroutine ompi_bsend_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
177 BIND(C, name="ompi_bsend_init_f")
178 implicit none
179 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
180 INTEGER, INTENT(IN) :: count, dest, tag
181 INTEGER, INTENT(IN) :: datatype
182 INTEGER, INTENT(IN) :: comm
183 INTEGER, INTENT(OUT) :: request
184 INTEGER, INTENT(OUT) :: ierror
185 end subroutine ompi_bsend_init_f
186
187 subroutine ompi_buffer_attach_f(buffer,size,ierror) &
188 BIND(C, name="ompi_buffer_attach_f")
189 implicit none
190 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buffer
191 INTEGER, INTENT(IN) :: size
192 INTEGER, INTENT(OUT) :: ierror
193 end subroutine ompi_buffer_attach_f
194
195 ! Note that we have an F08-specific C implementation function for
196 ! MPI_BUFFER_DETACH (i.e., it is different than the mpif.h / mpi
197 ! module C implementation function).
198 subroutine ompi_buffer_detach_f(buffer_addr,size,ierror) &
199 BIND(C, name="ompi_buffer_detach_f08")
200 USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
201 implicit none
202 TYPE(C_PTR), INTENT(OUT) :: buffer_addr
203 INTEGER, INTENT(OUT) :: size
204 INTEGER, INTENT(OUT) :: ierror
205 end subroutine ompi_buffer_detach_f
206
207 subroutine ompi_cancel_f(request,ierror) &
208 BIND(C, name="ompi_cancel_f")
209 implicit none
210 INTEGER, INTENT(IN) :: request
211 INTEGER, INTENT(OUT) :: ierror
212 end subroutine ompi_cancel_f
213
214 subroutine ompi_get_count_f(status,datatype,count,ierror) &
215 BIND(C, name="ompi_get_count_f")
216 use :: mpi_f08_types, only : MPI_Status
217 implicit none
218 TYPE(MPI_Status), INTENT(IN) :: status
219 INTEGER, INTENT(IN) :: datatype
220 INTEGER, INTENT(OUT) :: count
221 INTEGER, INTENT(OUT) :: ierror
222 end subroutine ompi_get_count_f
223
224 subroutine ompi_ibsend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
225 BIND(C, name="ompi_ibsend_f")
226 implicit none
227 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
228 INTEGER, INTENT(IN) :: count, dest, tag
229 INTEGER, INTENT(IN) :: datatype
230 INTEGER, INTENT(IN) :: comm
231 INTEGER, INTENT(OUT) :: request
232 INTEGER, INTENT(OUT) :: ierror
233 end subroutine ompi_ibsend_f
234
235 subroutine ompi_irecv_f(buf,count,datatype,source,tag,comm,request,ierror) &
236 BIND(C, name="ompi_irecv_f")
237 implicit none
238 OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
239 INTEGER, INTENT(IN) :: count, source, tag
240 INTEGER, INTENT(IN) :: datatype
241 INTEGER, INTENT(IN) :: comm
242 INTEGER, INTENT(OUT) :: request
243 INTEGER, INTENT(OUT) :: ierror
244 end subroutine ompi_irecv_f
245
246 subroutine ompi_irsend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
247 BIND(C, name="ompi_irsend_f")
248 implicit none
249 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
250 INTEGER, INTENT(IN) :: count, dest, tag
251 INTEGER, INTENT(IN) :: datatype
252 INTEGER, INTENT(IN) :: comm
253 INTEGER, INTENT(OUT) :: request
254 INTEGER, INTENT(OUT) :: ierror
255 end subroutine ompi_irsend_f
256
257 subroutine ompi_isend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
258 BIND(C, name="ompi_isend_f")
259 implicit none
260 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
261 INTEGER, INTENT(IN) :: count, dest, tag
262 INTEGER, INTENT(IN) :: datatype
263 INTEGER, INTENT(IN) :: comm
264 INTEGER, INTENT(OUT) :: request
265 INTEGER, INTENT(OUT) :: ierror
266 end subroutine ompi_isend_f
267
268 subroutine ompi_issend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
269 BIND(C, name="ompi_issend_f")
270 implicit none
271 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
272 INTEGER, INTENT(IN) :: count, dest, tag
273 INTEGER, INTENT(IN) :: datatype
274 INTEGER, INTENT(IN) :: comm
275 INTEGER, INTENT(OUT) :: request
276 INTEGER, INTENT(OUT) :: ierror
277 end subroutine ompi_issend_f
278
279 subroutine ompi_probe_f(source,tag,comm,status,ierror) &
280 BIND(C, name="ompi_probe_f")
281 use :: mpi_f08_types, only : MPI_Status
282 implicit none
283 INTEGER, INTENT(IN) :: source, tag
284 INTEGER, INTENT(IN) :: comm
285 TYPE(MPI_Status), INTENT(OUT) :: status
286 INTEGER, INTENT(OUT) :: ierror
287 end subroutine ompi_probe_f
288
289 subroutine ompi_recv_f(buf,count,datatype,source,tag,comm,status,ierror) &
290 BIND(C, name="ompi_recv_f")
291 use :: mpi_f08_types, only : MPI_Status
292 implicit none
293 OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
294 INTEGER, INTENT(IN) :: count, source, tag
295 INTEGER, INTENT(IN) :: datatype
296 INTEGER, INTENT(IN) :: comm
297 TYPE(MPI_Status), INTENT(OUT) :: status
298 INTEGER, INTENT(OUT) :: ierror
299 end subroutine ompi_recv_f
300
301 subroutine ompi_recv_init_f(buf,count,datatype,source,tag,comm,request,ierror) &
302 BIND(C, name="ompi_recv_init_f")
303 implicit none
304 OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
305 INTEGER, INTENT(IN) :: count, source, tag
306 INTEGER, INTENT(IN) :: datatype
307 INTEGER, INTENT(IN) :: comm
308 INTEGER, INTENT(OUT) :: request
309 INTEGER, INTENT(OUT) :: ierror
310 end subroutine ompi_recv_init_f
311
312 subroutine ompi_request_free_f(request,ierror) &
313 BIND(C, name="ompi_request_free_f")
314 implicit none
315 INTEGER, INTENT(INOUT) :: request
316 INTEGER, INTENT(OUT) :: ierror
317 end subroutine ompi_request_free_f
318
319 subroutine ompi_rsend_f(buf,count,datatype,dest,tag,comm,ierror) &
320 BIND(C, name="ompi_rsend_f")
321 implicit none
322 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
323 INTEGER, INTENT(IN) :: count, dest, tag
324 INTEGER, INTENT(IN) :: datatype
325 INTEGER, INTENT(IN) :: comm
326 INTEGER, INTENT(OUT) :: ierror
327 end subroutine ompi_rsend_f
328
329 subroutine ompi_rsend_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
330 BIND(C, name="ompi_rsend_init_f")
331 implicit none
332 OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
333 INTEGER, INTENT(IN) :: count, dest, tag
334 INTEGER, INTENT(IN) :: datatype
335 INTEGER, INTENT(IN) :: comm
336 INTEGER, INTENT(OUT) :: request
337 INTEGER, INTENT(OUT) :: ierror
338 end subroutine ompi_rsend_init_f
339
340 subroutine ompi_send_f(buf,count,datatype,dest,tag,comm,ierror) &
341 BIND(C, name="ompi_send_f")
342 implicit none
343 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
344 INTEGER, INTENT(IN) :: count, dest, tag
345 INTEGER, INTENT(IN) :: datatype
346 INTEGER, INTENT(IN) :: comm
347 INTEGER, INTENT(OUT) :: ierror
348 end subroutine ompi_send_f
349
350 subroutine ompi_sendrecv_f(sendbuf,sendcount,sendtype,dest,sendtag,recvbuf, &
351 recvcount,recvtype,source,recvtag,comm,status,ierror) &
352 BIND(C, name="ompi_sendrecv_f")
353 use :: mpi_f08_types, only : MPI_Status
354 implicit none
355 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
356 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
357 INTEGER, INTENT(IN) :: sendcount, dest, sendtag, recvcount, source, recvtag
358 INTEGER, INTENT(IN) :: sendtype
359 INTEGER, INTENT(IN) :: recvtype
360 INTEGER, INTENT(IN) :: comm
361 TYPE(MPI_Status), INTENT(OUT) :: status
362 INTEGER, INTENT(OUT) :: ierror
363 end subroutine ompi_sendrecv_f
364
365 subroutine ompi_sendrecv_replace_f(buf,count,datatype,dest,sendtag,source, &
366 recvtag,comm,status,ierror) &
367 BIND(C, name="ompi_sendrecv_replace_f")
368 use :: mpi_f08_types, only : MPI_Status
369 implicit none
370 OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
371 INTEGER, INTENT(IN) :: count, dest, sendtag, source, recvtag
372 INTEGER, INTENT(IN) :: datatype
373 INTEGER, INTENT(IN) :: comm
374 TYPE(MPI_Status), INTENT(OUT) :: status
375 INTEGER, INTENT(OUT) :: ierror
376 end subroutine ompi_sendrecv_replace_f
377
378 subroutine ompi_send_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
379 BIND(C, name="ompi_send_init_f")
380 implicit none
381 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
382 INTEGER, INTENT(IN) :: count, dest, tag
383 INTEGER, INTENT(IN) :: datatype
384 INTEGER, INTENT(IN) :: comm
385 INTEGER, INTENT(OUT) :: request
386 INTEGER, INTENT(OUT) :: ierror
387 end subroutine ompi_send_init_f
388
389 subroutine ompi_ssend_f(buf,count,datatype,dest,tag,comm,ierror) &
390 BIND(C, name="ompi_ssend_f")
391 implicit none
392 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
393 INTEGER, INTENT(IN) :: count, dest, tag
394 INTEGER, INTENT(IN) :: datatype
395 INTEGER, INTENT(IN) :: comm
396 INTEGER, INTENT(OUT) :: ierror
397 end subroutine ompi_ssend_f
398
399 subroutine ompi_ssend_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
400 BIND(C, name="ompi_ssend_init_f")
401 implicit none
402 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
403 INTEGER, INTENT(IN) :: count, dest, tag
404 INTEGER, INTENT(IN) :: datatype
405 INTEGER, INTENT(IN) :: comm
406 INTEGER, INTENT(OUT) :: request
407 INTEGER, INTENT(OUT) :: ierror
408 end subroutine ompi_ssend_init_f
409
410 subroutine ompi_start_f(request,ierror) &
411 BIND(C, name="ompi_start_f")
412 implicit none
413 INTEGER, INTENT(INOUT) :: request
414 INTEGER, INTENT(OUT) :: ierror
415 end subroutine ompi_start_f
416
417 subroutine ompi_startall_f(count,array_of_requests,ierror) &
418 BIND(C, name="ompi_startall_f")
419 implicit none
420 INTEGER, INTENT(IN) :: count
421 INTEGER, INTENT(INOUT) :: array_of_requests(count)
422 INTEGER, INTENT(OUT) :: ierror
423 end subroutine ompi_startall_f
424
425 subroutine ompi_wait_f(request,status,ierror) &
426 BIND(C, name="ompi_wait_f")
427 use :: mpi_f08_types, only : MPI_Status
428 implicit none
429 INTEGER, INTENT(INOUT) :: request
430 TYPE(MPI_Status), INTENT(OUT) :: status
431 INTEGER, INTENT(OUT) :: ierror
432 end subroutine ompi_wait_f
433
434 subroutine ompi_waitall_f(count,array_of_requests,array_of_statuses,ierror) &
435 BIND(C, name="ompi_waitall_f")
436 use :: mpi_f08_types, only : MPI_Status
437 implicit none
438 INTEGER, INTENT(IN) :: count
439 INTEGER, INTENT(INOUT) :: array_of_requests(count)
440 TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(count)
441 INTEGER, INTENT(OUT) :: ierror
442 end subroutine ompi_waitall_f
443
444 subroutine ompi_waitany_f(count,array_of_requests,index,status,ierror) &
445 BIND(C, name="ompi_waitany_f")
446 use :: mpi_f08_types, only : MPI_Status
447 implicit none
448 INTEGER, INTENT(IN) :: count
449 INTEGER, INTENT(INOUT) :: array_of_requests(count)
450 INTEGER, INTENT(OUT) :: index
451 TYPE(MPI_Status), INTENT(OUT) :: status
452 INTEGER, INTENT(OUT) :: ierror
453 end subroutine ompi_waitany_f
454
455 subroutine ompi_waitsome_f(incount,array_of_requests,outcount, &
456 array_of_indices,array_of_statuses,ierror) &
457 BIND(C, name="ompi_waitsome_f")
458 use :: mpi_f08_types, only : MPI_Status
459 implicit none
460 INTEGER, INTENT(IN) :: incount
461 INTEGER, INTENT(INOUT) :: array_of_requests(incount)
462 INTEGER, INTENT(OUT) :: outcount
463 INTEGER, INTENT(OUT) :: array_of_indices(*)
464 TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(*)
465 INTEGER, INTENT(OUT) :: ierror
466 end subroutine ompi_waitsome_f
467
468 subroutine ompi_get_address_f(location,address,ierror) &
469 BIND(C, name="ompi_get_address_f")
470 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
471 implicit none
472 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: location
473 INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: address
474 INTEGER, INTENT(OUT) :: ierror
475 end subroutine ompi_get_address_f
476
477 subroutine ompi_get_elements_f(status,datatype,count,ierror) &
478 BIND(C, name="ompi_get_elements_f")
479 use :: mpi_f08_types, only : MPI_Status
480 implicit none
481 TYPE(MPI_Status), INTENT(IN) :: status
482 INTEGER, INTENT(IN) :: datatype
483 INTEGER, INTENT(OUT) :: count
484 INTEGER, INTENT(OUT) :: ierror
485 end subroutine ompi_get_elements_f
486
487 subroutine ompi_get_elements_x_f(status,datatype,count,ierror) &
488 BIND(C, name="ompi_get_elements_x_f")
489 use :: mpi_f08_types, only : MPI_Status, MPI_COUNT_KIND
490 implicit none
491 TYPE(MPI_Status), INTENT(IN) :: status
492 INTEGER, INTENT(IN) :: datatype
493 INTEGER(MPI_COUNT_KIND), INTENT(OUT) :: count
494 INTEGER, INTENT(OUT) :: ierror
495 end subroutine ompi_get_elements_x_f
496
497 subroutine ompi_pack_f(inbuf,incount,datatype,outbuf,outsize, &
498 position,comm,ierror) &
499 BIND(C, name="ompi_pack_f")
500 implicit none
501 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
502 OMPI_FORTRAN_IGNORE_TKR_TYPE :: outbuf
503 INTEGER, INTENT(IN) :: incount, outsize
504 INTEGER, INTENT(IN) :: datatype
505 INTEGER, INTENT(INOUT) :: position
506 INTEGER, INTENT(IN) :: comm
507 INTEGER, INTENT(OUT) :: ierror
508 end subroutine ompi_pack_f
509
510 subroutine ompi_pack_external_f(datarep,inbuf,incount,datatype, &
511 outbuf,outsize,position,ierror,datarep_len) &
512 BIND(C, name="ompi_pack_external_f")
513 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
514 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
515 implicit none
516 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
517 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
518 OMPI_FORTRAN_IGNORE_TKR_TYPE :: outbuf
519 INTEGER, INTENT(IN) :: incount
520 INTEGER, INTENT(IN) :: datatype
521 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: outsize
522 INTEGER(MPI_ADDRESS_KIND), INTENT(INOUT) :: position
523 INTEGER, INTENT(OUT) :: ierror
524 INTEGER, VALUE, INTENT(IN) :: datarep_len
525 end subroutine ompi_pack_external_f
526
527 subroutine ompi_pack_external_size_f(datarep,incount,datatype,size,ierror,datarep_len) &
528 BIND(C, name="ompi_pack_external_size_f")
529 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
530 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
531 implicit none
532 INTEGER, INTENT(IN) :: datatype
533 INTEGER, INTENT(IN) :: incount
534 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
535 INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: size
536 INTEGER, INTENT(OUT) :: ierror
537 INTEGER, VALUE, INTENT(IN) :: datarep_len
538 end subroutine ompi_pack_external_size_f
539
540 subroutine ompi_pack_size_f(incount,datatype,comm,size,ierror) &
541 BIND(C, name="ompi_pack_size_f")
542 implicit none
543 INTEGER, INTENT(IN) :: incount
544 INTEGER, INTENT(IN) :: datatype
545 INTEGER, INTENT(IN) :: comm
546 INTEGER, INTENT(OUT) :: size
547 INTEGER, INTENT(OUT) :: ierror
548 end subroutine ompi_pack_size_f
549
550 subroutine ompi_type_commit_f(datatype,ierror) &
551 BIND(C, name="ompi_type_commit_f")
552 implicit none
553 INTEGER, INTENT(INOUT) :: datatype
554 INTEGER, INTENT(OUT) :: ierror
555 end subroutine ompi_type_commit_f
556
557 subroutine ompi_type_contiguous_f(count,oldtype,newtype,ierror) &
558 BIND(C, name="ompi_type_contiguous_f")
559 implicit none
560 INTEGER, INTENT(IN) :: count
561 INTEGER, INTENT(IN) :: oldtype
562 INTEGER, INTENT(OUT) :: newtype
563 INTEGER, INTENT(OUT) :: ierror
564 end subroutine ompi_type_contiguous_f
565
566 subroutine ompi_type_create_darray_f(size,rank,ndims,&
567 array_of_gsizes,array_of_distribs,array_of_dargs,array_of_psizes,&
568 order,oldtype,newtype,ierror) &
569 BIND(C, name="ompi_type_create_darray_f")
570 implicit none
571 INTEGER, INTENT(IN) :: size, rank, ndims, order
572 INTEGER, INTENT(IN) :: array_of_gsizes(ndims), array_of_distribs(ndims)
573 INTEGER, INTENT(IN) :: array_of_dargs(ndims), array_of_psizes(ndims)
574 INTEGER, INTENT(IN) :: oldtype
575 INTEGER, INTENT(OUT) :: newtype
576 INTEGER, INTENT(OUT) :: ierror
577 end subroutine ompi_type_create_darray_f
578
579 subroutine ompi_type_create_hindexed_f(count,array_of_blocklengths, &
580 array_of_displacements,oldtype,newtype,ierror) &
581 BIND(C, name="ompi_type_create_hindexed_f")
582 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
583 implicit none
584 INTEGER, INTENT(IN) :: count
585 INTEGER, INTENT(IN) :: array_of_blocklengths(count)
586 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
587 INTEGER, INTENT(IN) :: oldtype
588 INTEGER, INTENT(OUT) :: newtype
589 INTEGER, INTENT(OUT) :: ierror
590 end subroutine ompi_type_create_hindexed_f
591
592 subroutine ompi_type_create_hvector_f(count,blocklength,stride,oldtype,newtype,ierror) &
593 BIND(C, name="ompi_type_create_hvector_f")
594 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
595 implicit none
596 INTEGER, INTENT(IN) :: count, blocklength
597 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: stride
598 INTEGER, INTENT(IN) :: oldtype
599 INTEGER, INTENT(OUT) :: newtype
600 INTEGER, INTENT(OUT) :: ierror
601 end subroutine ompi_type_create_hvector_f
602
603 subroutine ompi_type_create_indexed_block_f(count,blocklength, &
604 array_of_displacements,oldtype,newtype,ierror) &
605 BIND(C, name="ompi_type_create_indexed_block_f")
606 implicit none
607 INTEGER, INTENT(IN) :: count, blocklength
608 INTEGER, INTENT(IN) :: array_of_displacements(count)
609 INTEGER, INTENT(IN) :: oldtype
610 INTEGER, INTENT(OUT) :: newtype
611 INTEGER, INTENT(OUT) :: ierror
612 end subroutine ompi_type_create_indexed_block_f
613
614 subroutine ompi_type_create_hindexed_block_f(count,blocklength, &
615 array_of_displacements,oldtype,newtype,ierror) &
616 BIND(C, name="ompi_type_create_hindexed_block_f")
617 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
618 implicit none
619 INTEGER, INTENT(IN) :: count, blocklength
620 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
621 INTEGER, INTENT(IN) :: oldtype
622 INTEGER, INTENT(OUT) :: newtype
623 INTEGER, INTENT(OUT) :: ierror
624 end subroutine ompi_type_create_hindexed_block_f
625
626 subroutine ompi_type_create_resized_f(oldtype,lb,extent,newtype,ierror) &
627 BIND(C, name="ompi_type_create_resized_f")
628 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
629 implicit none
630 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: lb, extent
631 INTEGER, INTENT(IN) :: oldtype
632 INTEGER, INTENT(OUT) :: newtype
633 INTEGER, INTENT(OUT) :: ierror
634 end subroutine ompi_type_create_resized_f
635
636 subroutine ompi_type_create_struct_f(count,array_of_blocklengths, &
637 array_of_displacements,array_of_types,newtype,ierror) &
638 BIND(C, name="ompi_type_create_struct_f")
639 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
640 implicit none
641 INTEGER, INTENT(IN) :: count
642 INTEGER, INTENT(IN) :: array_of_blocklengths(count)
643 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
644 INTEGER, INTENT(IN) :: array_of_types(count)
645 INTEGER, INTENT(OUT) :: newtype
646 INTEGER, INTENT(OUT) :: ierror
647 end subroutine ompi_type_create_struct_f
648
649 subroutine ompi_type_create_subarray_f(ndims,array_of_sizes, &
650 array_of_subsizes,array_of_starts,order,oldtype,newtype,ierror) &
651 BIND(C, name="ompi_type_create_subarray_f")
652 implicit none
653 INTEGER, INTENT(IN) :: ndims, order
654 INTEGER, INTENT(IN) :: array_of_sizes(*), array_of_subsizes(*), array_of_starts(*)
655 INTEGER, INTENT(IN) :: oldtype
656 INTEGER, INTENT(OUT) :: newtype
657 INTEGER, INTENT(OUT) :: ierror
658 end subroutine ompi_type_create_subarray_f
659
660 subroutine ompi_type_dup_f(oldtype,newtype,ierror) &
661 BIND(C, name="ompi_type_dup_f")
662 implicit none
663 INTEGER, INTENT(IN) :: oldtype
664 INTEGER, INTENT(OUT) :: newtype
665 INTEGER, INTENT(OUT) :: ierror
666 end subroutine ompi_type_dup_f
667
668 subroutine ompi_type_free_f(datatype,ierror) &
669 BIND(C, name="ompi_type_free_f")
670 implicit none
671 INTEGER, INTENT(INOUT) :: datatype
672 INTEGER, INTENT(OUT) :: ierror
673 end subroutine ompi_type_free_f
674
675 subroutine ompi_type_get_contents_f(datatype,max_integers,max_addresses, &
676 max_datatypes,array_of_integers,array_of_addresses, &
677 array_of_datatypes,ierror) &
678 BIND(C, name="ompi_type_get_contents_f")
679 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
680 implicit none
681 INTEGER, INTENT(IN) :: datatype
682 INTEGER, INTENT(IN) :: max_integers, max_addresses, max_datatypes
683 INTEGER, INTENT(OUT) :: array_of_integers(max_integers)
684 INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: array_of_addresses(max_addresses)
685 INTEGER, INTENT(OUT) :: array_of_datatypes(max_datatypes)
686 INTEGER, INTENT(OUT) :: ierror
687 end subroutine ompi_type_get_contents_f
688
689 subroutine ompi_type_get_envelope_f(datatype,num_integers, &
690 num_addresses,num_datatypes,combiner,ierror) &
691 BIND(C, name="ompi_type_get_envelope_f")
692 implicit none
693 INTEGER, INTENT(IN) :: datatype
694 INTEGER, INTENT(OUT) :: num_integers, num_addresses, num_datatypes, combiner
695 INTEGER, INTENT(OUT) :: ierror
696 end subroutine ompi_type_get_envelope_f
697
698 subroutine ompi_type_get_extent_f(datatype,lb,extent,ierror) &
699 BIND(C, name="ompi_type_get_extent_f")
700 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
701 implicit none
702 INTEGER, INTENT(IN) :: datatype
703 INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: lb, extent
704 INTEGER, INTENT(OUT) :: ierror
705 end subroutine ompi_type_get_extent_f
706
707 subroutine ompi_type_get_extent_x_f(datatype,lb,extent,ierror) &
708 BIND(C, name="ompi_type_get_extent_x_f")
709 use :: mpi_f08_types, only : MPI_COUNT_KIND
710 implicit none
711 INTEGER, INTENT(IN) :: datatype
712 INTEGER(MPI_COUNT_KIND), INTENT(OUT) :: lb, extent
713 INTEGER, INTENT(OUT) :: ierror
714 end subroutine ompi_type_get_extent_x_f
715
716 subroutine ompi_type_get_true_extent_f(datatype,true_lb,true_extent,ierror) &
717 BIND(C, name="ompi_type_get_true_extent_f")
718 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
719 implicit none
720 INTEGER, INTENT(IN) :: datatype
721 INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: true_lb, true_extent
722 INTEGER, INTENT(OUT) :: ierror
723 end subroutine ompi_type_get_true_extent_f
724
725 subroutine ompi_type_get_true_extent_x_f(datatype,true_lb,true_extent,ierror) &
726 BIND(C, name="ompi_type_get_true_extent_x_f")
727 use :: mpi_f08_types, only : MPI_COUNT_KIND
728 implicit none
729 INTEGER, INTENT(IN) :: datatype
730 INTEGER(MPI_COUNT_KIND), INTENT(OUT) :: true_lb, true_extent
731 INTEGER, INTENT(OUT) :: ierror
732 end subroutine ompi_type_get_true_extent_x_f
733
734 subroutine ompi_type_indexed_f(count,array_of_blocklengths, &
735 array_of_displacements,oldtype,newtype,ierror) &
736 BIND(C, name="ompi_type_indexed_f")
737 implicit none
738 INTEGER, INTENT(IN) :: count
739 INTEGER, INTENT(IN) :: array_of_blocklengths(count), array_of_displacements(count)
740 INTEGER, INTENT(IN) :: oldtype
741 INTEGER, INTENT(OUT) :: newtype
742 INTEGER, INTENT(OUT) :: ierror
743 end subroutine ompi_type_indexed_f
744
745 subroutine ompi_type_size_f(datatype,size,ierror) &
746 BIND(C, name="ompi_type_size_f")
747 implicit none
748 INTEGER, INTENT(IN) :: datatype
749 INTEGER, INTENT(OUT) :: size
750 INTEGER, INTENT(OUT) :: ierror
751 end subroutine ompi_type_size_f
752
753 subroutine ompi_type_size_x_f(datatype,size,ierror) &
754 BIND(C, name="ompi_type_size_x_f")
755 use :: mpi_f08_types, only : MPI_COUNT_KIND
756 implicit none
757 INTEGER, INTENT(IN) :: datatype
758 INTEGER(MPI_COUNT_KIND), INTENT(OUT) :: size
759 INTEGER, INTENT(OUT) :: ierror
760 end subroutine ompi_type_size_x_f
761
762 subroutine ompi_type_vector_f(count,blocklength,stride,oldtype,newtype,ierror) &
763 BIND(C, name="ompi_type_vector_f")
764 implicit none
765 INTEGER, INTENT(IN) :: count, blocklength, stride
766 INTEGER, INTENT(IN) :: oldtype
767 INTEGER, INTENT(OUT) :: newtype
768 INTEGER, INTENT(OUT) :: ierror
769 end subroutine ompi_type_vector_f
770
771 subroutine ompi_unpack_f(inbuf,insize,position,outbuf,outcount, &
772 datatype,comm,ierror) &
773 BIND(C, name="ompi_unpack_f")
774 implicit none
775 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
776 OMPI_FORTRAN_IGNORE_TKR_TYPE :: outbuf
777 INTEGER, INTENT(IN) :: insize, outcount
778 INTEGER, INTENT(INOUT) :: position
779 INTEGER, INTENT(IN) :: datatype
780 INTEGER, INTENT(IN) :: comm
781 INTEGER, INTENT(OUT) :: ierror
782 end subroutine ompi_unpack_f
783
784 subroutine ompi_unpack_external_f(datarep,inbuf,insize,position, &
785 outbuf,outcount,datatype,ierror,datarep_len) &
786 BIND(C, name="ompi_unpack_external_f")
787 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
788 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
789 implicit none
790 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
791 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
792 OMPI_FORTRAN_IGNORE_TKR_TYPE :: outbuf
793 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: insize
794 INTEGER(MPI_ADDRESS_KIND), INTENT(INOUT) :: position
795 INTEGER, INTENT(IN) :: outcount
796 INTEGER, INTENT(IN) :: datatype
797 INTEGER, INTENT(OUT) :: ierror
798 INTEGER, VALUE, INTENT(IN) :: datarep_len
799 end subroutine ompi_unpack_external_f
800
801 subroutine ompi_allgather_f(sendbuf,sendcount,sendtype,recvbuf, &
802 recvcount,recvtype,comm,ierror) &
803 BIND(C, name="ompi_allgather_f")
804 implicit none
805 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
806 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
807 INTEGER, INTENT(IN) :: sendcount, recvcount
808 INTEGER, INTENT(IN) :: sendtype
809 INTEGER, INTENT(IN) :: recvtype
810 INTEGER, INTENT(IN) :: comm
811 INTEGER, INTENT(OUT) :: ierror
812 end subroutine ompi_allgather_f
813
814 subroutine ompi_iallgather_f(sendbuf,sendcount,sendtype,recvbuf, &
815 recvcount,recvtype,comm,request,ierror) &
816 BIND(C, name="ompi_iallgather_f")
817 implicit none
818 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
819 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
820 INTEGER, INTENT(IN) :: sendcount, recvcount
821 INTEGER, INTENT(IN) :: sendtype
822 INTEGER, INTENT(IN) :: recvtype
823 INTEGER, INTENT(IN) :: comm
824 INTEGER, INTENT(OUT) :: request
825 INTEGER, INTENT(OUT) :: ierror
826 end subroutine ompi_iallgather_f
827
828 subroutine ompi_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
829 recvcounts,displs,recvtype,comm,ierror) &
830 BIND(C, name="ompi_allgatherv_f")
831 implicit none
832 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
833 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
834 INTEGER, INTENT(IN) :: sendcount
835 INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
836 INTEGER, INTENT(IN) :: sendtype
837 INTEGER, INTENT(IN) :: recvtype
838 INTEGER, INTENT(IN) :: comm
839 INTEGER, INTENT(OUT) :: ierror
840 end subroutine ompi_allgatherv_f
841
842 subroutine ompi_iallgatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
843 recvcounts,displs,recvtype,comm,request,ierror) &
844 BIND(C, name="ompi_iallgatherv_f")
845 implicit none
846 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
847 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
848 INTEGER, INTENT(IN) :: sendcount
849 INTEGER, INTENT(IN), ASYNCHRONOUS :: recvcounts(*), displs(*)
850 INTEGER, INTENT(IN) :: sendtype
851 INTEGER, INTENT(IN) :: recvtype
852 INTEGER, INTENT(IN) :: comm
853 INTEGER, INTENT(OUT) :: request
854 INTEGER, INTENT(OUT) :: ierror
855 end subroutine ompi_iallgatherv_f
856
857 subroutine ompi_allreduce_f(sendbuf,recvbuf,count,datatype,op,comm,ierror) &
858 BIND(C, name="ompi_allreduce_f")
859 implicit none
860 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
861 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
862 INTEGER, INTENT(IN) :: count
863 INTEGER, INTENT(IN) :: datatype
864 INTEGER, INTENT(IN) :: op
865 INTEGER, INTENT(IN) :: comm
866 INTEGER, INTENT(OUT) :: ierror
867 end subroutine ompi_allreduce_f
868
869 subroutine ompi_iallreduce_f(sendbuf,recvbuf,count,datatype,op,comm,request,ierror) &
870 BIND(C, name="ompi_iallreduce_f")
871 implicit none
872 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
873 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
874 INTEGER, INTENT(IN) :: count
875 INTEGER, INTENT(IN) :: datatype
876 INTEGER, INTENT(IN) :: op
877 INTEGER, INTENT(IN) :: comm
878 INTEGER, INTENT(OUT) :: request
879 INTEGER, INTENT(OUT) :: ierror
880 end subroutine ompi_iallreduce_f
881
882 subroutine ompi_alltoall_f(sendbuf,sendcount,sendtype,recvbuf, &
883 recvcount,recvtype,comm,ierror) &
884 BIND(C, name="ompi_alltoall_f")
885 implicit none
886 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
887 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
888 INTEGER, INTENT(IN) :: sendcount, recvcount
889 INTEGER, INTENT(IN) :: sendtype
890 INTEGER, INTENT(IN) :: recvtype
891 INTEGER, INTENT(IN) :: comm
892 INTEGER, INTENT(OUT) :: ierror
893 end subroutine ompi_alltoall_f
894
895 subroutine ompi_ialltoall_f(sendbuf,sendcount,sendtype,recvbuf, &
896 recvcount,recvtype,comm,request,ierror) &
897 BIND(C, name="ompi_ialltoall_f")
898 implicit none
899 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
900 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
901 INTEGER, INTENT(IN) :: sendcount, recvcount
902 INTEGER, INTENT(IN) :: sendtype
903 INTEGER, INTENT(IN) :: recvtype
904 INTEGER, INTENT(IN) :: comm
905 INTEGER, INTENT(OUT) :: request
906 INTEGER, INTENT(OUT) :: ierror
907 end subroutine ompi_ialltoall_f
908
909 subroutine ompi_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype, &
910 recvbuf,recvcounts,rdispls,recvtype,comm,ierror) &
911 BIND(C, name="ompi_alltoallv_f")
912 implicit none
913 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
914 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
915 INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
916 INTEGER, INTENT(IN) :: sendtype
917 INTEGER, INTENT(IN) :: recvtype
918 INTEGER, INTENT(IN) :: comm
919 INTEGER, INTENT(OUT) :: ierror
920 end subroutine ompi_alltoallv_f
921
922 subroutine ompi_ialltoallv_f(sendbuf,sendcounts,sdispls,sendtype, &
923 recvbuf,recvcounts,rdispls,recvtype,comm,request,ierror) &
924 BIND(C, name="ompi_ialltoallv_f")
925 implicit none
926 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
927 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
928 INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
929 INTEGER, INTENT(IN) :: sendtype
930 INTEGER, INTENT(IN) :: recvtype
931 INTEGER, INTENT(IN) :: comm
932 INTEGER, INTENT(OUT) :: request
933 INTEGER, INTENT(OUT) :: ierror
934 end subroutine ompi_ialltoallv_f
935
936 subroutine ompi_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes, &
937 recvbuf,recvcounts,rdispls,recvtypes,comm,ierror) &
938 BIND(C, name="ompi_alltoallw_f")
939 implicit none
940 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
941 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
942 INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
943 INTEGER, INTENT(IN) :: sendtypes
944 INTEGER, INTENT(IN) :: recvtypes
945 INTEGER, INTENT(IN) :: comm
946 INTEGER, INTENT(OUT) :: ierror
947 end subroutine ompi_alltoallw_f
948
949 subroutine ompi_ialltoallw_f(sendbuf,sendcounts,sdispls,sendtypes, &
950 recvbuf,recvcounts,rdispls,recvtypes,comm,request,ierror) &
951 BIND(C, name="ompi_ialltoallw_f")
952 implicit none
953 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
954 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
955 INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
956 INTEGER, INTENT(IN), ASYNCHRONOUS :: sendtypes
957 INTEGER, INTENT(IN), ASYNCHRONOUS :: recvtypes
958 INTEGER, INTENT(IN) :: comm
959 INTEGER, INTENT(OUT) :: request
960 INTEGER, INTENT(OUT) :: ierror
961 end subroutine ompi_ialltoallw_f
962
963 subroutine ompi_barrier_f(comm,ierror) &
964 BIND(C, name="ompi_barrier_f")
965 implicit none
966 INTEGER, INTENT(IN) :: comm
967 INTEGER, INTENT(OUT) :: ierror
968 end subroutine ompi_barrier_f
969
970 subroutine ompi_ibarrier_f(comm,request,ierror) &
971 BIND(C, name="ompi_ibarrier_f")
972 implicit none
973 INTEGER, INTENT(IN) :: comm
974 INTEGER, INTENT(OUT) :: request
975 INTEGER, INTENT(OUT) :: ierror
976 end subroutine ompi_ibarrier_f
977
978 subroutine ompi_bcast_f(buffer,count,datatype,root,comm,ierror) &
979 BIND(C, name="ompi_bcast_f")
980 implicit none
981 OMPI_FORTRAN_IGNORE_TKR_TYPE :: buffer
982 INTEGER, INTENT(IN) :: count, root
983 INTEGER, INTENT(IN) :: datatype
984 INTEGER, INTENT(IN) :: comm
985 INTEGER, INTENT(OUT) :: ierror
986 end subroutine ompi_bcast_f
987
988 subroutine ompi_ibcast_f(buffer,count,datatype,root,comm,request,ierror) &
989 BIND(C, name="ompi_ibcast_f")
990 implicit none
991 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: buffer
992 INTEGER, INTENT(IN) :: count, root
993 INTEGER, INTENT(IN) :: datatype
994 INTEGER, INTENT(IN) :: comm
995 INTEGER, INTENT(OUT) :: request
996 INTEGER, INTENT(OUT) :: ierror
997 end subroutine ompi_ibcast_f
998
999 subroutine ompi_exscan_f(sendbuf,recvbuf,count,datatype,op,comm,ierror) &
1000 BIND(C, name="ompi_exscan_f")
1001 implicit none
1002 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1003 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1004 INTEGER, INTENT(IN) :: count
1005 INTEGER, INTENT(IN) :: datatype
1006 INTEGER, INTENT(IN) :: op
1007 INTEGER, INTENT(IN) :: comm
1008 INTEGER, INTENT(OUT) :: ierror
1009 end subroutine ompi_exscan_f
1010
1011 subroutine ompi_iexscan_f(sendbuf,recvbuf,count,datatype,op,comm,request,ierror) &
1012 BIND(C, name="ompi_iexscan_f")
1013 implicit none
1014 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1015 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1016 INTEGER, INTENT(IN) :: count
1017 INTEGER, INTENT(IN) :: datatype
1018 INTEGER, INTENT(IN) :: op
1019 INTEGER, INTENT(IN) :: comm
1020 INTEGER, INTENT(OUT) :: request
1021 INTEGER, INTENT(OUT) :: ierror
1022 end subroutine ompi_iexscan_f
1023
1024 subroutine ompi_gather_f(sendbuf,sendcount,sendtype,recvbuf, &
1025 recvcount,recvtype,root,comm,ierror) &
1026 BIND(C, name="ompi_gather_f")
1027 implicit none
1028 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1029 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1030 INTEGER, INTENT(IN) :: sendcount, recvcount, root
1031 INTEGER, INTENT(IN) :: sendtype
1032 INTEGER, INTENT(IN) :: recvtype
1033 INTEGER, INTENT(IN) :: comm
1034 INTEGER, INTENT(OUT) :: ierror
1035 end subroutine ompi_gather_f
1036
1037 subroutine ompi_igather_f(sendbuf,sendcount,sendtype,recvbuf, &
1038 recvcount,recvtype,root,comm,request,ierror) &
1039 BIND(C, name="ompi_igather_f")
1040 implicit none
1041 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1042 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1043 INTEGER, INTENT(IN) :: sendcount, recvcount, root
1044 INTEGER, INTENT(IN) :: sendtype
1045 INTEGER, INTENT(IN) :: recvtype
1046 INTEGER, INTENT(IN) :: comm
1047 INTEGER, INTENT(OUT) :: request
1048 INTEGER, INTENT(OUT) :: ierror
1049 end subroutine ompi_igather_f
1050
1051 subroutine ompi_gatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
1052 recvcounts,displs,recvtype,root,comm,ierror) &
1053 BIND(C, name="ompi_gatherv_f")
1054 implicit none
1055 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1056 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1057 INTEGER, INTENT(IN) :: sendcount, root
1058 INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
1059 INTEGER, INTENT(IN) :: sendtype
1060 INTEGER, INTENT(IN) :: recvtype
1061 INTEGER, INTENT(IN) :: comm
1062 INTEGER, INTENT(OUT) :: ierror
1063 end subroutine ompi_gatherv_f
1064
1065 subroutine ompi_igatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
1066 recvcounts,displs,recvtype,root,comm,request,ierror) &
1067 BIND(C, name="ompi_igatherv_f")
1068 implicit none
1069 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1070 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1071 INTEGER, INTENT(IN) :: sendcount, root
1072 INTEGER, INTENT(IN), ASYNCHRONOUS :: recvcounts(*), displs(*)
1073 INTEGER, INTENT(IN) :: sendtype
1074 INTEGER, INTENT(IN) :: recvtype
1075 INTEGER, INTENT(IN) :: comm
1076 INTEGER, INTENT(OUT) :: request
1077 INTEGER, INTENT(OUT) :: ierror
1078 end subroutine ompi_igatherv_f
1079
1080 subroutine ompi_op_free_f(op,ierror) &
1081 BIND(C, name="ompi_op_free_f")
1082 implicit none
1083 INTEGER, INTENT(INOUT) :: op
1084 INTEGER, INTENT(OUT) :: ierror
1085 end subroutine ompi_op_free_f
1086
1087 subroutine ompi_reduce_f(sendbuf,recvbuf,count,datatype,op,root,comm,ierror) &
1088 BIND(C, name="ompi_reduce_f")
1089 implicit none
1090 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1091 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1092 INTEGER, INTENT(IN) :: count, root
1093 INTEGER, INTENT(IN) :: datatype
1094 INTEGER, INTENT(IN) :: op
1095 INTEGER, INTENT(IN) :: comm
1096 INTEGER, INTENT(OUT) :: ierror
1097 end subroutine ompi_reduce_f
1098
1099 subroutine ompi_ireduce_f(sendbuf,recvbuf,count,datatype,op,root,comm,request,ierror) &
1100 BIND(C, name="ompi_ireduce_f")
1101 implicit none
1102 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1103 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1104 INTEGER, INTENT(IN) :: count, root
1105 INTEGER, INTENT(IN) :: datatype
1106 INTEGER, INTENT(IN) :: op
1107 INTEGER, INTENT(IN) :: comm
1108 INTEGER, INTENT(OUT) :: request
1109 INTEGER, INTENT(OUT) :: ierror
1110 end subroutine ompi_ireduce_f
1111
1112 subroutine ompi_reduce_local_f(inbuf,inoutbuf,count,datatype,op,ierror) &
1113 BIND(C, name="ompi_reduce_local_f")
1114 implicit none
1115 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
1116 OMPI_FORTRAN_IGNORE_TKR_TYPE :: inoutbuf
1117 INTEGER, INTENT(IN) :: count
1118 INTEGER, INTENT(IN) :: datatype
1119 INTEGER, INTENT(IN) :: op
1120 INTEGER, INTENT(OUT) :: ierror
1121 end subroutine ompi_reduce_local_f
1122
1123 subroutine ompi_reduce_scatter_f(sendbuf,recvbuf,recvcounts, &
1124 datatype,op,comm,ierror) &
1125 BIND(C, name="ompi_reduce_scatter_f")
1126 implicit none
1127 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1128 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1129 INTEGER, INTENT(IN) :: recvcounts(*)
1130 INTEGER, INTENT(IN) :: datatype
1131 INTEGER, INTENT(IN) :: op
1132 INTEGER, INTENT(IN) :: comm
1133 INTEGER, INTENT(OUT) :: ierror
1134 end subroutine ompi_reduce_scatter_f
1135
1136 subroutine ompi_ireduce_scatter_f(sendbuf,recvbuf,recvcounts, &
1137 datatype,op,comm,request,ierror) &
1138 BIND(C, name="ompi_ireduce_scatter_f")
1139 implicit none
1140 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1141 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1142 INTEGER, INTENT(IN), ASYNCHRONOUS :: recvcounts(*)
1143 INTEGER, INTENT(IN) :: datatype
1144 INTEGER, INTENT(IN) :: op
1145 INTEGER, INTENT(IN) :: comm
1146 INTEGER, INTENT(OUT) :: request
1147 INTEGER, INTENT(OUT) :: ierror
1148 end subroutine ompi_ireduce_scatter_f
1149
1150 subroutine ompi_reduce_scatter_block_f(sendbuf,recvbuf,recvcount, &
1151 datatype,op,comm,ierror) &
1152 BIND(C, name="ompi_reduce_scatter_block_f")
1153 implicit none
1154 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1155 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1156 INTEGER, INTENT(IN) :: recvcount
1157 INTEGER, INTENT(IN) :: datatype
1158 INTEGER, INTENT(IN) :: op
1159 INTEGER, INTENT(IN) :: comm
1160 INTEGER, INTENT(OUT) :: ierror
1161 end subroutine ompi_reduce_scatter_block_f
1162
1163 subroutine ompi_ireduce_scatter_block_f(sendbuf,recvbuf,recvcount, &
1164 datatype,op,comm,request,ierror) &
1165 BIND(C, name="ompi_ireduce_scatter_block_f")
1166 implicit none
1167 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1168 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1169 INTEGER, INTENT(IN) :: recvcount
1170 INTEGER, INTENT(IN) :: datatype
1171 INTEGER, INTENT(IN) :: op
1172 INTEGER, INTENT(IN) :: comm
1173 INTEGER, INTENT(OUT) :: request
1174 INTEGER, INTENT(OUT) :: ierror
1175 end subroutine ompi_ireduce_scatter_block_f
1176
1177 subroutine ompi_scan_f(sendbuf,recvbuf,count,datatype,op,comm,ierror) &
1178 BIND(C, name="ompi_scan_f")
1179 implicit none
1180 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1181 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1182 INTEGER, INTENT(IN) :: count
1183 INTEGER, INTENT(IN) :: datatype
1184 INTEGER, INTENT(IN) :: op
1185 INTEGER, INTENT(IN) :: comm
1186 INTEGER, INTENT(OUT) :: ierror
1187 end subroutine ompi_scan_f
1188
1189 subroutine ompi_iscan_f(sendbuf,recvbuf,count,datatype,op,comm,request,ierror) &
1190 BIND(C, name="ompi_iscan_f")
1191 implicit none
1192 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1193 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1194 INTEGER, INTENT(IN) :: count
1195 INTEGER, INTENT(IN) :: datatype
1196 INTEGER, INTENT(IN) :: op
1197 INTEGER, INTENT(IN) :: comm
1198 INTEGER, INTENT(OUT) :: request
1199 INTEGER, INTENT(OUT) :: ierror
1200 end subroutine ompi_iscan_f
1201
1202 subroutine ompi_scatter_f(sendbuf,sendcount,sendtype,recvbuf, &
1203 recvcount,recvtype,root,comm,ierror) &
1204 BIND(C, name="ompi_scatter_f")
1205 implicit none
1206 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1207 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1208 INTEGER, INTENT(IN) :: sendcount, recvcount, root
1209 INTEGER, INTENT(IN) :: sendtype
1210 INTEGER, INTENT(IN) :: recvtype
1211 INTEGER, INTENT(IN) :: comm
1212 INTEGER, INTENT(OUT) :: ierror
1213 end subroutine ompi_scatter_f
1214
1215 subroutine ompi_iscatter_f(sendbuf,sendcount,sendtype,recvbuf, &
1216 recvcount,recvtype,root,comm,request,ierror) &
1217 BIND(C, name="ompi_iscatter_f")
1218 implicit none
1219 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1220 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1221 INTEGER, INTENT(IN) :: sendcount, recvcount, root
1222 INTEGER, INTENT(IN) :: sendtype
1223 INTEGER, INTENT(IN) :: recvtype
1224 INTEGER, INTENT(IN) :: comm
1225 INTEGER, INTENT(OUT) :: request
1226 INTEGER, INTENT(OUT) :: ierror
1227 end subroutine ompi_iscatter_f
1228
1229 subroutine ompi_scatterv_f(sendbuf,sendcounts,displs,sendtype, &
1230 recvbuf,recvcount,recvtype,root,comm,ierror) &
1231 BIND(C, name="ompi_scatterv_f")
1232 implicit none
1233 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1234 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1235 INTEGER, INTENT(IN) :: recvcount, root
1236 INTEGER, INTENT(IN) :: sendcounts(*), displs(*)
1237 INTEGER, INTENT(IN) :: sendtype
1238 INTEGER, INTENT(IN) :: recvtype
1239 INTEGER, INTENT(IN) :: comm
1240 INTEGER, INTENT(OUT) :: ierror
1241 end subroutine ompi_scatterv_f
1242
1243 subroutine ompi_iscatterv_f(sendbuf,sendcounts,displs,sendtype, &
1244 recvbuf,recvcount,recvtype,root,comm,request,ierror) &
1245 BIND(C, name="ompi_iscatterv_f")
1246 implicit none
1247 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1248 OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1249 INTEGER, INTENT(IN) :: recvcount, root
1250 INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), displs(*)
1251 INTEGER, INTENT(IN) :: sendtype
1252 INTEGER, INTENT(IN) :: recvtype
1253 INTEGER, INTENT(IN) :: comm
1254 INTEGER, INTENT(OUT) :: request
1255 INTEGER, INTENT(OUT) :: ierror
1256 end subroutine ompi_iscatterv_f
1257
1258 subroutine ompi_comm_compare_f(comm1,comm2,result,ierror) &
1259 BIND(C, name="ompi_comm_compare_f")
1260 implicit none
1261 INTEGER, INTENT(IN) :: comm1
1262 INTEGER, INTENT(IN) :: comm2
1263 INTEGER, INTENT(OUT) :: result
1264 INTEGER, INTENT(OUT) :: ierror
1265 end subroutine ompi_comm_compare_f
1266
1267 subroutine ompi_comm_create_f(comm,group,newcomm,ierror) &
1268 BIND(C, name="ompi_comm_create_f")
1269 implicit none
1270 INTEGER, INTENT(IN) :: comm
1271 INTEGER, INTENT(IN) :: group
1272 INTEGER, INTENT(OUT) :: newcomm
1273 INTEGER, INTENT(OUT) :: ierror
1274 end subroutine ompi_comm_create_f
1275
1276 subroutine ompi_comm_create_group_f(comm, group, tag, newcomm, ierror) &
1277 BIND(C, name="ompi_comm_create_group_f")
1278 implicit none
1279 integer, intent(in) :: comm
1280 integer, intent(in) :: group
1281 integer, intent(in) :: tag
1282 integer, intent(out) :: newcomm
1283 integer, intent(out) :: ierror
1284 end subroutine ompi_comm_create_group_f
1285
1286 subroutine ompi_comm_create_keyval_f(comm_copy_attr_fn,comm_delete_attr_fn, &
1287 comm_keyval,extra_state,ierror) &
1288 BIND(C, name="ompi_comm_create_keyval_f")
1289 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1290 use, intrinsic :: iso_c_binding, only: c_funptr
1291 implicit none
1292 type(c_funptr), value :: comm_copy_attr_fn
1293 type(c_funptr), value :: comm_delete_attr_fn
1294 INTEGER, INTENT(OUT) :: comm_keyval
1295 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
1296 INTEGER, INTENT(OUT) :: ierror
1297 end subroutine ompi_comm_create_keyval_f
1298
1299 subroutine ompi_comm_delete_attr_f(comm,comm_keyval,ierror) &
1300 BIND(C, name="ompi_comm_delete_attr_f")
1301 implicit none
1302 INTEGER, INTENT(IN) :: comm
1303 INTEGER, INTENT(IN) :: comm_keyval
1304 INTEGER, INTENT(OUT) :: ierror
1305 end subroutine ompi_comm_delete_attr_f
1306
1307 subroutine ompi_comm_dup_f(comm,newcomm,ierror) &
1308 BIND(C, name="ompi_comm_dup_f")
1309 implicit none
1310 INTEGER, INTENT(IN) :: comm
1311 INTEGER, INTENT(OUT) :: newcomm
1312 INTEGER, INTENT(OUT) :: ierror
1313 end subroutine ompi_comm_dup_f
1314
1315 subroutine ompi_comm_dup_with_info_f(comm, info, newcomm, ierror) &
1316 BIND(C, name="ompi_comm_dup_with_info_f")
1317 implicit none
1318 integer, intent(in) :: comm
1319 integer, intent(in) :: info
1320 integer, intent(out) :: newcomm
1321 integer, intent(out) :: ierror
1322 end subroutine ompi_comm_dup_with_info_f
1323
1324 subroutine ompi_comm_free_f(comm,ierror) &
1325 BIND(C, name="ompi_comm_free_f")
1326 implicit none
1327 INTEGER, INTENT(INOUT) :: comm
1328 INTEGER, INTENT(OUT) :: ierror
1329 end subroutine ompi_comm_free_f
1330
1331 subroutine ompi_comm_free_keyval_f(comm_keyval,ierror) &
1332 BIND(C, name="ompi_comm_free_keyval_f")
1333 implicit none
1334 INTEGER, INTENT(INOUT) :: comm_keyval
1335 INTEGER, INTENT(OUT) :: ierror
1336 end subroutine ompi_comm_free_keyval_f
1337
1338 subroutine ompi_comm_get_info_f(comm,info_used,ierror) &
1339 BIND(C, name="ompi_comm_get_info_f")
1340 implicit none
1341 INTEGER, INTENT(IN) :: comm
1342 INTEGER, INTENT(OUT) :: info_used
1343 INTEGER, INTENT(OUT) :: ierror
1344 end subroutine ompi_comm_get_info_f
1345
1346 subroutine ompi_comm_get_name_f(comm,comm_name,resultlen,ierror,comm_name_len) &
1347 BIND(C, name="ompi_comm_get_name_f")
1348 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1349 implicit none
1350 INTEGER, INTENT(IN) :: comm
1351 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: comm_name
1352 INTEGER, INTENT(OUT) :: resultlen
1353 INTEGER, INTENT(OUT) :: ierror
1354 INTEGER, VALUE, INTENT(IN) :: comm_name_len
1355 end subroutine ompi_comm_get_name_f
1356
1357 subroutine ompi_comm_group_f(comm,group,ierror) &
1358 BIND(C, name="ompi_comm_group_f")
1359 implicit none
1360 INTEGER, INTENT(IN) :: comm
1361 INTEGER, INTENT(OUT) :: group
1362 INTEGER, INTENT(OUT) :: ierror
1363 end subroutine ompi_comm_group_f
1364
1365 subroutine ompi_comm_idup_f(comm, newcomm, request, ierror) &
1366 BIND(C, name="ompi_comm_idup_f")
1367 implicit none
1368 integer, intent(in) :: comm
1369 integer, intent(out) :: newcomm
1370 integer, intent(out) :: request
1371 integer, intent(out) :: ierror
1372 end subroutine ompi_comm_idup_f
1373
1374 subroutine ompi_comm_rank_f(comm,rank,ierror) &
1375 BIND(C, name="ompi_comm_rank_f")
1376 implicit none
1377 INTEGER, INTENT(IN) :: comm
1378 INTEGER, INTENT(OUT) :: rank
1379 INTEGER, INTENT(OUT) :: ierror
1380 end subroutine ompi_comm_rank_f
1381
1382 subroutine ompi_comm_remote_group_f(comm,group,ierror) &
1383 BIND(C, name="ompi_comm_remote_group_f")
1384 implicit none
1385 INTEGER, INTENT(IN) :: comm
1386 INTEGER, INTENT(OUT) :: group
1387 INTEGER, INTENT(OUT) :: ierror
1388 end subroutine ompi_comm_remote_group_f
1389
1390 subroutine ompi_comm_remote_size_f(comm,size,ierror) &
1391 BIND(C, name="ompi_comm_remote_size_f")
1392 implicit none
1393 INTEGER, INTENT(IN) :: comm
1394 INTEGER, INTENT(OUT) :: size
1395 INTEGER, INTENT(OUT) :: ierror
1396 end subroutine ompi_comm_remote_size_f
1397
1398 subroutine ompi_comm_set_attr_f(comm,comm_keyval,attribute_val,ierror) &
1399 BIND(C, name="ompi_comm_set_attr_f")
1400 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1401 implicit none
1402 INTEGER, INTENT(IN) :: comm
1403 INTEGER, INTENT(IN) :: comm_keyval
1404 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: attribute_val
1405 INTEGER, INTENT(OUT) :: ierror
1406 end subroutine ompi_comm_set_attr_f
1407
1408 subroutine ompi_comm_set_info_f(comm,info,ierror) &
1409 BIND(C, name="ompi_comm_set_info_f")
1410 implicit none
1411 INTEGER, INTENT(IN) :: comm
1412 INTEGER, INTENT(IN) :: info
1413 INTEGER, INTENT(OUT) :: ierror
1414 end subroutine ompi_comm_set_info_f
1415
1416 subroutine ompi_comm_set_name_f(comm,comm_name,ierror,comm_name_len) &
1417 BIND(C, name="ompi_comm_set_name_f")
1418 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1419 implicit none
1420 INTEGER, INTENT(IN) :: comm
1421 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: comm_name
1422 INTEGER, INTENT(OUT) :: ierror
1423 INTEGER, VALUE, INTENT(IN) :: comm_name_len
1424 end subroutine ompi_comm_set_name_f
1425
1426 subroutine ompi_comm_size_f(comm,size,ierror) &
1427 BIND(C, name="ompi_comm_size_f")
1428 implicit none
1429 INTEGER, INTENT(IN) :: comm
1430 INTEGER, INTENT(OUT) :: size
1431 INTEGER, INTENT(OUT) :: ierror
1432 end subroutine ompi_comm_size_f
1433
1434 subroutine ompi_comm_split_f(comm,color,key,newcomm,ierror) &
1435 BIND(C, name="ompi_comm_split_f")
1436 implicit none
1437 INTEGER, INTENT(IN) :: comm
1438 INTEGER, INTENT(IN) :: color, key
1439 INTEGER, INTENT(OUT) :: newcomm
1440 INTEGER, INTENT(OUT) :: ierror
1441 end subroutine ompi_comm_split_f
1442
1443 subroutine ompi_group_compare_f(group1,group2,result,ierror) &
1444 BIND(C, name="ompi_group_compare_f")
1445 implicit none
1446 INTEGER, INTENT(IN) :: group1
1447 INTEGER, INTENT(IN) :: group2
1448 INTEGER, INTENT(OUT) :: result
1449 INTEGER, INTENT(OUT) :: ierror
1450 end subroutine ompi_group_compare_f
1451
1452 subroutine ompi_group_difference_f(group1,group2,newgroup,ierror) &
1453 BIND(C, name="ompi_group_difference_f")
1454 implicit none
1455 INTEGER, INTENT(IN) :: group1
1456 INTEGER, INTENT(IN) :: group2
1457 INTEGER, INTENT(OUT) :: newgroup
1458 INTEGER, INTENT(OUT) :: ierror
1459 end subroutine ompi_group_difference_f
1460
1461 subroutine ompi_group_excl_f(group,n,ranks,newgroup,ierror) &
1462 BIND(C, name="ompi_group_excl_f")
1463 implicit none
1464 INTEGER, INTENT(IN) :: group
1465 INTEGER, INTENT(IN) :: n
1466 INTEGER, INTENT(IN) :: ranks(*)
1467 INTEGER, INTENT(OUT) :: newgroup
1468 INTEGER, INTENT(OUT) :: ierror
1469 end subroutine ompi_group_excl_f
1470
1471 subroutine ompi_group_free_f(group,ierror) &
1472 BIND(C, name="ompi_group_free_f")
1473 implicit none
1474 INTEGER, INTENT(INOUT) :: group
1475 INTEGER, INTENT(OUT) :: ierror
1476 end subroutine ompi_group_free_f
1477
1478 subroutine ompi_group_incl_f(group,n,ranks,newgroup,ierror) &
1479 BIND(C, name="ompi_group_incl_f")
1480 implicit none
1481 INTEGER, INTENT(IN) :: n
1482 INTEGER, INTENT(IN) :: ranks(*)
1483 INTEGER, INTENT(IN) :: group
1484 INTEGER, INTENT(OUT) :: newgroup
1485 INTEGER, INTENT(OUT) :: ierror
1486 end subroutine ompi_group_incl_f
1487
1488 subroutine ompi_group_intersection_f(group1,group2,newgroup,ierror) &
1489 BIND(C, name="ompi_group_intersection_f")
1490 implicit none
1491 INTEGER, INTENT(IN) :: group1
1492 INTEGER, INTENT(IN) :: group2
1493 INTEGER, INTENT(OUT) :: newgroup
1494 INTEGER, INTENT(OUT) :: ierror
1495 end subroutine ompi_group_intersection_f
1496
1497 subroutine ompi_group_range_excl_f(group,n,ranges,newgroup,ierror) &
1498 BIND(C, name="ompi_group_range_excl_f")
1499 implicit none
1500 INTEGER, INTENT(IN) :: group
1501 INTEGER, INTENT(IN) :: n
1502 INTEGER, INTENT(IN) :: ranges(*)
1503 INTEGER, INTENT(OUT) :: newgroup
1504 INTEGER, INTENT(OUT) :: ierror
1505 end subroutine ompi_group_range_excl_f
1506
1507 subroutine ompi_group_range_incl_f(group,n,ranges,newgroup,ierror) &
1508 BIND(C, name="ompi_group_range_incl_f")
1509 implicit none
1510 INTEGER, INTENT(IN) :: group
1511 INTEGER, INTENT(IN) :: n
1512 INTEGER, INTENT(IN) :: ranges(*)
1513 INTEGER, INTENT(OUT) :: newgroup
1514 INTEGER, INTENT(OUT) :: ierror
1515 end subroutine ompi_group_range_incl_f
1516
1517 subroutine ompi_group_rank_f(group,rank,ierror) &
1518 BIND(C, name="ompi_group_rank_f")
1519 implicit none
1520 INTEGER, INTENT(IN) :: group
1521 INTEGER, INTENT(OUT) :: rank
1522 INTEGER, INTENT(OUT) :: ierror
1523 end subroutine ompi_group_rank_f
1524
1525 subroutine ompi_group_size_f(group,size,ierror) &
1526 BIND(C, name="ompi_group_size_f")
1527 implicit none
1528 INTEGER, INTENT(IN) :: group
1529 INTEGER, INTENT(OUT) :: size
1530 INTEGER, INTENT(OUT) :: ierror
1531 end subroutine ompi_group_size_f
1532
1533 subroutine ompi_group_translate_ranks_f(group1,n,ranks1,group2,ranks2,ierror) &
1534 BIND(C, name="ompi_group_translate_ranks_f")
1535 implicit none
1536 INTEGER, INTENT(IN) :: group1, group2
1537 INTEGER, INTENT(IN) :: n
1538 INTEGER, INTENT(IN) :: ranks1(*)
1539 INTEGER, INTENT(OUT) :: ranks2(*)
1540 INTEGER, INTENT(OUT) :: ierror
1541 end subroutine ompi_group_translate_ranks_f
1542
1543 subroutine ompi_group_union_f(group1,group2,newgroup,ierror) &
1544 BIND(C, name="ompi_group_union_f")
1545 implicit none
1546 INTEGER, INTENT(IN) :: group1, group2
1547 INTEGER, INTENT(OUT) :: newgroup
1548 INTEGER, INTENT(OUT) :: ierror
1549 end subroutine ompi_group_union_f
1550
1551 subroutine ompi_intercomm_create_f(local_comm,local_leader,peer_comm, &
1552 remote_leader,tag,newintercomm,ierror) &
1553 BIND(C, name="ompi_intercomm_create_f")
1554 implicit none
1555 INTEGER, INTENT(IN) :: local_comm, peer_comm
1556 INTEGER, INTENT(IN) :: local_leader, remote_leader, tag
1557 INTEGER, INTENT(OUT) :: newintercomm
1558 INTEGER, INTENT(OUT) :: ierror
1559 end subroutine ompi_intercomm_create_f
1560
1561 subroutine ompi_type_create_keyval_f(type_copy_attr_fn,type_delete_attr_fn, &
1562 type_keyval,extra_state,ierror) &
1563 BIND(C, name="ompi_type_create_keyval_f")
1564 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1565 use, intrinsic :: iso_c_binding, only: c_funptr
1566 implicit none
1567 type(c_funptr), value :: type_copy_attr_fn
1568 type(c_funptr), value :: type_delete_attr_fn
1569 INTEGER, INTENT(OUT) :: type_keyval
1570 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
1571 INTEGER, INTENT(OUT) :: ierror
1572 end subroutine ompi_type_create_keyval_f
1573
1574 subroutine ompi_type_delete_attr_f(datatype,type_keyval,ierror) &
1575 BIND(C, name="ompi_type_delete_attr_f")
1576 implicit none
1577 INTEGER, INTENT(IN) :: datatype
1578 INTEGER, INTENT(IN) :: type_keyval
1579 INTEGER, INTENT(OUT) :: ierror
1580 end subroutine ompi_type_delete_attr_f
1581
1582 subroutine ompi_type_free_keyval_f(type_keyval,ierror) &
1583 BIND(C, name="ompi_type_free_keyval_f")
1584 implicit none
1585 INTEGER, INTENT(INOUT) :: type_keyval
1586 INTEGER, INTENT(OUT) :: ierror
1587 end subroutine ompi_type_free_keyval_f
1588
1589 subroutine ompi_type_get_name_f(datatype,type_name,resultlen,ierror,type_name_len) &
1590 BIND(C, name="ompi_type_get_name_f")
1591 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1592 implicit none
1593 INTEGER, INTENT(IN) :: datatype
1594 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: type_name
1595 INTEGER, INTENT(OUT) :: resultlen
1596 INTEGER, INTENT(OUT) :: ierror
1597 INTEGER, VALUE, INTENT(IN) :: type_name_len
1598 end subroutine ompi_type_get_name_f
1599
1600 subroutine ompi_type_set_attr_f(datatype,type_keyval,attribute_val,ierror) &
1601 BIND(C, name="ompi_type_set_attr_f")
1602 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1603 implicit none
1604 INTEGER, INTENT(IN) :: datatype
1605 INTEGER, INTENT(IN) :: type_keyval
1606 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: attribute_val
1607 INTEGER, INTENT(OUT) :: ierror
1608 end subroutine ompi_type_set_attr_f
1609
1610 subroutine ompi_type_set_name_f(datatype,type_name,ierror,type_name_len) &
1611 BIND(C, name="ompi_type_set_name_f")
1612 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1613 implicit none
1614 INTEGER, INTENT(IN) :: datatype
1615 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: type_name
1616 INTEGER, INTENT(OUT) :: ierror
1617 INTEGER, VALUE, INTENT(IN) :: type_name_len
1618 end subroutine ompi_type_set_name_f
1619
1620 subroutine ompi_win_allocate_f(size, disp_unit, info, comm, &
1621 baseptr, win, ierror) BIND(C, name="ompi_win_allocate_f")
1622 USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
1623 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1624 INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
1625 INTEGER, INTENT(IN) :: disp_unit
1626 INTEGER, INTENT(IN) :: info
1627 INTEGER, INTENT(IN) :: comm
1628 TYPE(C_PTR), INTENT(OUT) :: baseptr
1629 INTEGER, INTENT(OUT) :: win
1630 INTEGER, INTENT(OUT) :: ierror
1631 end subroutine ompi_win_allocate_f
1632
1633 subroutine ompi_win_allocate_shared_f(size, disp_unit, info, comm, &
1634 baseptr, win, ierror) BIND(C, name="ompi_win_allocate_shared_f")
1635 USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
1636 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1637 INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
1638 INTEGER, INTENT(IN) :: disp_unit
1639 INTEGER, INTENT(IN) :: info
1640 INTEGER, INTENT(IN) :: comm
1641 TYPE(C_PTR), INTENT(OUT) :: baseptr
1642 INTEGER, INTENT(OUT) :: win
1643 INTEGER, INTENT(OUT) :: ierror
1644 end subroutine ompi_win_allocate_shared_f
1645
1646 subroutine ompi_win_create_keyval_f(win_copy_attr_fn,win_delete_attr_fn, &
1647 win_keyval,extra_state,ierror) &
1648 BIND(C, name="ompi_win_create_keyval_f")
1649 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1650 use, intrinsic :: iso_c_binding, only: c_funptr
1651 implicit none
1652 type(c_funptr), value :: win_copy_attr_fn
1653 type(c_funptr), value :: win_delete_attr_fn
1654 INTEGER, INTENT(OUT) :: win_keyval
1655 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
1656 INTEGER, INTENT(OUT) :: ierror
1657 end subroutine ompi_win_create_keyval_f
1658
1659 subroutine ompi_win_delete_attr_f(win,win_keyval,ierror) &
1660 BIND(C, name="ompi_win_delete_attr_f")
1661 implicit none
1662 INTEGER, INTENT(IN) :: win
1663 INTEGER, INTENT(IN) :: win_keyval
1664 INTEGER, INTENT(OUT) :: ierror
1665 end subroutine ompi_win_delete_attr_f
1666
1667 subroutine ompi_win_free_keyval_f(win_keyval,ierror) &
1668 BIND(C, name="ompi_win_free_keyval_f")
1669 implicit none
1670 INTEGER, INTENT(INOUT) :: win_keyval
1671 INTEGER, INTENT(OUT) :: ierror
1672 end subroutine ompi_win_free_keyval_f
1673
1674 subroutine ompi_win_get_name_f(win,win_name,resultlen,ierror,win_name_len) &
1675 BIND(C, name="ompi_win_get_name_f")
1676 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1677 implicit none
1678 INTEGER, INTENT(IN) :: win
1679 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: win_name
1680 INTEGER, INTENT(OUT) :: resultlen
1681 INTEGER, INTENT(OUT) :: ierror
1682 INTEGER, VALUE, INTENT(IN) :: win_name_len
1683 end subroutine ompi_win_get_name_f
1684
1685 subroutine ompi_win_set_attr_f(win,win_keyval,attribute_val,ierror) &
1686 BIND(C, name="ompi_win_set_attr_f")
1687 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1688 implicit none
1689 INTEGER, INTENT(IN) :: win
1690 INTEGER, INTENT(IN) :: win_keyval
1691 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: attribute_val
1692 INTEGER, INTENT(OUT) :: ierror
1693 end subroutine ompi_win_set_attr_f
1694
1695 subroutine ompi_win_set_name_f(win,win_name,ierror,win_name_len) &
1696 BIND(C, name="ompi_win_set_name_f")
1697 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1698 implicit none
1699 INTEGER, INTENT(IN) :: win
1700 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: win_name
1701 INTEGER, INTENT(OUT) :: ierror
1702 INTEGER, VALUE, INTENT(IN) :: win_name_len
1703 end subroutine ompi_win_set_name_f
1704
1705 subroutine ompi_cartdim_get_f(comm,ndims,ierror) &
1706 BIND(C, name="ompi_cartdim_get_f")
1707 implicit none
1708 INTEGER, INTENT(IN) :: comm
1709 INTEGER, INTENT(OUT) :: ndims
1710 INTEGER, INTENT(OUT) :: ierror
1711 end subroutine ompi_cartdim_get_f
1712
1713 subroutine ompi_cart_coords_f(comm,rank,maxdims,coords,ierror) &
1714 BIND(C, name="ompi_cart_coords_f")
1715 implicit none
1716 INTEGER, INTENT(IN) :: comm
1717 INTEGER, INTENT(IN) :: rank, maxdims
1718 INTEGER, INTENT(OUT) :: coords(maxdims)
1719 INTEGER, INTENT(OUT) :: ierror
1720 end subroutine ompi_cart_coords_f
1721
1722 subroutine ompi_cart_rank_f(comm,coords,rank,ierror) &
1723 BIND(C, name="ompi_cart_rank_f")
1724 implicit none
1725 INTEGER, INTENT(IN) :: comm
1726 INTEGER, INTENT(IN) :: coords(*)
1727 INTEGER, INTENT(OUT) :: rank
1728 INTEGER, INTENT(OUT) :: ierror
1729 end subroutine ompi_cart_rank_f
1730
1731 subroutine ompi_cart_shift_f(comm,direction,disp,rank_source,rank_dest,ierror) &
1732 BIND(C, name="ompi_cart_shift_f")
1733 implicit none
1734 INTEGER, INTENT(IN) :: comm
1735 INTEGER, INTENT(IN) :: direction, disp
1736 INTEGER, INTENT(OUT) :: rank_source, rank_dest
1737 INTEGER, INTENT(OUT) :: ierror
1738 end subroutine ompi_cart_shift_f
1739
1740 subroutine ompi_dims_create_f(nnodes,ndims,dims,ierror) &
1741 BIND(C, name="ompi_dims_create_f")
1742 implicit none
1743 INTEGER, INTENT(IN) :: nnodes, ndims
1744 INTEGER, INTENT(INOUT) :: dims(*)
1745 INTEGER, INTENT(OUT) :: ierror
1746 end subroutine ompi_dims_create_f
1747
1748 subroutine ompi_dist_graph_neighbors_f(comm,maxindegree,sources,sourceweights, &
1749 maxoutdegree,destinations,destweights,ierror) &
1750 BIND(C, name="ompi_dist_graph_neighbors_f")
1751 implicit none
1752 INTEGER, INTENT(IN) :: comm
1753 INTEGER, INTENT(IN) :: maxindegree, maxoutdegree
1754 INTEGER, INTENT(OUT) :: sources(maxindegree), destinations(maxoutdegree)
1755 INTEGER, INTENT(OUT) :: sourceweights(maxindegree), destweights(maxoutdegree)
1756 INTEGER, INTENT(OUT) :: ierror
1757 end subroutine ompi_dist_graph_neighbors_f
1758
1759 subroutine ompi_graphdims_get_f(comm,nnodes,nedges,ierror) &
1760 BIND(C, name="ompi_graphdims_get_f")
1761 implicit none
1762 INTEGER, INTENT(IN) :: comm
1763 INTEGER, INTENT(OUT) :: nnodes, nedges
1764 INTEGER, INTENT(OUT) :: ierror
1765 end subroutine ompi_graphdims_get_f
1766
1767 subroutine ompi_graph_get_f(comm,maxindex,maxedges,index,edges,ierror) &
1768 BIND(C, name="ompi_graph_get_f")
1769 implicit none
1770 INTEGER, INTENT(IN) :: comm
1771 INTEGER, INTENT(IN) :: maxindex, maxedges
1772 INTEGER, INTENT(OUT) :: index(*), edges(*)
1773 INTEGER, INTENT(OUT) :: ierror
1774 end subroutine ompi_graph_get_f
1775
1776 subroutine ompi_graph_map_f(comm,nnodes,index,edges,newrank,ierror) &
1777 BIND(C, name="ompi_graph_map_f")
1778 implicit none
1779 INTEGER, INTENT(IN) :: comm
1780 INTEGER, INTENT(IN) :: nnodes
1781 INTEGER, INTENT(IN) :: index(*), edges(*)
1782 INTEGER, INTENT(OUT) :: newrank
1783 INTEGER, INTENT(OUT) :: ierror
1784 end subroutine ompi_graph_map_f
1785
1786 subroutine ompi_graph_neighbors_f(comm,rank,maxneighbors,neighbors,ierror) &
1787 BIND(C, name="ompi_graph_neighbors_f")
1788 implicit none
1789 INTEGER, INTENT(IN) :: comm
1790 INTEGER, INTENT(IN) :: rank, maxneighbors
1791 INTEGER, INTENT(OUT) :: neighbors(*)
1792 INTEGER, INTENT(OUT) :: ierror
1793 end subroutine ompi_graph_neighbors_f
1794
1795 subroutine ompi_graph_neighbors_count_f(comm,rank,nneighbors,ierror) &
1796 BIND(C, name="ompi_graph_neighbors_count_f")
1797 implicit none
1798 INTEGER, INTENT(IN) :: comm
1799 INTEGER, INTENT(IN) :: rank
1800 INTEGER, INTENT(OUT) :: nneighbors
1801 INTEGER, INTENT(OUT) :: ierror
1802 end subroutine ompi_graph_neighbors_count_f
1803
1804 subroutine ompi_topo_test_f(comm,status,ierror) &
1805 BIND(C, name="ompi_topo_test_f")
1806 use :: mpi_f08_types, only : MPI_Status
1807 implicit none
1808 INTEGER, INTENT(IN) :: comm
1809 INTEGER, INTENT(OUT) :: status
1810 INTEGER, INTENT(OUT) :: ierror
1811 end subroutine ompi_topo_test_f
1812
1813 function ompi_wtick_f() &
1814 BIND(C, name="ompi_wtick_f")
1815 implicit none
1816 DOUBLE PRECISION :: ompi_wtick_f
1817 end function ompi_wtick_f
1818
1819 function ompi_wtime_f() &
1820 BIND(C, name="ompi_wtime_f")
1821 implicit none
1822 DOUBLE PRECISION :: ompi_wtime_f
1823 end function ompi_wtime_f
1824
1825 function ompi_aint_add_f(base,diff) &
1826 BIND(C, name="ompi_aint_add_f")
1827 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1828 implicit none
1829 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: base
1830 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: diff
1831 INTEGER(MPI_ADDRESS_KIND) :: ompi_aint_add_f
1832 end function ompi_aint_add_f
1833
1834 function ompi_aint_diff_f(addr1,addr2) &
1835 BIND(C, name="ompi_aint_diff_f")
1836 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1837 implicit none
1838 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: addr1
1839 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: addr2
1840 INTEGER(MPI_ADDRESS_KIND) :: ompi_aint_diff_f
1841 end function ompi_aint_diff_f
1842
1843 subroutine ompi_abort_f(comm,errorcode,ierror) &
1844 BIND(C, name="ompi_abort_f")
1845 implicit none
1846 INTEGER, INTENT(IN) :: comm
1847 INTEGER, INTENT(IN) :: errorcode
1848 INTEGER, INTENT(OUT) :: ierror
1849 end subroutine ompi_abort_f
1850
1851 subroutine ompi_add_error_class_f(errorclass,ierror) &
1852 BIND(C, name="ompi_add_error_class_f")
1853 implicit none
1854 INTEGER, INTENT(OUT) :: errorclass
1855 INTEGER, INTENT(OUT) :: ierror
1856 end subroutine ompi_add_error_class_f
1857
1858 subroutine ompi_add_error_code_f(errorclass,errorcode,ierror) &
1859 BIND(C, name="ompi_add_error_code_f")
1860 implicit none
1861 INTEGER, INTENT(IN) :: errorclass
1862 INTEGER, INTENT(OUT) :: errorcode
1863 INTEGER, INTENT(OUT) :: ierror
1864 end subroutine ompi_add_error_code_f
1865
1866 subroutine ompi_add_error_string_f(errorcode,string,ierror,str_len) &
1867 BIND(C, name="ompi_add_error_string_f")
1868 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1869 implicit none
1870 INTEGER, INTENT(IN) :: errorcode
1871 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: string
1872 INTEGER, INTENT(OUT) :: ierror
1873 INTEGER, VALUE, INTENT(IN) :: str_len
1874 end subroutine ompi_add_error_string_f
1875
1876 subroutine ompi_alloc_mem_f(size,info,baseptr,ierror) &
1877 BIND(C, name="ompi_alloc_mem_f")
1878 use, intrinsic :: ISO_C_BINDING, only : C_PTR
1879 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1880 implicit none
1881 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size
1882 INTEGER, INTENT(IN) :: info
1883 TYPE(C_PTR), INTENT(OUT) :: baseptr
1884 INTEGER, INTENT(OUT) :: ierror
1885 end subroutine ompi_alloc_mem_f
1886
1887 subroutine ompi_comm_call_errhandler_f(comm,errorcode,ierror) &
1888 BIND(C, name="ompi_comm_call_errhandler_f")
1889 implicit none
1890 INTEGER, INTENT(IN) :: comm
1891 INTEGER, INTENT(IN) :: errorcode
1892 INTEGER, INTENT(OUT) :: ierror
1893 end subroutine ompi_comm_call_errhandler_f
1894
1895 subroutine ompi_comm_create_errhandler_f(comm_errhandler_fn,errhandler,ierror) &
1896 BIND(C, name="ompi_comm_create_errhandler_f")
1897 use, intrinsic :: iso_c_binding, only: c_funptr
1898 implicit none
1899 type(c_funptr), value :: comm_errhandler_fn
1900 INTEGER, INTENT(OUT) :: errhandler
1901 INTEGER, INTENT(OUT) :: ierror
1902 end subroutine ompi_comm_create_errhandler_f
1903
1904 subroutine ompi_comm_get_errhandler_f(comm,errhandler,ierror) &
1905 BIND(C, name="ompi_comm_get_errhandler_f")
1906 implicit none
1907 INTEGER, INTENT(IN) :: comm
1908 INTEGER, INTENT(OUT) :: errhandler
1909 INTEGER, INTENT(OUT) :: ierror
1910 end subroutine ompi_comm_get_errhandler_f
1911
1912 subroutine ompi_comm_set_errhandler_f(comm,errhandler,ierror) &
1913 BIND(C, name="ompi_comm_set_errhandler_f")
1914 implicit none
1915 INTEGER, INTENT(IN) :: comm
1916 INTEGER, INTENT(IN) :: errhandler
1917 INTEGER, INTENT(OUT) :: ierror
1918 end subroutine ompi_comm_set_errhandler_f
1919
1920 subroutine ompi_errhandler_free_f(errhandler,ierror) &
1921 BIND(C, name="ompi_errhandler_free_f")
1922 implicit none
1923 INTEGER, INTENT(INOUT) :: errhandler
1924 INTEGER, INTENT(OUT) :: ierror
1925 end subroutine ompi_errhandler_free_f
1926
1927 subroutine ompi_error_class_f(errorcode,errorclass,ierror) &
1928 BIND(C, name="ompi_error_class_f")
1929 implicit none
1930 INTEGER, INTENT(IN) :: errorcode
1931 INTEGER, INTENT(OUT) :: errorclass
1932 INTEGER, INTENT(OUT) :: ierror
1933 end subroutine ompi_error_class_f
1934
1935 subroutine ompi_error_string_f(errorcode,string,resultlen,ierror,str_len) &
1936 BIND(C, name="ompi_error_string_f")
1937 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1938 implicit none
1939 INTEGER, INTENT(IN) :: errorcode
1940 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: string
1941 INTEGER, INTENT(OUT) :: resultlen
1942 INTEGER, INTENT(OUT) :: ierror
1943 INTEGER, VALUE, INTENT(IN) :: str_len
1944 end subroutine ompi_error_string_f
1945
1946 subroutine ompi_file_call_errhandler_f(fh,errorcode,ierror) &
1947 BIND(C, name="ompi_file_call_errhandler_f")
1948 implicit none
1949 INTEGER, INTENT(IN) :: fh
1950 INTEGER, INTENT(IN) :: errorcode
1951 INTEGER, INTENT(OUT) :: ierror
1952 end subroutine ompi_file_call_errhandler_f
1953
1954 subroutine ompi_file_create_errhandler_f(file_errhandler_fn,errhandler,ierror) &
1955 BIND(C, name="ompi_file_create_errhandler_f")
1956 use, intrinsic :: iso_c_binding, only: c_funptr
1957 implicit none
1958 type(c_funptr), value :: file_errhandler_fn
1959 INTEGER, INTENT(OUT) :: errhandler
1960 INTEGER, INTENT(OUT) :: ierror
1961 end subroutine ompi_file_create_errhandler_f
1962
1963 subroutine ompi_file_get_errhandler_f(file,errhandler,ierror) &
1964 BIND(C, name="ompi_file_get_errhandler_f")
1965 implicit none
1966 INTEGER, INTENT(IN) :: file
1967 INTEGER, INTENT(OUT) :: errhandler
1968 INTEGER, INTENT(OUT) :: ierror
1969 end subroutine ompi_file_get_errhandler_f
1970
1971 subroutine ompi_file_set_errhandler_f(file,errhandler,ierror) &
1972 BIND(C, name="ompi_file_set_errhandler_f")
1973 implicit none
1974 INTEGER, INTENT(IN) :: file
1975 INTEGER, INTENT(IN) :: errhandler
1976 INTEGER, INTENT(OUT) :: ierror
1977 end subroutine ompi_file_set_errhandler_f
1978
1979 subroutine ompi_finalize_f(ierror) &
1980 BIND(C, name="ompi_finalize_f")
1981 implicit none
1982 INTEGER, INTENT(OUT) :: ierror
1983 end subroutine ompi_finalize_f
1984
1985 subroutine ompi_free_mem_f(base,ierror) &
1986 BIND(C, name="ompi_free_mem_f")
1987 implicit none
1988 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
1989 INTEGER, INTENT(OUT) :: ierror
1990 end subroutine ompi_free_mem_f
1991
1992 subroutine ompi_get_processor_name_f(name,resultlen,ierror,name_len) &
1993 BIND(C, name="ompi_get_processor_name_f")
1994 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1995 implicit none
1996 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: name
1997 INTEGER, INTENT(OUT) :: resultlen
1998 INTEGER, INTENT(OUT) :: ierror
1999 INTEGER, VALUE, INTENT(IN) :: name_len
2000 end subroutine ompi_get_processor_name_f
2001
2002 subroutine ompi_get_version_f(version,subversion,ierror) &
2003 BIND(C, name="ompi_get_version_f")
2004 implicit none
2005 INTEGER, INTENT(OUT) :: version, subversion
2006 INTEGER, INTENT(OUT) :: ierror
2007 end subroutine ompi_get_version_f
2008
2009 subroutine ompi_init_f(ierror) &
2010 BIND(C, name="ompi_init_f")
2011 implicit none
2012 INTEGER, INTENT(OUT) :: ierror
2013 end subroutine ompi_init_f
2014
2015 subroutine ompi_win_call_errhandler_f(win,errorcode,ierror) &
2016 BIND(C, name="ompi_win_call_errhandler_f")
2017 implicit none
2018 INTEGER, INTENT(IN) :: win
2019 INTEGER, INTENT(IN) :: errorcode
2020 INTEGER, INTENT(OUT) :: ierror
2021 end subroutine ompi_win_call_errhandler_f
2022
2023 subroutine ompi_win_create_errhandler_f(win_errhandler_fn,errhandler,ierror) &
2024 BIND(C, name="ompi_win_create_errhandler_f")
2025 use, intrinsic :: iso_c_binding, only: c_funptr
2026 implicit none
2027 type(c_funptr), value :: win_errhandler_fn
2028 INTEGER, INTENT(OUT) :: errhandler
2029 INTEGER, INTENT(OUT) :: ierror
2030 end subroutine ompi_win_create_errhandler_f
2031
2032 subroutine ompi_win_get_errhandler_f(win,errhandler,ierror) &
2033 BIND(C, name="ompi_win_get_errhandler_f")
2034 implicit none
2035 INTEGER, INTENT(IN) :: win
2036 INTEGER, INTENT(OUT) :: errhandler
2037 INTEGER, INTENT(OUT) :: ierror
2038 end subroutine ompi_win_get_errhandler_f
2039
2040 subroutine ompi_win_set_errhandler_f(win,errhandler,ierror) &
2041 BIND(C, name="ompi_win_set_errhandler_f")
2042 implicit none
2043 INTEGER, INTENT(IN) :: win
2044 INTEGER, INTENT(IN) :: errhandler
2045 INTEGER, INTENT(OUT) :: ierror
2046 end subroutine ompi_win_set_errhandler_f
2047
2048 subroutine ompi_info_create_f(info,ierror) &
2049 BIND(C, name="ompi_info_create_f")
2050 implicit none
2051 INTEGER, INTENT(OUT) :: info
2052 INTEGER, INTENT(OUT) :: ierror
2053 end subroutine ompi_info_create_f
2054
2055 subroutine ompi_info_delete_f(info,key,ierror,key_len) &
2056 BIND(C, name="ompi_info_delete_f")
2057 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2058 implicit none
2059 INTEGER, INTENT(IN) :: info
2060 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: key
2061 INTEGER, INTENT(OUT) :: ierror
2062 INTEGER, VALUE, INTENT(IN) :: key_len
2063 end subroutine ompi_info_delete_f
2064
2065 subroutine ompi_info_dup_f(info,newinfo,ierror) &
2066 BIND(C, name="ompi_info_dup_f")
2067 implicit none
2068 INTEGER, INTENT(IN) :: info
2069 INTEGER, INTENT(OUT) :: newinfo
2070 INTEGER, INTENT(OUT) :: ierror
2071 end subroutine ompi_info_dup_f
2072
2073 subroutine ompi_info_free_f(info,ierror) &
2074 BIND(C, name="ompi_info_free_f")
2075 implicit none
2076 INTEGER, INTENT(INOUT) :: info
2077 INTEGER, INTENT(OUT) :: ierror
2078 end subroutine ompi_info_free_f
2079
2080 subroutine ompi_info_get_nkeys_f(info,nkeys,ierror) &
2081 BIND(C, name="ompi_info_get_nkeys_f")
2082 implicit none
2083 INTEGER, INTENT(IN) :: info
2084 INTEGER, INTENT(OUT) :: nkeys
2085 INTEGER, INTENT(OUT) :: ierror
2086 end subroutine ompi_info_get_nkeys_f
2087
2088 subroutine ompi_info_get_nthkey_f(info,n,key,ierror,key_len) &
2089 BIND(C, name="ompi_info_get_nthkey_f")
2090 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2091 implicit none
2092 INTEGER, INTENT(IN) :: info
2093 INTEGER, INTENT(IN) :: n
2094 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: key
2095 INTEGER, INTENT(OUT) :: ierror
2096 INTEGER, VALUE, INTENT(IN) :: key_len
2097 end subroutine ompi_info_get_nthkey_f
2098
2099 subroutine ompi_info_set_f(info,key,value,ierror,key_len,value_len) &
2100 BIND(C, name="ompi_info_set_f")
2101 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2102 implicit none
2103 INTEGER, INTENT(IN) :: info
2104 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: key, value
2105 INTEGER, INTENT(OUT) :: ierror
2106 INTEGER, VALUE, INTENT(IN) :: key_len, value_len
2107 end subroutine ompi_info_set_f
2108
2109 subroutine ompi_close_port_f(port_name,ierror,port_name_len) &
2110 BIND(C, name="ompi_close_port_f")
2111 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2112 implicit none
2113 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: port_name
2114 INTEGER, INTENT(OUT) :: ierror
2115 INTEGER, VALUE, INTENT(IN) :: port_name_len
2116 end subroutine ompi_close_port_f
2117
2118 subroutine ompi_comm_accept_f(port_name,info,root,comm,newcomm,ierror,port_name_len) &
2119 BIND(C, name="ompi_comm_accept_f")
2120 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2121 implicit none
2122 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: port_name
2123 INTEGER, INTENT(IN) :: info
2124 INTEGER, INTENT(IN) :: root
2125 INTEGER, INTENT(IN) :: comm
2126 INTEGER, INTENT(OUT) :: newcomm
2127 INTEGER, INTENT(OUT) :: ierror
2128 INTEGER, VALUE, INTENT(IN) :: port_name_len
2129 end subroutine ompi_comm_accept_f
2130
2131 subroutine ompi_comm_connect_f(port_name,info,root,comm,newcomm,ierror,port_name_len) &
2132 BIND(C, name="ompi_comm_connect_f")
2133 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2134 implicit none
2135 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: port_name
2136 INTEGER, INTENT(IN) :: info
2137 INTEGER, INTENT(IN) :: root
2138 INTEGER, INTENT(IN) :: comm
2139 INTEGER, INTENT(OUT) :: newcomm
2140 INTEGER, INTENT(OUT) :: ierror
2141 INTEGER, VALUE, INTENT(IN) :: port_name_len
2142 end subroutine ompi_comm_connect_f
2143
2144 subroutine ompi_comm_disconnect_f(comm,ierror) &
2145 BIND(C, name="ompi_comm_disconnect_f")
2146 implicit none
2147 INTEGER, INTENT(INOUT) :: comm
2148 INTEGER, INTENT(OUT) :: ierror
2149 end subroutine ompi_comm_disconnect_f
2150
2151 subroutine ompi_comm_get_parent_f(parent,ierror) &
2152 BIND(C, name="ompi_comm_get_parent_f")
2153 implicit none
2154 INTEGER, INTENT(OUT) :: parent
2155 INTEGER, INTENT(OUT) :: ierror
2156 end subroutine ompi_comm_get_parent_f
2157
2158 subroutine ompi_comm_join_f(fd,intercomm,ierror) &
2159 BIND(C, name="ompi_comm_join_f")
2160 implicit none
2161 INTEGER, INTENT(IN) :: fd
2162 INTEGER, INTENT(OUT) :: intercomm
2163 INTEGER, INTENT(OUT) :: ierror
2164 end subroutine ompi_comm_join_f
2165
2166 subroutine ompi_comm_spawn_f(command,argv,maxprocs,info,root,comm, &
2167 intercomm, array_of_errcodes,ierror,cmd_len,argv_len) &
2168 BIND(C, name="ompi_comm_spawn_f")
2169 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2170 implicit none
2171 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: command, argv
2172 INTEGER, INTENT(IN) :: maxprocs, root
2173 INTEGER, INTENT(IN) :: info
2174 INTEGER, INTENT(IN) :: comm
2175 INTEGER, INTENT(OUT) :: intercomm
2176 INTEGER, INTENT(OUT) :: array_of_errcodes(*)
2177 INTEGER, INTENT(OUT) :: ierror
2178 INTEGER, VALUE, INTENT(IN) :: cmd_len, argv_len
2179 end subroutine ompi_comm_spawn_f
2180
2181
2182 ! TODO - FIXME to use arrays of strings and pass strlen
2183 subroutine ompi_comm_spawn_multiple_f(count,array_of_commands, &
2184 array_of_argv, array_of_maxprocs,array_of_info,root, &
2185 comm,intercomm,array_of_errcodes,ierror, &
2186 cmd_len, argv_len) &
2187 BIND(C, name="ompi_comm_spawn_multiple_f")
2188 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2189 implicit none
2190 INTEGER, INTENT(IN) :: count, root
2191 INTEGER, INTENT(IN) :: array_of_maxprocs(count)
2192 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: array_of_commands(*), array_of_argv(*)
2193 INTEGER, INTENT(IN) :: array_of_info(count)
2194 INTEGER, INTENT(IN) :: comm
2195 INTEGER, INTENT(OUT) :: intercomm
2196 INTEGER, INTENT(OUT) :: array_of_errcodes(*)
2197 INTEGER, INTENT(OUT) :: ierror
2198 INTEGER, VALUE, INTENT(IN) :: cmd_len, argv_len
2199 end subroutine ompi_comm_spawn_multiple_f
2200
2201 subroutine ompi_lookup_name_f(service_name,info,port_name,ierror, &
2202 service_name_len,port_name_len) &
2203 BIND(C, name="ompi_lookup_name_f")
2204 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2205 implicit none
2206 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: service_name
2207 INTEGER, INTENT(IN) :: info
2208 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: port_name
2209 INTEGER, INTENT(OUT) :: ierror
2210 INTEGER, VALUE, INTENT(IN) :: service_name_len, port_name_len
2211 end subroutine ompi_lookup_name_f
2212
2213 subroutine ompi_open_port_f(info,port_name,ierror,port_name_len) &
2214 BIND(C, name="ompi_open_port_f")
2215 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2216 implicit none
2217 INTEGER, INTENT(IN) :: info
2218 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: port_name
2219 INTEGER, INTENT(OUT) :: ierror
2220 INTEGER, VALUE, INTENT(IN) :: port_name_len
2221 end subroutine ompi_open_port_f
2222
2223 subroutine ompi_publish_name_f(service_name,info,port_name,ierror, &
2224 service_name_len,port_name_len) &
2225 BIND(C, name="ompi_publish_name_f")
2226 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2227 implicit none
2228 INTEGER, INTENT(IN) :: info
2229 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: service_name, port_name
2230 INTEGER, INTENT(OUT) :: ierror
2231 INTEGER, VALUE, INTENT(IN) :: service_name_len, port_name_len
2232 end subroutine ompi_publish_name_f
2233
2234 subroutine ompi_unpublish_name_f(service_name,info,port_name, &
2235 ierror,service_name_len,port_name_len) &
2236 BIND(C, name="ompi_unpublish_name_f")
2237 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2238 implicit none
2239 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: service_name, port_name
2240 INTEGER, INTENT(IN) :: info
2241 INTEGER, INTENT(OUT) :: ierror
2242 INTEGER, VALUE, INTENT(IN) :: service_name_len, port_name_len
2243 end subroutine ompi_unpublish_name_f
2244
2245 subroutine ompi_accumulate_f(origin_addr,origin_count,origin_datatype, &
2246 target_rank,target_disp, &
2247 target_count,target_datatype,op,win,ierror) &
2248 BIND(C, name="ompi_accumulate_f")
2249 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2250 implicit none
2251 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2252 INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2253 INTEGER, INTENT(IN) :: origin_datatype
2254 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2255 INTEGER, INTENT(IN) :: target_datatype
2256 INTEGER, INTENT(IN) :: op
2257 INTEGER, INTENT(IN) :: win
2258 INTEGER, INTENT(OUT) :: ierror
2259 end subroutine ompi_accumulate_f
2260
2261 subroutine ompi_raccumulate_f(origin_addr,origin_count,origin_datatype, &
2262 target_rank,target_disp, &
2263 target_count,target_datatype,op,win, &
2264 request,ierror) &
2265 BIND(C, name="ompi_raccumulate_f")
2266 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2267 implicit none
2268 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2269 INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2270 INTEGER, INTENT(IN) :: origin_datatype
2271 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2272 INTEGER, INTENT(IN) :: target_datatype
2273 INTEGER, INTENT(IN) :: op
2274 INTEGER, INTENT(IN) :: win
2275 INTEGER, INTENT(OUT) :: request
2276 INTEGER, INTENT(OUT) :: ierror
2277 end subroutine ompi_raccumulate_f
2278
2279 subroutine ompi_get_f(origin_addr,origin_count,origin_datatype,target_rank, &
2280 target_disp,target_count,target_datatype,win,ierror) &
2281 BIND(C, name="ompi_get_f")
2282 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2283 implicit none
2284 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2285 INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2286 INTEGER, INTENT(IN) :: origin_datatype
2287 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2288 INTEGER, INTENT(IN) :: target_datatype
2289 INTEGER, INTENT(IN) :: win
2290 INTEGER, INTENT(OUT) :: ierror
2291 end subroutine ompi_get_f
2292
2293 subroutine ompi_rget_f(origin_addr,origin_count,origin_datatype,target_rank, &
2294 target_disp,target_count,target_datatype,win,request, &
2295 ierror) &
2296 BIND(C, name="ompi_rget_f")
2297 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2298 implicit none
2299 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2300 INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2301 INTEGER, INTENT(IN) :: origin_datatype
2302 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2303 INTEGER, INTENT(IN) :: target_datatype
2304 INTEGER, INTENT(IN) :: win
2305 INTEGER, INTENT(OUT) :: request
2306 INTEGER, INTENT(OUT) :: ierror
2307 end subroutine ompi_rget_f
2308
2309 subroutine ompi_get_accumulate_f(origin_addr,origin_count,origin_datatype, &
2310 result_addr,result_count,result_datatype, &
2311 target_rank,target_disp, &
2312 target_count,target_datatype,op,win, &
2313 ierror) &
2314 BIND(C, name="ompi_get_accumulate_f")
2315 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2316 implicit none
2317 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2318 INTEGER, INTENT(IN) :: origin_count, result_count, target_rank, target_count
2319 INTEGER, INTENT(IN) :: origin_datatype
2320 OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2321 INTEGER, INTENT(IN) :: result_datatype
2322 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2323 INTEGER, INTENT(IN) :: target_datatype
2324 INTEGER, INTENT(IN) :: op
2325 INTEGER, INTENT(IN) :: win
2326 INTEGER, INTENT(OUT) :: ierror
2327 end subroutine ompi_get_accumulate_f
2328
2329 subroutine ompi_rget_accumulate_f(origin_addr,origin_count,origin_datatype, &
2330 result_addr,result_count,result_datatype, &
2331 target_rank,target_disp, &
2332 target_count,target_datatype,op,win, &
2333 request,ierror) &
2334 BIND(C, name="ompi_rget_accumulate_f")
2335 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2336 implicit none
2337 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2338 INTEGER, INTENT(IN) :: origin_count, result_count, target_rank, target_count
2339 INTEGER, INTENT(IN) :: origin_datatype
2340 OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2341 INTEGER, INTENT(IN) :: result_datatype
2342 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2343 INTEGER, INTENT(IN) :: target_datatype
2344 INTEGER, INTENT(IN) :: op
2345 INTEGER, INTENT(IN) :: win
2346 INTEGER, INTENT(OUT) :: request
2347 INTEGER, INTENT(OUT) :: ierror
2348 end subroutine ompi_rget_accumulate_f
2349
2350 subroutine ompi_put_f(origin_addr,origin_count,origin_datatype,target_rank, &
2351 target_disp,target_count,target_datatype,win,ierror) &
2352 BIND(C, name="ompi_put_f")
2353 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2354 implicit none
2355 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2356 INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2357 INTEGER, INTENT(IN) :: origin_datatype
2358 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2359 INTEGER, INTENT(IN) :: target_datatype
2360 INTEGER, INTENT(IN) :: win
2361 INTEGER, INTENT(OUT) :: ierror
2362 end subroutine ompi_put_f
2363
2364 subroutine ompi_rput_f(origin_addr,origin_count,origin_datatype,target_rank, &
2365 target_disp,target_count,target_datatype,win,request, &
2366 ierror) &
2367 BIND(C, name="ompi_rput_f")
2368 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2369 implicit none
2370 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2371 INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2372 INTEGER, INTENT(IN) :: origin_datatype
2373 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2374 INTEGER, INTENT(IN) :: target_datatype
2375 INTEGER, INTENT(IN) :: win
2376 INTEGER, INTENT(OUT) :: request
2377 INTEGER, INTENT(OUT) :: ierror
2378 end subroutine ompi_rput_f
2379
2380 subroutine ompi_win_complete_f(win,ierror) &
2381 BIND(C, name="ompi_win_complete_f")
2382 implicit none
2383 INTEGER, INTENT(IN) :: win
2384 INTEGER, INTENT(OUT) :: ierror
2385 end subroutine ompi_win_complete_f
2386
2387 subroutine ompi_compare_and_swap_f(origin_addr,compare_addr,result_addr, &
2388 datatype,target_rank,target_disp, win, &
2389 ierror) &
2390 BIND(C, name="ompi_compare_and_swap_f")
2391 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2392 implicit none
2393 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr, compare_addr
2394 OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2395 INTEGER, INTENT(IN) :: datatype
2396 INTEGER, INTENT(IN) :: target_rank
2397 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2398 INTEGER, INTENT(IN) :: win
2399 INTEGER, INTENT(OUT) :: ierror
2400 end subroutine ompi_compare_and_swap_f
2401
2402 subroutine ompi_fetch_and_op_f(origin_addr,result_addr,datatype,target_rank, &
2403 target_disp,op,win,ierror) &
2404 BIND(C, name="ompi_fetch_and_op_f")
2405 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2406 implicit none
2407 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2408 OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2409 INTEGER, INTENT(IN) :: datatype
2410 INTEGER, INTENT(IN) :: target_rank
2411 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2412 INTEGER, INTENT(IN) :: op
2413 INTEGER, INTENT(IN) :: win
2414 INTEGER, INTENT(OUT) :: ierror
2415 end subroutine ompi_fetch_and_op_f
2416
2417 subroutine ompi_win_create_f(base,size,disp_unit,info,comm,win,ierror) &
2418 BIND(C, name="ompi_win_create_f")
2419 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2420 implicit none
2421 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
2422 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size
2423 INTEGER, INTENT(IN) :: disp_unit
2424 INTEGER, INTENT(IN) :: info
2425 INTEGER, INTENT(IN) :: comm
2426 INTEGER, INTENT(OUT) :: win
2427 INTEGER, INTENT(OUT) :: ierror
2428 end subroutine ompi_win_create_f
2429
2430 subroutine ompi_win_create_dynamic_f(info,comm,win,ierror) &
2431 BIND(C, name="ompi_win_create_dynamic_f")
2432 implicit none
2433 INTEGER, INTENT(IN) :: info
2434 INTEGER, INTENT(IN) :: comm
2435 INTEGER, INTENT(OUT) :: win
2436 INTEGER, INTENT(OUT) :: ierror
2437 end subroutine ompi_win_create_dynamic_f
2438
2439 subroutine ompi_win_attach_f(win,base,size,ierror) &
2440 BIND(C, name="ompi_win_attach_f")
2441 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2442 implicit none
2443 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
2444 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size
2445 INTEGER, INTENT(IN) :: win
2446 INTEGER, INTENT(OUT) :: ierror
2447 end subroutine ompi_win_attach_f
2448
2449 subroutine ompi_win_detach_f(win,base,ierror) &
2450 BIND(C, name="ompi_win_detach_f")
2451 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2452 implicit none
2453 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
2454 INTEGER, INTENT(IN) :: win
2455 INTEGER, INTENT(OUT) :: ierror
2456 end subroutine ompi_win_detach_f
2457
2458 subroutine ompi_win_flush_f(rank,win,ierror) &
2459 BIND(C, name="ompi_win_flush_f")
2460 implicit none
2461 INTEGER, INTENT(IN) :: rank
2462 INTEGER, INTENT(IN) :: win
2463 INTEGER, INTENT(OUT) :: ierror
2464 end subroutine ompi_win_flush_f
2465
2466 subroutine ompi_win_flush_all_f(win,ierror) &
2467 BIND(C, name="ompi_win_flush_all_f")
2468 implicit none
2469 INTEGER, INTENT(IN) :: win
2470 INTEGER, INTENT(OUT) :: ierror
2471 end subroutine ompi_win_flush_all_f
2472
2473 subroutine ompi_win_flush_local_f(rank,win,ierror) &
2474 BIND(C, name="ompi_win_flush_local_f")
2475 implicit none
2476 INTEGER, INTENT(IN) :: rank
2477 INTEGER, INTENT(IN) :: win
2478 INTEGER, INTENT(OUT) :: ierror
2479 end subroutine ompi_win_flush_local_f
2480
2481 subroutine ompi_win_flush_local_all_f(win,ierror) &
2482 BIND(C, name="ompi_win_flush_local_all_f")
2483 implicit none
2484 INTEGER, INTENT(IN) :: win
2485 INTEGER, INTENT(OUT) :: ierror
2486 end subroutine ompi_win_flush_local_all_f
2487
2488 subroutine ompi_win_fence_f(assert,win,ierror) &
2489 BIND(C, name="ompi_win_fence_f")
2490 implicit none
2491 INTEGER, INTENT(IN) :: assert
2492 INTEGER, INTENT(IN) :: win
2493 INTEGER, INTENT(OUT) :: ierror
2494 end subroutine ompi_win_fence_f
2495
2496 subroutine ompi_win_free_f(win,ierror) &
2497 BIND(C, name="ompi_win_free_f")
2498 implicit none
2499 INTEGER, INTENT(INOUT) :: win
2500 INTEGER, INTENT(OUT) :: ierror
2501 end subroutine ompi_win_free_f
2502
2503 subroutine ompi_win_get_group_f(win,group,ierror) &
2504 BIND(C, name="ompi_win_get_group_f")
2505 implicit none
2506 INTEGER, INTENT(IN) :: win
2507 INTEGER, INTENT(OUT) :: group
2508 INTEGER, INTENT(OUT) :: ierror
2509 end subroutine ompi_win_get_group_f
2510
2511 subroutine ompi_win_get_info_f(comm,info,ierror) &
2512 BIND(C, name="ompi_win_get_info_f")
2513 implicit none
2514 INTEGER, INTENT(IN) :: comm
2515 INTEGER, INTENT(OUT) :: info
2516 INTEGER, INTENT(OUT) :: ierror
2517 end subroutine ompi_win_get_info_f
2518
2519 subroutine ompi_win_lock_f(lock_type,rank,assert,win,ierror) &
2520 BIND(C, name="ompi_win_lock_f")
2521 implicit none
2522 INTEGER, INTENT(IN) :: lock_type, rank, assert
2523 INTEGER, INTENT(IN) :: win
2524 INTEGER, INTENT(OUT) :: ierror
2525 end subroutine ompi_win_lock_f
2526
2527 subroutine ompi_win_lock_all_f(assert,win,ierror) &
2528 BIND(C, name="ompi_win_lock_all_f")
2529 implicit none
2530 INTEGER, INTENT(IN) :: assert
2531 INTEGER, INTENT(IN) :: win
2532 INTEGER, INTENT(OUT) :: ierror
2533 end subroutine ompi_win_lock_all_f
2534
2535 subroutine ompi_win_post_f(group,assert,win,ierror) &
2536 BIND(C, name="ompi_win_post_f")
2537 implicit none
2538 INTEGER, INTENT(IN) :: group
2539 INTEGER, INTENT(IN) :: assert
2540 INTEGER, INTENT(IN) :: win
2541 INTEGER, INTENT(OUT) :: ierror
2542 end subroutine ompi_win_post_f
2543
2544 subroutine ompi_win_set_info_f(comm,info,ierror) &
2545 BIND(C, name="ompi_win_set_info_f")
2546 implicit none
2547 INTEGER, INTENT(IN) :: comm
2548 INTEGER, INTENT(IN) :: info
2549 INTEGER, INTENT(OUT) :: ierror
2550 end subroutine ompi_win_set_info_f
2551
2552 subroutine ompi_win_shared_query_f(win, rank, size, disp_unit, baseptr,&
2553 ierror) BIND(C, name="ompi_win_shared_query_f")
2554 USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
2555 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2556 INTEGER, INTENT(IN) :: win
2557 INTEGER, INTENT(IN) :: rank
2558 INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) :: size
2559 INTEGER, INTENT(OUT) :: disp_unit
2560 TYPE(C_PTR), INTENT(OUT) :: baseptr
2561 INTEGER, INTENT(OUT) :: ierror
2562 end subroutine ompi_win_shared_query_f
2563
2564 subroutine ompi_win_start_f(group,assert,win,ierror) &
2565 BIND(C, name="ompi_win_start_f")
2566 implicit none
2567 INTEGER, INTENT(IN) :: group
2568 INTEGER, INTENT(IN) :: assert
2569 INTEGER, INTENT(IN) :: win
2570 INTEGER, INTENT(OUT) :: ierror
2571 end subroutine ompi_win_start_f
2572
2573 subroutine ompi_win_sync_f(win,ierror) &
2574 BIND(C, name="ompi_win_sync_f")
2575 implicit none
2576 INTEGER, INTENT(IN) :: win
2577 INTEGER, INTENT(OUT) :: ierror
2578 end subroutine ompi_win_sync_f
2579
2580 subroutine ompi_win_unlock_f(rank,win,ierror) &
2581 BIND(C, name="ompi_win_unlock_f")
2582 implicit none
2583 INTEGER, INTENT(IN) :: rank
2584 INTEGER, INTENT(IN) :: win
2585 INTEGER, INTENT(OUT) :: ierror
2586 end subroutine ompi_win_unlock_f
2587
2588 subroutine ompi_win_unlock_all_f(win,ierror) &
2589 BIND(C, name="ompi_win_unlock_all_f")
2590 implicit none
2591 INTEGER, INTENT(IN) :: win
2592 INTEGER, INTENT(OUT) :: ierror
2593 end subroutine ompi_win_unlock_all_f
2594
2595 subroutine ompi_win_wait_f(win,ierror) &
2596 BIND(C, name="ompi_win_wait_f")
2597 implicit none
2598 INTEGER, INTENT(IN) :: win
2599 INTEGER, INTENT(OUT) :: ierror
2600 end subroutine ompi_win_wait_f
2601
2602 subroutine ompi_grequest_complete_f(request,ierror) &
2603 BIND(C, name="ompi_grequest_complete_f")
2604 implicit none
2605 INTEGER, INTENT(IN) :: request
2606 INTEGER, INTENT(OUT) :: ierror
2607 end subroutine ompi_grequest_complete_f
2608
2609 subroutine ompi_grequest_start_f(query_fn,free_fn,cancel_fn, &
2610 extra_state,request,ierror) &
2611 BIND(C, name="ompi_grequest_start_f")
2612 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2613 use, intrinsic :: iso_c_binding, only: c_funptr
2614 implicit none
2615 type(c_funptr), value :: query_fn
2616 type(c_funptr), value :: free_fn
2617 type(c_funptr), value :: cancel_fn
2618 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
2619 INTEGER, INTENT(OUT) :: request
2620 INTEGER, INTENT(OUT) :: ierror
2621 end subroutine ompi_grequest_start_f
2622
2623 subroutine ompi_init_thread_f(required,provided,ierror) &
2624 BIND(C, name="ompi_init_thread_f")
2625 implicit none
2626 INTEGER, INTENT(IN) :: required
2627 INTEGER, INTENT(OUT) :: provided
2628 INTEGER, INTENT(OUT) :: ierror
2629 end subroutine ompi_init_thread_f
2630
2631 subroutine ompi_query_thread_f(provided,ierror) &
2632 BIND(C, name="ompi_query_thread_f")
2633 implicit none
2634 INTEGER, INTENT(OUT) :: provided
2635 INTEGER, INTENT(OUT) :: ierror
2636 end subroutine ompi_query_thread_f
2637
2638 subroutine ompi_status_set_elements_f(status,datatype,count,ierror) &
2639 BIND(C, name="ompi_status_set_elements_f")
2640 use :: mpi_f08_types, only : MPI_Status
2641 implicit none
2642 TYPE(MPI_Status), INTENT(INOUT) :: status
2643 INTEGER, INTENT(IN) :: datatype
2644 INTEGER, INTENT(IN) :: count
2645 INTEGER, INTENT(OUT) :: ierror
2646 end subroutine ompi_status_set_elements_f
2647
2648 subroutine ompi_status_set_elements_x_f(status,datatype,count,ierror) &
2649 BIND(C, name="ompi_status_set_elements_x_f")
2650 use :: mpi_f08_types, only : MPI_Status, MPI_COUNT_KIND
2651 implicit none
2652 TYPE(MPI_Status), INTENT(INOUT) :: status
2653 INTEGER, INTENT(IN) :: datatype
2654 INTEGER(MPI_COUNT_KIND), INTENT(IN) :: count
2655 INTEGER, INTENT(OUT) :: ierror
2656 end subroutine ompi_status_set_elements_x_f
2657
2658 subroutine ompi_file_close_f(fh,ierror) &
2659 BIND(C, name="ompi_file_close_f")
2660 implicit none
2661 INTEGER, INTENT(INOUT) :: fh
2662 INTEGER, INTENT(OUT) :: ierror
2663 end subroutine ompi_file_close_f
2664
2665 subroutine ompi_file_delete_f(filename,info,ierror,filename_len) &
2666 BIND(C, name="ompi_file_delete_f")
2667 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2668 implicit none
2669 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: filename
2670 INTEGER, INTENT(IN) :: info
2671 INTEGER, INTENT(OUT) :: ierror
2672 INTEGER, VALUE, INTENT(IN) :: filename_len
2673 end subroutine ompi_file_delete_f
2674
2675 subroutine ompi_file_get_amode_f(fh,amode,ierror) &
2676 BIND(C, name="ompi_file_get_amode_f")
2677 implicit none
2678 INTEGER, INTENT(IN) :: fh
2679 INTEGER, INTENT(OUT) :: amode
2680 INTEGER, INTENT(OUT) :: ierror
2681 end subroutine ompi_file_get_amode_f
2682
2683 subroutine ompi_file_get_byte_offset_f(fh,offset,disp,ierror) &
2684 BIND(C, name="ompi_file_get_byte_offset_f")
2685 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2686 implicit none
2687 INTEGER, INTENT(IN) :: fh
2688 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2689 INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: disp
2690 INTEGER, INTENT(OUT) :: ierror
2691 end subroutine ompi_file_get_byte_offset_f
2692
2693 subroutine ompi_file_get_group_f(fh,group,ierror) &
2694 BIND(C, name="ompi_file_get_group_f")
2695 implicit none
2696 INTEGER, INTENT(IN) :: fh
2697 INTEGER, INTENT(OUT) :: group
2698 INTEGER, INTENT(OUT) :: ierror
2699 end subroutine ompi_file_get_group_f
2700
2701 subroutine ompi_file_get_info_f(fh,info_used,ierror) &
2702 BIND(C, name="ompi_file_get_info_f")
2703 implicit none
2704 INTEGER, INTENT(IN) :: fh
2705 INTEGER, INTENT(OUT) :: info_used
2706 INTEGER, INTENT(OUT) :: ierror
2707 end subroutine ompi_file_get_info_f
2708
2709 subroutine ompi_file_get_position_f(fh,offset,ierror) &
2710 BIND(C, name="ompi_file_get_position_f")
2711 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2712 implicit none
2713 INTEGER, INTENT(IN) :: fh
2714 INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: offset
2715 INTEGER, INTENT(OUT) :: ierror
2716 end subroutine ompi_file_get_position_f
2717
2718 subroutine ompi_file_get_position_shared_f(fh,offset,ierror) &
2719 BIND(C, name="ompi_file_get_position_shared_f")
2720 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2721 implicit none
2722 INTEGER, INTENT(IN) :: fh
2723 INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: offset
2724 INTEGER, INTENT(OUT) :: ierror
2725 end subroutine ompi_file_get_position_shared_f
2726
2727 subroutine ompi_file_get_size_f(fh,size,ierror) &
2728 BIND(C, name="ompi_file_get_size_f")
2729 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2730 implicit none
2731 INTEGER, INTENT(IN) :: fh
2732 INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: size
2733 INTEGER, INTENT(OUT) :: ierror
2734 end subroutine ompi_file_get_size_f
2735
2736 subroutine ompi_file_get_type_extent_f(fh,datatype,extent,ierror) &
2737 BIND(C, name="ompi_file_get_type_extent_f")
2738 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2739 implicit none
2740 INTEGER, INTENT(IN) :: fh
2741 INTEGER, INTENT(IN) :: datatype
2742 INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: extent
2743 INTEGER, INTENT(OUT) :: ierror
2744 end subroutine ompi_file_get_type_extent_f
2745
2746 subroutine ompi_file_get_view_f(fh,disp,etype,filetype,datarep,ierror,datarep_len) &
2747 BIND(C, name="ompi_file_get_view_f")
2748 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2749 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2750 implicit none
2751 INTEGER, INTENT(IN) :: fh
2752 INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: disp
2753 INTEGER, INTENT(OUT) :: etype
2754 INTEGER, INTENT(OUT) :: filetype
2755 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: datarep
2756 INTEGER, INTENT(OUT) :: ierror
2757 INTEGER, VALUE, INTENT(IN) :: datarep_len
2758 end subroutine ompi_file_get_view_f
2759
2760 subroutine ompi_file_iread_f(fh,buf,count,datatype,request,ierror) &
2761 BIND(C, name="ompi_file_iread_f")
2762 implicit none
2763 INTEGER, INTENT(IN) :: fh
2764 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2765 INTEGER, INTENT(IN) :: count
2766 INTEGER, INTENT(IN) :: datatype
2767 INTEGER, INTENT(OUT) :: request
2768 INTEGER, INTENT(OUT) :: ierror
2769 end subroutine ompi_file_iread_f
2770
2771 subroutine ompi_file_iread_at_f(fh,offset,buf,count,datatype,request,ierror) &
2772 BIND(C, name="ompi_file_iread_at_f")
2773 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2774 implicit none
2775 INTEGER, INTENT(IN) :: fh
2776 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2777 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2778 INTEGER, INTENT(IN) :: count
2779 INTEGER, INTENT(IN) :: datatype
2780 INTEGER, INTENT(OUT) :: request
2781 INTEGER, INTENT(OUT) :: ierror
2782 end subroutine ompi_file_iread_at_f
2783
2784 subroutine ompi_file_iread_all_f(fh,buf,count,datatype,request,ierror) &
2785 BIND(C, name="ompi_file_iread_all_f")
2786 implicit none
2787 INTEGER, INTENT(IN) :: fh
2788 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2789 INTEGER, INTENT(IN) :: count
2790 INTEGER, INTENT(IN) :: datatype
2791 INTEGER, INTENT(OUT) :: request
2792 INTEGER, INTENT(OUT) :: ierror
2793 end subroutine ompi_file_iread_all_f
2794
2795 subroutine ompi_file_iread_at_all_f(fh,offset,buf,count,datatype,request,ierror) &
2796 BIND(C, name="ompi_file_iread_at_all_f")
2797 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2798 implicit none
2799 INTEGER, INTENT(IN) :: fh
2800 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2801 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2802 INTEGER, INTENT(IN) :: count
2803 INTEGER, INTENT(IN) :: datatype
2804 INTEGER, INTENT(OUT) :: request
2805 INTEGER, INTENT(OUT) :: ierror
2806 end subroutine ompi_file_iread_at_all_f
2807
2808 subroutine ompi_file_iread_shared_f(fh,buf,count,datatype,request,ierror) &
2809 BIND(C, name="ompi_file_iread_shared_f")
2810 implicit none
2811 INTEGER, INTENT(IN) :: fh
2812 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2813 INTEGER, INTENT(IN) :: count
2814 INTEGER, INTENT(IN) :: datatype
2815 INTEGER, INTENT(OUT) :: request
2816 INTEGER, INTENT(OUT) :: ierror
2817 end subroutine ompi_file_iread_shared_f
2818
2819 subroutine ompi_file_iwrite_f(fh,buf,count,datatype,request,ierror) &
2820 BIND(C, name="ompi_file_iwrite_f")
2821 implicit none
2822 INTEGER, INTENT(IN) :: fh
2823 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2824 INTEGER, INTENT(IN) :: count
2825 INTEGER, INTENT(IN) :: datatype
2826 INTEGER, INTENT(OUT) :: request
2827 INTEGER, INTENT(OUT) :: ierror
2828 end subroutine ompi_file_iwrite_f
2829
2830 subroutine ompi_file_iwrite_at_f(fh,offset,buf,count,datatype,request,ierror) &
2831 BIND(C, name="ompi_file_iwrite_at_f")
2832 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2833 implicit none
2834 INTEGER, INTENT(IN) :: fh
2835 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2836 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2837 INTEGER, INTENT(IN) :: count
2838 INTEGER, INTENT(IN) :: datatype
2839 INTEGER, INTENT(OUT) :: request
2840 INTEGER, INTENT(OUT) :: ierror
2841 end subroutine ompi_file_iwrite_at_f
2842
2843 subroutine ompi_file_iwrite_all_f(fh,buf,count,datatype,request,ierror) &
2844 BIND(C, name="ompi_file_iwrite_all_f")
2845 implicit none
2846 INTEGER, INTENT(IN) :: fh
2847 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2848 INTEGER, INTENT(IN) :: count
2849 INTEGER, INTENT(IN) :: datatype
2850 INTEGER, INTENT(OUT) :: request
2851 INTEGER, INTENT(OUT) :: ierror
2852 end subroutine ompi_file_iwrite_all_f
2853
2854 subroutine ompi_file_iwrite_at_all_f(fh,offset,buf,count,datatype,request,ierror) &
2855 BIND(C, name="ompi_file_iwrite_at_all_f")
2856 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2857 implicit none
2858 INTEGER, INTENT(IN) :: fh
2859 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2860 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2861 INTEGER, INTENT(IN) :: count
2862 INTEGER, INTENT(IN) :: datatype
2863 INTEGER, INTENT(OUT) :: request
2864 INTEGER, INTENT(OUT) :: ierror
2865 end subroutine ompi_file_iwrite_at_all_f
2866
2867 subroutine ompi_file_iwrite_shared_f(fh,buf,count,datatype,request,ierror) &
2868 BIND(C, name="ompi_file_iwrite_shared_f")
2869 implicit none
2870 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2871 INTEGER, INTENT(IN) :: fh
2872 INTEGER, INTENT(IN) :: count
2873 INTEGER, INTENT(IN) :: datatype
2874 INTEGER, INTENT(OUT) :: request
2875 INTEGER, INTENT(OUT) :: ierror
2876 end subroutine ompi_file_iwrite_shared_f
2877
2878 subroutine ompi_file_open_f(comm,filename,amode,info,fh,ierror,filename_len) &
2879 BIND(C, name="ompi_file_open_f")
2880 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2881 implicit none
2882 INTEGER, INTENT(IN) :: comm
2883 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: filename
2884 INTEGER, INTENT(IN) :: amode
2885 INTEGER, INTENT(IN) :: info
2886 INTEGER, INTENT(OUT) :: fh
2887 INTEGER, INTENT(OUT) :: ierror
2888 INTEGER, VALUE, INTENT(IN) :: filename_len
2889 end subroutine ompi_file_open_f
2890
2891 subroutine ompi_file_preallocate_f(fh,size,ierror) &
2892 BIND(C, name="ompi_file_preallocate_f")
2893 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2894 implicit none
2895 INTEGER, INTENT(IN) :: fh
2896 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: size
2897 INTEGER, INTENT(OUT) :: ierror
2898 end subroutine ompi_file_preallocate_f
2899
2900 subroutine ompi_file_read_f(fh,buf,count,datatype,status,ierror) &
2901 BIND(C, name="ompi_file_read_f")
2902 use :: mpi_f08_types, only : MPI_Status
2903 implicit none
2904 INTEGER, INTENT(IN) :: fh
2905 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2906 INTEGER, INTENT(IN) :: count
2907 INTEGER, INTENT(IN) :: datatype
2908 TYPE(MPI_Status), INTENT(OUT) :: status
2909 INTEGER, INTENT(OUT) :: ierror
2910 end subroutine ompi_file_read_f
2911
2912 subroutine ompi_file_read_all_f(fh,buf,count,datatype,status,ierror) &
2913 BIND(C, name="ompi_file_read_all_f")
2914 use :: mpi_f08_types, only : MPI_Status
2915 implicit none
2916 INTEGER, INTENT(IN) :: fh
2917 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2918 INTEGER, INTENT(IN) :: count
2919 INTEGER, INTENT(IN) :: datatype
2920 TYPE(MPI_Status), INTENT(OUT) :: status
2921 INTEGER, INTENT(OUT) :: ierror
2922 end subroutine ompi_file_read_all_f
2923
2924 subroutine ompi_file_read_all_begin_f(fh,buf,count,datatype,ierror) &
2925 BIND(C, name="ompi_file_read_all_begin_f")
2926 implicit none
2927 INTEGER, INTENT(IN) :: fh
2928 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2929 INTEGER, INTENT(IN) :: count
2930 INTEGER, INTENT(IN) :: datatype
2931 INTEGER, INTENT(OUT) :: ierror
2932 end subroutine ompi_file_read_all_begin_f
2933
2934 subroutine ompi_file_read_all_end_f(fh,buf,status,ierror) &
2935 BIND(C, name="ompi_file_read_all_end_f")
2936 use :: mpi_f08_types, only : MPI_Status
2937 implicit none
2938 INTEGER, INTENT(IN) :: fh
2939 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2940 TYPE(MPI_Status), INTENT(OUT) :: status
2941 INTEGER, INTENT(OUT) :: ierror
2942 end subroutine ompi_file_read_all_end_f
2943
2944 subroutine ompi_file_read_at_f(fh,offset,buf,count,datatype,status,ierror) &
2945 BIND(C, name="ompi_file_read_at_f")
2946 use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
2947 implicit none
2948 INTEGER, INTENT(IN) :: fh
2949 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2950 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2951 INTEGER, INTENT(IN) :: count
2952 INTEGER, INTENT(IN) :: datatype
2953 TYPE(MPI_Status), INTENT(OUT) :: status
2954 INTEGER, INTENT(OUT) :: ierror
2955 end subroutine ompi_file_read_at_f
2956
2957 subroutine ompi_file_read_at_all_f(fh,offset,buf,count,datatype,status,ierror) &
2958 BIND(C, name="ompi_file_read_at_all_f")
2959 use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
2960 implicit none
2961 INTEGER, INTENT(IN) :: fh
2962 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2963 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2964 INTEGER, INTENT(IN) :: count
2965 INTEGER, INTENT(IN) :: datatype
2966 TYPE(MPI_Status), INTENT(OUT) :: status
2967 INTEGER, INTENT(OUT) :: ierror
2968 end subroutine ompi_file_read_at_all_f
2969
2970 subroutine ompi_file_read_at_all_begin_f(fh,offset,buf,count,datatype,ierror) &
2971 BIND(C, name="ompi_file_read_at_all_begin_f")
2972 use :: mpi_f08_types, only : MPI_OFFSET_KIND
2973 implicit none
2974 INTEGER, INTENT(IN) :: fh
2975 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2976 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2977 INTEGER, INTENT(IN) :: count
2978 INTEGER, INTENT(IN) :: datatype
2979 INTEGER, INTENT(OUT) :: ierror
2980 end subroutine ompi_file_read_at_all_begin_f
2981
2982 subroutine ompi_file_read_at_all_end_f(fh,buf,status,ierror) &
2983 BIND(C, name="ompi_file_read_at_all_end_f")
2984 use :: mpi_f08_types, only : MPI_Status
2985 implicit none
2986 INTEGER, INTENT(IN) :: fh
2987 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2988 TYPE(MPI_Status), INTENT(OUT) :: status
2989 INTEGER, INTENT(OUT) :: ierror
2990 end subroutine ompi_file_read_at_all_end_f
2991
2992 subroutine ompi_file_read_ordered_f(fh,buf,count,datatype,status,ierror) &
2993 BIND(C, name="ompi_file_read_ordered_f")
2994 use :: mpi_f08_types, only : MPI_Status
2995 implicit none
2996 INTEGER, INTENT(IN) :: fh
2997 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2998 INTEGER, INTENT(IN) :: count
2999 INTEGER, INTENT(IN) :: datatype
3000 TYPE(MPI_Status), INTENT(OUT) :: status
3001 INTEGER, INTENT(OUT) :: ierror
3002 end subroutine ompi_file_read_ordered_f
3003
3004 subroutine ompi_file_read_ordered_begin_f(fh,buf,count,datatype,ierror) &
3005 BIND(C, name="ompi_file_read_ordered_begin_f")
3006 implicit none
3007 INTEGER, INTENT(IN) :: fh
3008 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3009 INTEGER, INTENT(IN) :: count
3010 INTEGER, INTENT(IN) :: datatype
3011 INTEGER, INTENT(OUT) :: ierror
3012 end subroutine ompi_file_read_ordered_begin_f
3013
3014 subroutine ompi_file_read_ordered_end_f(fh,buf,status,ierror) &
3015 BIND(C, name="ompi_file_read_ordered_end_f")
3016 use :: mpi_f08_types, only : MPI_Status
3017 implicit none
3018 INTEGER, INTENT(IN) :: fh
3019 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3020 TYPE(MPI_Status), INTENT(OUT) :: status
3021 INTEGER, INTENT(OUT) :: ierror
3022 end subroutine ompi_file_read_ordered_end_f
3023
3024 subroutine ompi_file_read_shared_f(fh,buf,count,datatype,status,ierror) &
3025 BIND(C, name="ompi_file_read_shared_f")
3026 use :: mpi_f08_types, only : MPI_Status
3027 implicit none
3028 INTEGER, INTENT(IN) :: fh
3029 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3030 INTEGER, INTENT(IN) :: count
3031 INTEGER, INTENT(IN) :: datatype
3032 TYPE(MPI_Status), INTENT(OUT) :: status
3033 INTEGER, INTENT(OUT) :: ierror
3034 end subroutine ompi_file_read_shared_f
3035
3036 subroutine ompi_file_seek_f(fh,offset,whence,ierror) &
3037 BIND(C, name="ompi_file_seek_f")
3038 use :: mpi_f08_types, only : MPI_OFFSET_KIND
3039 implicit none
3040 INTEGER, INTENT(IN) :: fh
3041 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3042 INTEGER, INTENT(IN) :: whence
3043 INTEGER, INTENT(OUT) :: ierror
3044 end subroutine ompi_file_seek_f
3045
3046 subroutine ompi_file_seek_shared_f(fh,offset,whence,ierror) &
3047 BIND(C, name="ompi_file_seek_shared_f")
3048 use :: mpi_f08_types, only : MPI_OFFSET_KIND
3049 implicit none
3050 INTEGER, INTENT(IN) :: fh
3051 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3052 INTEGER, INTENT(IN) :: whence
3053 INTEGER, INTENT(OUT) :: ierror
3054 end subroutine ompi_file_seek_shared_f
3055
3056 subroutine ompi_file_set_info_f(fh,info,ierror) &
3057 BIND(C, name="ompi_file_set_info_f")
3058 implicit none
3059 INTEGER, INTENT(IN) :: fh
3060 INTEGER, INTENT(IN) :: info
3061 INTEGER, INTENT(OUT) :: ierror
3062 end subroutine ompi_file_set_info_f
3063
3064 subroutine ompi_file_set_size_f(fh,size,ierror) &
3065 BIND(C, name="ompi_file_set_size_f")
3066 use :: mpi_f08_types, only : MPI_OFFSET_KIND
3067 implicit none
3068 INTEGER, INTENT(IN) :: fh
3069 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: size
3070 INTEGER, INTENT(OUT) :: ierror
3071 end subroutine ompi_file_set_size_f
3072
3073 subroutine ompi_file_set_view_f(fh,disp,etype,filetype,datarep,info,ierror,datarep_len) &
3074 BIND(C, name="ompi_file_set_view_f")
3075 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
3076 use :: mpi_f08_types, only : MPI_OFFSET_KIND
3077 implicit none
3078 INTEGER, INTENT(IN) :: fh
3079 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: disp
3080 INTEGER, INTENT(IN) :: etype
3081 INTEGER, INTENT(IN) :: filetype
3082 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
3083 INTEGER, INTENT(IN) :: info
3084 INTEGER, INTENT(OUT) :: ierror
3085 INTEGER, VALUE, INTENT(IN) :: datarep_len
3086 end subroutine ompi_file_set_view_f
3087
3088 subroutine ompi_file_sync_f(fh,ierror) &
3089 BIND(C, name="ompi_file_sync_f")
3090 implicit none
3091 INTEGER, INTENT(IN) :: fh
3092 INTEGER, INTENT(OUT) :: ierror
3093 end subroutine ompi_file_sync_f
3094
3095 subroutine ompi_file_write_f(fh,buf,count,datatype,status,ierror) &
3096 BIND(C, name="ompi_file_write_f")
3097 use :: mpi_f08_types, only : MPI_Status
3098 implicit none
3099 INTEGER, INTENT(IN) :: fh
3100 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3101 INTEGER, INTENT(IN) :: count
3102 INTEGER, INTENT(IN) :: datatype
3103 TYPE(MPI_Status), INTENT(OUT) :: status
3104 INTEGER, INTENT(OUT) :: ierror
3105 end subroutine ompi_file_write_f
3106
3107 subroutine ompi_file_write_all_f(fh,buf,count,datatype,status,ierror) &
3108 BIND(C, name="ompi_file_write_all_f")
3109 use :: mpi_f08_types, only : MPI_Status
3110 implicit none
3111 INTEGER, INTENT(IN) :: fh
3112 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3113 INTEGER, INTENT(IN) :: count
3114 INTEGER, INTENT(IN) :: datatype
3115 TYPE(MPI_Status), INTENT(OUT) :: status
3116 INTEGER, INTENT(OUT) :: ierror
3117 end subroutine ompi_file_write_all_f
3118
3119 subroutine ompi_file_write_all_begin_f(fh,buf,count,datatype,ierror) &
3120 BIND(C, name="ompi_file_write_all_begin_f")
3121 implicit none
3122 INTEGER, INTENT(IN) :: fh
3123 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3124 INTEGER, INTENT(IN) :: count
3125 INTEGER, INTENT(IN) :: datatype
3126 INTEGER, INTENT(OUT) :: ierror
3127 end subroutine ompi_file_write_all_begin_f
3128
3129 subroutine ompi_file_write_all_end_f(fh,buf,status,ierror) &
3130 BIND(C, name="ompi_file_write_all_end_f")
3131 use :: mpi_f08_types, only : MPI_Status
3132 implicit none
3133 INTEGER, INTENT(IN) :: fh
3134 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3135 TYPE(MPI_Status), INTENT(OUT) :: status
3136 INTEGER, INTENT(OUT) :: ierror
3137 end subroutine ompi_file_write_all_end_f
3138
3139 subroutine ompi_file_write_at_f(fh,offset,buf,count,datatype,status,ierror) &
3140 BIND(C, name="ompi_file_write_at_f")
3141 use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
3142 implicit none
3143 INTEGER, INTENT(IN) :: fh
3144 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3145 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3146 INTEGER, INTENT(IN) :: count
3147 INTEGER, INTENT(IN) :: datatype
3148 TYPE(MPI_Status), INTENT(OUT) :: status
3149 INTEGER, INTENT(OUT) :: ierror
3150 end subroutine ompi_file_write_at_f
3151
3152 subroutine ompi_file_write_at_all_f(fh,offset,buf,count,datatype,status,ierror) &
3153 BIND(C, name="ompi_file_write_at_all_f")
3154 use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
3155 implicit none
3156 INTEGER, INTENT(IN) :: fh
3157 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3158 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3159 INTEGER, INTENT(IN) :: count
3160 INTEGER, INTENT(IN) :: datatype
3161 TYPE(MPI_Status), INTENT(OUT) :: status
3162 INTEGER, INTENT(OUT) :: ierror
3163 end subroutine ompi_file_write_at_all_f
3164
3165 subroutine ompi_file_write_at_all_begin_f(fh,offset,buf,count,datatype,ierror) &
3166 BIND(C, name="ompi_file_write_at_all_begin_f")
3167 use :: mpi_f08_types, only : MPI_OFFSET_KIND
3168 implicit none
3169 INTEGER, INTENT(IN) :: fh
3170 INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3171 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3172 INTEGER, INTENT(IN) :: count
3173 INTEGER, INTENT(IN) :: datatype
3174 INTEGER, INTENT(OUT) :: ierror
3175 end subroutine ompi_file_write_at_all_begin_f
3176
3177 subroutine ompi_file_write_at_all_end_f(fh,buf,status,ierror) &
3178 BIND(C, name="ompi_file_write_at_all_end_f")
3179 use :: mpi_f08_types, only : MPI_Status
3180 implicit none
3181 INTEGER, INTENT(IN) :: fh
3182 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3183 TYPE(MPI_Status), INTENT(OUT) :: status
3184 INTEGER, INTENT(OUT) :: ierror
3185 end subroutine ompi_file_write_at_all_end_f
3186
3187 subroutine ompi_file_write_ordered_f(fh,buf,count,datatype,status,ierror) &
3188 BIND(C, name="ompi_file_write_ordered_f")
3189 use :: mpi_f08_types, only : MPI_Status
3190 implicit none
3191 INTEGER, INTENT(IN) :: fh
3192 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3193 INTEGER, INTENT(IN) :: count
3194 INTEGER, INTENT(IN) :: datatype
3195 TYPE(MPI_Status), INTENT(OUT) :: status
3196 INTEGER, INTENT(OUT) :: ierror
3197 end subroutine ompi_file_write_ordered_f
3198
3199 subroutine ompi_file_write_ordered_begin_f(fh,buf,count,datatype,ierror) &
3200 BIND(C, name="ompi_file_write_ordered_begin_f")
3201 implicit none
3202 INTEGER, INTENT(IN) :: fh
3203 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3204 INTEGER, INTENT(IN) :: count
3205 INTEGER, INTENT(IN) :: datatype
3206 INTEGER, INTENT(OUT) :: ierror
3207 end subroutine ompi_file_write_ordered_begin_f
3208
3209 subroutine ompi_file_write_ordered_end_f(fh,buf,status,ierror) &
3210 BIND(C, name="ompi_file_write_ordered_end_f")
3211 use :: mpi_f08_types, only : MPI_Status
3212 implicit none
3213 INTEGER, INTENT(IN) :: fh
3214 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3215 TYPE(MPI_Status), INTENT(OUT) :: status
3216 INTEGER, INTENT(OUT) :: ierror
3217 end subroutine ompi_file_write_ordered_end_f
3218
3219 subroutine ompi_file_write_shared_f(fh,buf,count,datatype,status,ierror) &
3220 BIND(C, name="ompi_file_write_shared_f")
3221 use :: mpi_f08_types, only : MPI_Status
3222 implicit none
3223 INTEGER, INTENT(IN) :: fh
3224 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3225 INTEGER, INTENT(IN) :: count
3226 INTEGER, INTENT(IN) :: datatype
3227 TYPE(MPI_Status), INTENT(OUT) :: status
3228 INTEGER, INTENT(OUT) :: ierror
3229 end subroutine ompi_file_write_shared_f
3230
3231 subroutine ompi_register_datarep_f(datarep,read_conversion_fn, &
3232 write_conversion_fn,dtype_file_extent_fn, &
3233 extra_state,ierror,datarep_len) &
3234 BIND(C, name="ompi_register_datarep_f")
3235 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
3236 use :: mpi_f08_types, only : MPI_ADDRESS_KIND
3237 use, intrinsic :: iso_c_binding, only: c_funptr
3238 implicit none
3239 type(c_funptr), value :: read_conversion_fn
3240 type(c_funptr), value :: write_conversion_fn
3241 type(c_funptr), value :: dtype_file_extent_fn
3242 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
3243 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
3244 INTEGER, INTENT(OUT) :: ierror
3245 INTEGER, VALUE, INTENT(IN) :: datarep_len
3246 end subroutine ompi_register_datarep_f
3247
3248 !
3249 ! MPI_Sizeof is generic for numeric types. This ignore TKR interface
3250 ! is replaced by the specific generics.
3251 !
3252 !subroutine ompi_sizeof(x,size,ierror) &
3253 ! BIND(C, name="ompi_sizeof_f")
3254 ! implicit none
3255 ! OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: x
3256 ! INTEGER, INTENT(OUT) :: size
3257 ! INTEGER, INTENT(OUT) :: ierror
3258 !end subroutine ompi_sizeof
3259
3260 subroutine ompi_type_create_f90_complex_f(p,r,newtype,ierror) &
3261 BIND(C, name="ompi_type_create_f90_complex_f")
3262 implicit none
3263 INTEGER, INTENT(IN) :: p, r
3264 INTEGER, INTENT(OUT) :: newtype
3265 INTEGER, INTENT(OUT) :: ierror
3266 end subroutine ompi_type_create_f90_complex_f
3267
3268 subroutine ompi_type_create_f90_integer_f(r,newtype,ierror) &
3269 BIND(C, name="ompi_type_create_f90_integer_f")
3270 implicit none
3271 INTEGER, INTENT(IN) :: r
3272 INTEGER, INTENT(OUT) :: newtype
3273 INTEGER, INTENT(OUT) :: ierror
3274 end subroutine ompi_type_create_f90_integer_f
3275
3276 subroutine ompi_type_create_f90_real_f(p,r,newtype,ierror) &
3277 BIND(C, name="ompi_type_create_f90_real_f")
3278 implicit none
3279 INTEGER, INTENT(IN) :: p, r
3280 INTEGER, INTENT(OUT) :: newtype
3281 INTEGER, INTENT(OUT) :: ierror
3282 end subroutine ompi_type_create_f90_real_f
3283
3284 subroutine ompi_type_match_size_f(typeclass,size,datatype,ierror) &
3285 BIND(C, name="ompi_type_match_size_f")
3286 implicit none
3287 INTEGER, INTENT(IN) :: typeclass, size
3288 INTEGER, INTENT(OUT) :: datatype
3289 INTEGER, INTENT(OUT) :: ierror
3290 end subroutine ompi_type_match_size_f
3291
3292 subroutine ompi_pcontrol_f(level) &
3293 BIND(C, name="ompi_pcontrol_f")
3294 implicit none
3295 INTEGER, INTENT(IN) :: level
3296 end subroutine ompi_pcontrol_f
3297
3298
3299 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3300 ! New routines to MPI-3
3301 !
3302
3303 subroutine ompi_comm_split_type_f(comm,split_type,key,info,newcomm,ierror) &
3304 BIND(C, name="ompi_comm_split_type_f")
3305 implicit none
3306 INTEGER, INTENT(IN) :: comm
3307 INTEGER, INTENT(IN) :: split_type
3308 INTEGER, INTENT(IN) :: key
3309 INTEGER, INTENT(IN) :: info
3310 INTEGER, INTENT(OUT) :: newcomm
3311 INTEGER, INTENT(OUT) :: ierror
3312 end subroutine ompi_comm_split_type_f
3313
3314 subroutine ompi_f_sync_reg_f(buf) &
3315 BIND(C, name="ompi_f_sync_reg_f")
3316 implicit none
3317 OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
3318 end subroutine ompi_f_sync_reg_f
3319
3320 subroutine ompi_get_library_version_f(name,resultlen,ierror,name_len) &
3321 BIND(C, name="ompi_get_library_version_f")
3322 use, intrinsic :: ISO_C_BINDING, only : C_CHAR
3323 implicit none
3324 CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: name
3325 INTEGER, INTENT(OUT) :: resultlen
3326 INTEGER, INTENT(OUT) :: ierror
3327 INTEGER, VALUE, INTENT(IN) :: name_len
3328 end subroutine ompi_get_library_version_f
3329
3330 subroutine ompi_mprobe_f(source,tag,comm,message,status,ierror) &
3331 BIND(C, name="ompi_mprobe_f")
3332 use :: mpi_f08_types, only : MPI_Status
3333 implicit none
3334 INTEGER, INTENT(IN) :: source, tag
3335 INTEGER, INTENT(IN) :: comm
3336 INTEGER, INTENT(OUT) :: message
3337 TYPE(MPI_Status), INTENT(OUT) :: status
3338 INTEGER, INTENT(OUT) :: ierror
3339 end subroutine ompi_mprobe_f
3340
3341 subroutine ompi_imrecv_f(buf,count,datatype,message,request,ierror) &
3342 BIND(C, name="ompi_imrecv_f")
3343 implicit none
3344 OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf
3345 INTEGER, INTENT(IN) :: count
3346 INTEGER, INTENT(IN) :: datatype
3347 INTEGER, INTENT(INOUT) :: message
3348 INTEGER, INTENT(OUT) :: request
3349 INTEGER, INTENT(OUT) :: ierror
3350 end subroutine ompi_imrecv_f
3351
3352 subroutine ompi_mrecv_f(buf,count,datatype,message,status,ierror) &
3353 BIND(C, name="ompi_mrecv_f")
3354 use :: mpi_f08_types, only : MPI_Status
3355 implicit none
3356 OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
3357 INTEGER, INTENT(IN) :: count
3358 INTEGER, INTENT(IN) :: datatype
3359 INTEGER, INTENT(INOUT) :: message
3360 TYPE(MPI_Status) :: status
3361 INTEGER, INTENT(OUT) :: ierror
3362 end subroutine ompi_mrecv_f
3363
3364 subroutine ompi_neighbor_allgather_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3365 comm,ierror) &
3366 BIND(C, name="ompi_neighbor_allgather_f")
3367 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3368 implicit none
3369 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3370 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3371 INTEGER, INTENT(IN) :: sendcount, recvcount
3372 INTEGER, INTENT(IN) :: sendtype, recvtype
3373 INTEGER, INTENT(IN) :: comm
3374 INTEGER, INTENT(OUT) :: ierror
3375 end subroutine ompi_neighbor_allgather_f
3376
3377 subroutine ompi_ineighbor_allgather_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3378 comm,request,ierror) &
3379 BIND(C, name="ompi_ineighbor_allgather_f")
3380 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3381 implicit none
3382 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3383 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3384 INTEGER, INTENT(IN) :: sendcount, recvcount
3385 INTEGER, INTENT(IN) :: sendtype, recvtype
3386 INTEGER, INTENT(IN) :: comm
3387 INTEGER, INTENT(OUT) :: request
3388 INTEGER, INTENT(OUT) :: ierror
3389 end subroutine ompi_ineighbor_allgather_f
3390
3391 subroutine ompi_neighbor_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs, &
3392 recvtype,comm,ierror) &
3393 BIND(C, name="ompi_neighbor_allgatherv_f")
3394 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3395 implicit none
3396 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3397 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3398 INTEGER, INTENT(IN) :: sendcount
3399 INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
3400 INTEGER, INTENT(IN) :: sendtype, recvtype
3401 INTEGER, INTENT(IN) :: comm
3402 INTEGER, INTENT(OUT) :: ierror
3403 end subroutine ompi_neighbor_allgatherv_f
3404
3405 subroutine ompi_ineighbor_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs, &
3406 recvtype,comm,request,ierror) &
3407 BIND(C, name="ompi_ineighbor_allgatherv_f")
3408 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3409 implicit none
3410 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3411 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3412 INTEGER, INTENT(IN) :: sendcount
3413 INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
3414 INTEGER, INTENT(IN) :: sendtype, recvtype
3415 INTEGER, INTENT(IN) :: comm
3416 INTEGER, INTENT(OUT) :: request
3417 INTEGER, INTENT(OUT) :: ierror
3418 end subroutine ompi_ineighbor_allgatherv_f
3419
3420 subroutine ompi_neighbor_alltoall_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3421 comm,ierror) &
3422 BIND(C, name="ompi_neighbor_alltoall_f")
3423 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3424 implicit none
3425 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3426 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3427 INTEGER, INTENT(IN) :: sendcount, recvcount
3428 INTEGER, INTENT(IN) :: sendtype, recvtype
3429 INTEGER, INTENT(IN) :: comm
3430 INTEGER, INTENT(OUT) :: ierror
3431 end subroutine ompi_neighbor_alltoall_f
3432
3433 subroutine ompi_ineighbor_alltoall_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3434 comm,request,ierror) &
3435 BIND(C, name="ompi_ineighbor_alltoall_f")
3436 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3437 implicit none
3438 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3439 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3440 INTEGER, INTENT(IN) :: sendcount, recvcount
3441 INTEGER, INTENT(IN) :: sendtype, recvtype
3442 INTEGER, INTENT(IN) :: comm
3443 INTEGER, INTENT(OUT) :: request
3444 INTEGER, INTENT(OUT) :: ierror
3445 end subroutine ompi_ineighbor_alltoall_f
3446
3447 subroutine ompi_neighbor_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype,recvbuf,recvcounts, &
3448 rdispls,recvtype,comm,ierror) &
3449 BIND(C, name="ompi_neighbor_alltoallv_f")
3450 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3451 implicit none
3452 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3453 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3454 INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
3455 INTEGER, INTENT(IN) :: sendtype, recvtype
3456 INTEGER, INTENT(IN) :: comm
3457 INTEGER, INTENT(OUT) :: ierror
3458 end subroutine ompi_neighbor_alltoallv_f
3459
3460 subroutine ompi_ineighbor_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype,recvbuf,recvcounts, &
3461 rdispls,recvtype,comm,request,ierror) &
3462 BIND(C, name="ompi_ineighbor_alltoallv_f")
3463 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3464 implicit none
3465 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3466 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3467 INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
3468 INTEGER, INTENT(IN) :: sendtype, recvtype
3469 INTEGER, INTENT(IN) :: comm
3470 INTEGER, INTENT(OUT) :: request
3471 INTEGER, INTENT(OUT) :: ierror
3472 end subroutine ompi_ineighbor_alltoallv_f
3473
3474 subroutine ompi_neighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes,recvbuf,recvcounts, &
3475 rdispls,recvtypes,comm,ierror) &
3476 BIND(C, name="ompi_neighbor_alltoallw_f")
3477 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_ADDRESS_KIND
3478 implicit none
3479 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3480 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3481 INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*)
3482 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*)
3483 INTEGER, INTENT(IN) :: sendtypes, recvtypes
3484 INTEGER, INTENT(IN) :: comm
3485 INTEGER, INTENT(OUT) :: ierror
3486 end subroutine ompi_neighbor_alltoallw_f
3487
3488 subroutine ompi_ineighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes,recvbuf,recvcounts, &
3489 rdispls,recvtypes,comm,request,ierror) &
3490 BIND(C, name="ompi_ineighbor_alltoallw_f")
3491 use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request, MPI_ADDRESS_KIND
3492 implicit none
3493 OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3494 OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3495 INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*)
3496 INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*)
3497 INTEGER, INTENT(IN) :: sendtypes, recvtypes
3498 INTEGER, INTENT(IN) :: comm
3499 INTEGER, INTENT(OUT) :: request
3500 INTEGER, INTENT(OUT) :: ierror
3501 end subroutine ompi_ineighbor_alltoallw_f
3502
3503 end interface