m_swapm_FP Subroutine

public subroutine m_swapm_FP(nprocs, mytask, sndbuf, sbuf_siz, sndlths, sdispls, stypes, rcvbuf, rbuf_siz, rcvlths, rdispls, rtypes, comm, comm_hs, comm_isend, comm_maxreq)

Purpose: Reduced version of original swapm (for swap of multiple messages using MPI point-to-point routines), more efficiently implementing a subset of the swap protocols.

Method: comm_protocol: comm_isend == .true.: use nonblocking send, else use blocking send comm_hs == .true.: use handshaking protocol comm_maxreq: =-1,0: do not limit number of outstanding send/receive requests >0: do not allow more than min(comm_maxreq, steps) outstanding nonblocking send requests or nonblocking receive requests

Author of original version: P. Worley Ported from PIO1: P. Worley, September 2016

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nprocs
integer, intent(in) :: mytask
real(kind=FP), intent(in) :: sndbuf(sbuf_siz)
integer, intent(in) :: sbuf_siz
integer, intent(in) :: sndlths(0:nprocs-1)
integer, intent(in) :: sdispls(0:nprocs-1)
integer, intent(in) :: stypes(0:nprocs-1)
real(kind=FP), intent(out) :: rcvbuf(rbuf_siz)
integer, intent(in) :: rbuf_siz
integer, intent(in) :: rcvlths(0:nprocs-1)
integer, intent(in) :: rdispls(0:nprocs-1)
integer, intent(in) :: rtypes(0:nprocs-1)
integer, intent(in) :: comm
logical, intent(in) :: comm_hs
logical, intent(in) :: comm_isend
integer, intent(in) :: comm_maxreq