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
Type | Intent | Optional | 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 |