tem_comm_alltoall_int Subroutine

public subroutine tem_comm_alltoall_int(targets, send_buffer, sources, recv_buffer, comm, tag)

All to all exchange of a single integer.

This is a wrapper around the sparse alltoall implementation and overcome the lack of non-blocking collectives on some systems.


integer, intent(in) :: targets(:)

List of target ranks to send an integer to.

integer, intent(in) :: send_buffer(:)

Data to send to the respective target ranks. This array has to have the same ordering as targets.

integer, intent(out), allocatable:: sources(:)

List of ranks we received data from (source ranks). The array will be allocated with a size according to the number of processes that send a request to this process.

integer, intent(out), allocatable:: recv_buffer(:)

Received data from the sources. The array has the same size and ordering as the sources array.

integer, intent(in) :: comm

MPI Communicator to use for this data exchange.

integer, intent(in), optional :: tag

Tag to use in the communications. Defaults to 22.


proc~~tem_comm_alltoall_int~~CallsGraph proc~tem_comm_alltoall_int tem_comm_alltoall_int mpi_comm_size mpi_comm_size proc~tem_comm_alltoall_int->mpi_comm_size tem_sparse_alltoall_int tem_sparse_alltoall_int proc~tem_comm_alltoall_int->tem_sparse_alltoall_int mpi_alltoall mpi_alltoall proc~tem_comm_alltoall_int->mpi_alltoall



integer, private :: nProcs
integer, private :: nSources
integer, private :: iProc
integer, private :: iSource
integer, private :: iError
integer, private, allocatable:: buf(:)