3.14.2. Send procedures

Send requests are started with MPI_ISEND() calls, and the requests are held on lists until each set of sends (each task is in general sent to multiple ranks) is completed (as tested via MPI_TEST_ALL()), at which time the send buffer is deallocated and the send request is removed from the sent_list and deleted.

It is an advantage to arrange this so that each thread maintain a thread-private sent_list – this avoids the need for OMP critical regions or locks.

Data type and procedures::

task_mesg_t%check_mpi
  mpi_mesg_t%check_sent
    mesg_t%send
    mesg_t%test_all
    mesg_t%wait_all