31 use,
intrinsic :: iso_fortran_env
43 type(MPI_Comm),
parameter,
public :: MPI_COMM_UNDEFINED =
mpi_comm(-1)
46 integer,
parameter,
private :: ROOT_PROCESS = 0
51 type(MPI_Comm) :: comm = mpi_comm_undefined
61 procedure :: dmpi_grp_scatterv, zmpi_grp_scatterv, impi_grp_scatterv, lmpi_grp_scatterv
62 generic :: scatterv => dmpi_grp_scatterv, zmpi_grp_scatterv, impi_grp_scatterv, lmpi_grp_scatterv
63 procedure :: dmpi_grp_scatterv_i8, zmpi_grp_scatterv_i8, impi_grp_scatterv_i8, lmpi_grp_scatterv_i8
64 generic :: scatterv => dmpi_grp_scatterv_i8, zmpi_grp_scatterv_i8, impi_grp_scatterv_i8, lmpi_grp_scatterv_i8
65 procedure :: dmpi_grp_gatherv, zmpi_grp_gatherv, impi_grp_gatherv, lmpi_grp_gatherv
66 generic :: gatherv => dmpi_grp_gatherv, zmpi_grp_gatherv, impi_grp_gatherv, lmpi_grp_gatherv
67 procedure :: dmpi_grp_gather_0, zmpi_grp_gather_0, impi_grp_gather_0, lmpi_grp_gather_0
68 generic :: gather => dmpi_grp_gather_0, zmpi_grp_gather_0, impi_grp_gather_0, lmpi_grp_gather_0
69 procedure :: dmpi_grp_gatherv_i8, zmpi_grp_gatherv_i8, impi_grp_gatherv_i8, lmpi_grp_gatherv_i8
70 generic :: gatherv => dmpi_grp_gatherv_i8, zmpi_grp_gatherv_i8, impi_grp_gatherv_i8, lmpi_grp_gatherv_i8
71 procedure :: dmpi_grp_alltoallv, zmpi_grp_alltoallv, impi_grp_alltoallv, lmpi_grp_alltoallv
72 generic :: alltoallv => dmpi_grp_alltoallv, zmpi_grp_alltoallv, impi_grp_alltoallv, lmpi_grp_alltoallv
73 procedure :: dmpi_grp_alltoallv_2, zmpi_grp_alltoallv_2, impi_grp_alltoallv_2, lmpi_grp_alltoallv_2
74 generic :: alltoallv => dmpi_grp_alltoallv_2, zmpi_grp_alltoallv_2, impi_grp_alltoallv_2, lmpi_grp_alltoallv_2
75 procedure :: dmpi_grp_alltoallv_3, zmpi_grp_alltoallv_3, impi_grp_alltoallv_3, lmpi_grp_alltoallv_3
76 generic :: alltoallv => dmpi_grp_alltoallv_3, zmpi_grp_alltoallv_3, impi_grp_alltoallv_3, lmpi_grp_alltoallv_3
77 procedure :: dmpi_grp_alltoallv_i8, zmpi_grp_alltoallv_i8, impi_grp_alltoallv_i8, lmpi_grp_alltoallv_i8
78 generic :: alltoallv => dmpi_grp_alltoallv_i8, zmpi_grp_alltoallv_i8, impi_grp_alltoallv_i8, lmpi_grp_alltoallv_i8
79 procedure :: dmpi_grp_alltoall, zmpi_grp_alltoall, impi_grp_alltoall, lmpi_grp_alltoall
80 generic :: alltoall => dmpi_grp_alltoall, zmpi_grp_alltoall, impi_grp_alltoall, lmpi_grp_alltoall
81 procedure :: dmpi_grp_allgatherv, zmpi_grp_allgatherv, impi_grp_allgatherv, lmpi_grp_allgatherv
82 generic :: allgatherv => dmpi_grp_allgatherv, zmpi_grp_allgatherv, impi_grp_allgatherv, lmpi_grp_allgatherv
83 procedure :: dmpi_grp_allgatherv_2, zmpi_grp_allgatherv_2, impi_grp_allgatherv_2, lmpi_grp_allgatherv_2
84 generic :: allgatherv => dmpi_grp_allgatherv_2, zmpi_grp_allgatherv_2, impi_grp_allgatherv_2, lmpi_grp_allgatherv_2
85 procedure :: dmpi_grp_allgatherv_3, zmpi_grp_allgatherv_3, impi_grp_allgatherv_3, lmpi_grp_allgatherv_3
86 generic :: allgatherv => dmpi_grp_allgatherv_3, zmpi_grp_allgatherv_3, impi_grp_allgatherv_3, lmpi_grp_allgatherv_3
87 procedure :: dmpi_grp_allgatherv_3_1, zmpi_grp_allgatherv_3_1, impi_grp_allgatherv_3_1, lmpi_grp_allgatherv_3_1
88 generic :: allgatherv => dmpi_grp_allgatherv_3_1, zmpi_grp_allgatherv_3_1, impi_grp_allgatherv_3_1, lmpi_grp_allgatherv_3_1
89 procedure :: dmpi_grp_allgatherv_i8, zmpi_grp_allgatherv_i8, impi_grp_allgatherv_i8, lmpi_grp_allgatherv_i8
90 generic :: allgatherv => dmpi_grp_allgatherv_i8, zmpi_grp_allgatherv_i8, impi_grp_allgatherv_i8, lmpi_grp_allgatherv_i8
91 procedure :: dmpi_grp_bcast, zmpi_grp_bcast, impi_grp_bcast, lmpi_grp_bcast
92 generic :: bcast => dmpi_grp_bcast, zmpi_grp_bcast, impi_grp_bcast, lmpi_grp_bcast
93 procedure :: dmpi_grp_bcast_0, zmpi_grp_bcast_0, impi_grp_bcast_0, lmpi_grp_bcast_0
94 generic :: bcast => dmpi_grp_bcast_0, zmpi_grp_bcast_0, impi_grp_bcast_0, lmpi_grp_bcast_0
95 procedure :: dmpi_grp_bcast_2, zmpi_grp_bcast_2, impi_grp_bcast_2, lmpi_grp_bcast_2
96 generic :: bcast => dmpi_grp_bcast_2, zmpi_grp_bcast_2, impi_grp_bcast_2, lmpi_grp_bcast_2
97 procedure :: dmpi_grp_bcast_3, zmpi_grp_bcast_3, impi_grp_bcast_3, lmpi_grp_bcast_3
98 generic :: bcast => dmpi_grp_bcast_3, zmpi_grp_bcast_3, impi_grp_bcast_3, lmpi_grp_bcast_3
99 procedure :: chmpi_grp_bcast_0, lompi_grp_bcast_0
100 generic :: bcast => chmpi_grp_bcast_0, lompi_grp_bcast_0
101 procedure :: dmpi_grp_bcast_0_l, zmpi_grp_bcast_0_l, impi_grp_bcast_0_l, lmpi_grp_bcast_0_l
102 generic :: bcast => dmpi_grp_bcast_0_l, zmpi_grp_bcast_0_l, impi_grp_bcast_0_l, lmpi_grp_bcast_0_l
103 procedure :: dmpi_grp_allreduce, zmpi_grp_allreduce, impi_grp_allreduce, lmpi_grp_allreduce
104 generic :: allreduce => dmpi_grp_allreduce, zmpi_grp_allreduce, impi_grp_allreduce, lmpi_grp_allreduce
105 procedure :: dmpi_grp_allreduce_2, zmpi_grp_allreduce_2, impi_grp_allreduce_2, lmpi_grp_allreduce_2
106 generic :: allreduce => dmpi_grp_allreduce_2, zmpi_grp_allreduce_2, impi_grp_allreduce_2, lmpi_grp_allreduce_2
107 procedure :: dmpi_grp_allreduce_3, zmpi_grp_allreduce_3, impi_grp_allreduce_3, lmpi_grp_allreduce_3
108 generic :: allreduce => dmpi_grp_allreduce_3, zmpi_grp_allreduce_3, impi_grp_allreduce_3, lmpi_grp_allreduce_3
109 procedure :: dmpi_grp_allreduce_0, zmpi_grp_allreduce_0, impi_grp_allreduce_0, lmpi_grp_allreduce_0
110 generic :: allreduce => dmpi_grp_allreduce_0, zmpi_grp_allreduce_0, impi_grp_allreduce_0, lmpi_grp_allreduce_0
111 procedure :: lompi_grp_allreduce_0
112 generic :: allreduce => lompi_grp_allreduce_0
113 procedure :: dmpi_grp_allreduce_inplace_0, zmpi_grp_allreduce_inplace_0
114 procedure :: impi_grp_allreduce_inplace_0, lmpi_grp_allreduce_inplace_0
115 procedure :: lompi_grp_allreduce_inplace_0
116 generic :: allreduce_inplace => dmpi_grp_allreduce_inplace_0, zmpi_grp_allreduce_inplace_0
117 generic :: allreduce_inplace => impi_grp_allreduce_inplace_0, lmpi_grp_allreduce_inplace_0
118 generic :: allreduce_inplace => lompi_grp_allreduce_inplace_0
119 procedure :: dmpi_grp_allreduce_inplace_1, zmpi_grp_allreduce_inplace_1, &
120 impi_grp_allreduce_inplace_1, lmpi_grp_allreduce_inplace_1
121 generic :: allreduce_inplace => dmpi_grp_allreduce_inplace_1, zmpi_grp_allreduce_inplace_1, &
122 impi_grp_allreduce_inplace_1, lmpi_grp_allreduce_inplace_1
123 procedure :: dmpi_grp_allreduce_inplace_2, zmpi_grp_allreduce_inplace_2, &
124 impi_grp_allreduce_inplace_2, lmpi_grp_allreduce_inplace_2
125 generic :: allreduce_inplace => dmpi_grp_allreduce_inplace_2, zmpi_grp_allreduce_inplace_2, &
126 impi_grp_allreduce_inplace_2, lmpi_grp_allreduce_inplace_2
127 procedure :: dmpi_grp_allgather, zmpi_grp_allgather, impi_grp_allgather, lmpi_grp_allgather
128 generic :: allgather => dmpi_grp_allgather, zmpi_grp_allgather, impi_grp_allgather, lmpi_grp_allgather
129 procedure :: dmpi_grp_allgather_0, zmpi_grp_allgather_0, impi_grp_allgather_0, lmpi_grp_allgather_0
130 generic :: allgather => dmpi_grp_allgather_0, zmpi_grp_allgather_0, impi_grp_allgather_0, lmpi_grp_allgather_0
131 procedure :: dmpi_grp_recv, zmpi_grp_recv, impi_grp_recv, lmpi_grp_recv
132 generic :: recv => dmpi_grp_recv, zmpi_grp_recv, impi_grp_recv, lmpi_grp_recv
133 procedure :: dmpi_grp_recv_0, zmpi_grp_recv_0, impi_grp_recv_0, lmpi_grp_recv_0
134 generic :: recv => dmpi_grp_recv_0, zmpi_grp_recv_0, impi_grp_recv_0, lmpi_grp_recv_0
135 procedure :: dmpi_grp_recv_2, zmpi_grp_recv_2, impi_grp_recv_2, lmpi_grp_recv_2
136 generic :: recv => dmpi_grp_recv_2, zmpi_grp_recv_2, impi_grp_recv_2, lmpi_grp_recv_2
137 procedure :: dmpi_grp_recv_3, zmpi_grp_recv_3, impi_grp_recv_3, lmpi_grp_recv_3
138 generic :: recv => dmpi_grp_recv_3, zmpi_grp_recv_3, impi_grp_recv_3, lmpi_grp_recv_3
145 procedure :: dmpi_grp_send_2, zmpi_grp_send_2, impi_grp_send_2, lmpi_grp_send_2
146 generic :: send => dmpi_grp_send_2, zmpi_grp_send_2, impi_grp_send_2, lmpi_grp_send_2
189#if defined(HAVE_MPI) && defined(HAVE_OPENMP)
192 integer,
parameter :: octopus_mpi_thread_level = mpi_thread_funneled
194#elif defined(HAVE_MPI)
196 integer,
parameter :: octopus_mpi_thread_level = mpi_thread_single
212#if defined(HAVE_OPENMP)
215 call mpi_init_thread(octopus_mpi_thread_level, provided)
220 comm = mpi_comm_world
222 comm = mpi_comm_undefined
233#if defined(HAVE_MPI) && defined(HAVE_OPENMP)
234 integer :: provided, ierr, rank
236 call mpi_query_thread(provided)
237 if (provided < octopus_mpi_thread_level)
then
238 call mpi_comm_rank(comm, rank)
239 if (rank == 0)
write(*,
'(a)')
'MPI library threading support is less than required by Octopus'
240 call mpi_abort(comm, 1, ierr)
253 integer :: iam, nprocs
254 integer :: blacs_default_system_context
257 call blacs_pinfo(iam, nprocs)
286 if (
mpi_world%comm /= mpi_comm_undefined)
call mpi_finalize()
305 if (grp%comm == mpi_comm_undefined)
then
310 call mpi_comm_rank(grp%comm, grp%rank)
312 call mpi_comm_size(grp%comm, grp%size)
337#if defined(HAVE_MPI) && defined(HAVE_OPENMP)
338 logical function mpi_call_is_thread_funneled_safe()
339 mpi_call_is_thread_funneled_safe = &
341 end function mpi_call_is_thread_funneled_safe
346 type(
mpi_grp_t),
intent(out) :: mpi_grp_out
347 type(
mpi_grp_t),
intent(in) :: mpi_grp_in
349 mpi_grp_out%comm = mpi_grp_in%comm
350 mpi_grp_out%size = mpi_grp_in%size
351 mpi_grp_out%rank = mpi_grp_in%rank
356 type(
mpi_grp_t),
intent(out) :: mpi_grp_out
357 type(
mpi_grp_t),
intent(in) :: mpi_grp_in
360 call mpi_comm_dup(mpi_grp_in%comm, mpi_grp_out%comm)
361 call mpi_comm_rank(mpi_grp_out%comm, mpi_grp_out%rank)
362 call mpi_comm_size(mpi_grp_out%comm, mpi_grp_out%size)
379 if (mpi_grp%comm == mpi_comm_undefined)
return
384 call mpi_barrier(mpi_grp%comm)
392 character(len=*),
intent(inout) :: buf
393 integer,
intent(in) :: cnt
395 integer,
intent(in) :: root
401 if (mpi_grp%comm /= mpi_comm_undefined)
then
402 call mpi_bcast(buf, cnt, sendtype, root, mpi_grp%comm)
411 logical,
intent(inout) :: buf
412 integer,
intent(in) :: cnt
414 integer,
intent(in) :: root
420 if (mpi_grp%comm /= mpi_comm_undefined)
then
421 call mpi_bcast(buf, cnt, sendtype, root, mpi_grp%comm)
431 logical,
target,
intent(in) :: sendbuf
432 logical,
target,
intent(out) :: recvbuf
433 integer,
intent(in) :: count
435 logical,
pointer :: send(:), recv(:)
437 call c_f_pointer(c_loc(sendbuf), send, [count])
438 call c_f_pointer(c_loc(recvbuf), recv, [count])
447 logical,
intent(in) :: sendbuf
448 logical,
intent(out) :: recvbuf
449 integer,
intent(in) :: count
451 type(
mpi_op),
intent(in) :: op
457 if (mpi_grp%comm /= mpi_comm_undefined)
then
458 call mpi_allreduce(sendbuf, recvbuf, count, datatype, op, &
472 logical,
intent(inout) :: recvbuf
473 integer,
intent(in) :: count
475 type(
mpi_op),
intent(in) :: op
481 if (mpi_grp%comm /= mpi_comm_undefined)
then
482 call mpi_allreduce(
mpi_in_place, recvbuf, count, datatype, op, &
490 subroutine lompi_grp_recv_0(mpi_grp, recvbuf, recvcount, recvtype, source, tag)
492 logical,
intent(out) :: recvbuf
493 integer,
intent(in) :: recvcount
495 integer,
intent(in) :: source
496 integer,
optional,
intent(in) :: tag
501 if (
present(tag)) tag_ = tag
502 if (mpi_grp%comm == mpi_comm_undefined)
return
507 call mpi_recv(recvbuf, recvcount, recvtype, source, tag_, mpi_grp%comm, mpi_status_ignore)
513 subroutine lompi_grp_send_0(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
515 logical,
intent(out) :: sendbuf
516 integer,
intent(in) :: sendcount
518 integer,
intent(in) :: dest
519 integer,
optional,
intent(in) :: tag
524 if (
present(tag)) tag_ = tag
525 if (mpi_grp%comm == mpi_comm_undefined)
return
530 call mpi_send(sendbuf, sendcount, sendtype, dest, tag_, mpi_grp%comm)
540 if (mpi_grp%comm == mpi_comm_undefined)
return
545 call mpi_wait(request, mpi_status_ignore)
553 integer,
intent(in) :: count
556 if (mpi_grp%comm == mpi_comm_undefined)
return
561 call mpi_waitall(count, requests, mpi_statuses_ignore)
570 if (mpi_grp%comm /= mpi_comm_undefined)
then
575 call mpi_abort(mpi_grp%comm, 999)
595#include "mpi_inc.F90"
598#include "complex.F90"
599#include "mpi_inc.F90"
602#include "integer.F90"
603#include "mpi_inc.F90"
606#include "integer8.F90"
607#include "mpi_inc.F90"
Interface for function returned by mpi_call_is_thread_safe_factory
This module contains interfaces for BLACS routines Interfaces are from http:
System information (time, memory, sysname)
integer, parameter, public c_mpi_allreduce
integer, parameter, public c_mpi_recv
subroutine, public mpi_debug_in(comm, index)
integer, parameter, public c_mpi_send
integer, parameter, public c_mpi_waitall
integer, parameter, public c_mpi_bcast
integer, parameter, public c_mpi_barrier
integer, parameter, public c_mpi_wait
subroutine, public mpi_debug_out(comm, index)
subroutine mpi_grp_abort(mpi_grp)
subroutine impi_grp_irecv(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine zmpi_grp_isend_0(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine mpi_grp_duplicate(mpi_grp_out, mpi_grp_in)
subroutine impi_grp_irecv_0(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine lmpi_grp_send(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine lmpi_grp_isend(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine lompi_grp_copy_0(sendbuf, recvbuf, count)
subroutine zmpi_grp_irecv_0_int64(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine blacs_init()
Initialize BLACS to enable use of SCALAPACK.
subroutine impi_grp_send_3(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
real(real64) function, public mpi_get_wtime()
. Returns an elapsed time on the calling processor.
subroutine dmpi_grp_irecv_3(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine zmpi_grp_isend(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine dmpi_grp_isend_3(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine zmpi_grp_irecv_3(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine lompi_grp_bcast_0(mpi_grp, buf, cnt, sendtype, root)
logical function mpi_grp_is_root(grp)
Is the current MPI process of grpcomm, root.
subroutine impi_grp_irecv_2(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine zmpi_grp_irecv(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
procedure(omp_region_func), pointer mpi_call_is_thread_safe
Single-threaded without MPI.
subroutine mpi_grp_copy(mpi_grp_out, mpi_grp_in)
MPI_THREAD_FUNNELED allows for calls to MPI from an OMP region if the thread is the team master.
subroutine zmpi_grp_isend_3(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine impi_grp_isend_2(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine impi_grp_isend(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine impi_grp_send_0(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine lompi_grp_allreduce_inplace_0(mpi_grp, recvbuf, count, datatype, op)
subroutine impi_grp_isend_0_int64(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine zmpi_grp_irecv_2(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine dmpi_grp_isend_0(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine zmpi_grp_send_0(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine dmpi_grp_irecv(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine lmpi_grp_irecv_0_int64(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine impi_grp_irecv_0_int64(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine lompi_grp_recv_0(mpi_grp, recvbuf, recvcount, recvtype, source, tag)
subroutine check_threading_support(comm)
Check that the threading support of the MPI library is consistent with the requested support from Oct...
subroutine dmpi_grp_send_0(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine mpi_grp_wait(mpi_grp, request)
subroutine lmpi_grp_irecv(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
type(mpi_grp_t), public mpi_world
subroutine impi_grp_isend_0(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine mpi_mod_end()
Finalize MPI, and conditionally BLACS.
subroutine dmpi_grp_send(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
logical pure function, private not_in_openmp()
Not in an OpenMP region.
subroutine zmpi_grp_send(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine lmpi_grp_isend_2(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine mpi_grp_init(grp, comm)
Initialize MPI group instance.
subroutine dmpi_grp_irecv_0(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine impi_grp_irecv_3(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine impi_grp_isend_3(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine dmpi_grp_isend(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine dmpi_grp_isend_2(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine zmpi_grp_isend_0_int64(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine lmpi_grp_irecv_3(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine mpi_grp_barrier(mpi_grp)
subroutine zmpi_grp_irecv_0(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine mpi_init_comm(comm)
Wrapper for MPI_COMM_WORLD initialisation.
subroutine dmpi_grp_irecv_2(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine lmpi_grp_isend_0_int64(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine dmpi_grp_irecv_0_int64(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine lmpi_grp_send_0(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine lmpi_grp_isend_0(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine dmpi_grp_isend_0_int64(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine dmpi_grp_send_3(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine zmpi_grp_isend_2(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine lmpi_grp_send_3(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine zmpi_grp_send_3(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine mpi_grp_waitall(mpi_grp, count, requests)
subroutine lompi_grp_allreduce_0(mpi_grp, sendbuf, recvbuf, count, datatype, op)
subroutine lmpi_grp_irecv_0(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
subroutine impi_grp_send(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine lompi_grp_send_0(mpi_grp, sendbuf, sendcount, sendtype, dest, tag)
subroutine lmpi_grp_isend_3(mpi_grp, sendbuf, sendcount, sendtype, source, request, tag)
subroutine chmpi_grp_bcast_0(mpi_grp, buf, cnt, sendtype, root)
subroutine lmpi_grp_irecv_2(mpi_grp, recvbuf, recvcount, recvtype, source, request, tag)
type(mpi_comm), parameter mpi_comm_null
type(mpi_op), parameter mpi_in_place
This is defined even when running serial.