36 integer,
public :: mpi_lib_dummy
64 type(MPI_Comm),
intent(in) :: from_comm
65 type(MPI_Comm),
intent(in) :: to_comm
66 integer,
intent(in) :: rank
68 type(MPI_Group) :: from_group, to_group
69 integer :: from_rank(1), to_rank(1)
73 call mpi_comm_group(from_comm, from_group,
mpi_err)
74 call mpi_comm_group(to_comm, to_group,
mpi_err)
77 call mpi_group_translate_ranks(from_group, 1, from_rank, to_group, to_rank,
mpi_err)
86 type(MPI_Win),
intent(inout) :: window
91 call mpi_win_unlock_all(window,
mpi_err)
93 call mpi_win_free(window,
mpi_err)
100 type(MPI_Win),
intent(in) :: window
101 type(mpi_grp_t),
intent(in) :: intranode_grp
105 call mpi_win_sync(window,
mpi_err)
106 call intranode_grp%barrier()
112 type(mpi_grp_t),
intent(in) :: base_grp
113 type(mpi_grp_t),
intent(out) :: intranode_grp
114 type(mpi_grp_t),
intent(out) :: internode_grp
115 type(MPI_Comm) :: comm
121 call mpi_comm_split_type(base_grp%comm, mpi_comm_type_shared, base_grp%rank, mpi_info_null, comm,
mpi_err)
126 call mpi_comm_split(base_grp%comm, intranode_grp%rank, base_grp%rank, comm,
mpi_err)
134#include "mpi_lib_inc.F90"
137#include "complex.F90"
138#include "mpi_lib_inc.F90"
141#include "integer.F90"
142#include "mpi_lib_inc.F90"
145#include "integer8.F90"
146#include "mpi_lib_inc.F90"
This module contains some common usage patterns of MPI routines.
subroutine ilmpi_gen_allgatherv(incount, in, outcount, out, mpi_grp)
Every node has incount (may vary from node to node) items (in array in) to send to everybody else in ...
subroutine llmpi_gen_allgatherv(incount, in, outcount, out, mpi_grp)
Every node has incount (may vary from node to node) items (in array in) to send to everybody else in ...
subroutine llmpi_create_shared_memory_window(number_of_elements, intranode_grp, window, array)
Create a shared memory segment as an MPI window.
subroutine zlmpi_gen_allgatherv(incount, in, outcount, out, mpi_grp)
Every node has incount (may vary from node to node) items (in array in) to send to everybody else in ...
subroutine dlmpi_create_shared_memory_window(number_of_elements, intranode_grp, window, array)
Create a shared memory segment as an MPI window.
subroutine dlmpi_gen_allgatherv(incount, in, outcount, out, mpi_grp)
Every node has incount (may vary from node to node) items (in array in) to send to everybody else in ...
integer function, public lmpi_translate_rank(from_comm, to_comm, rank)
Returns the rank number of the node rank in from_comm for the to_comm communicator.
subroutine ilmpi_create_shared_memory_window(number_of_elements, intranode_grp, window, array)
Create a shared memory segment as an MPI window.
subroutine zlmpi_create_shared_memory_window(number_of_elements, intranode_grp, window, array)
Create a shared memory segment as an MPI window.
subroutine, public lmpi_sync_shared_memory_window(window, intranode_grp)
subroutine, public lmpi_destroy_shared_memory_window(window)
subroutine, public create_intranode_communicator(base_grp, intranode_grp, internode_grp)
subroutine mpi_grp_init(grp, comm)
Initialize MPI group instance.
integer, public mpi_err
used to store return values of mpi calls