15 integer,
dimension(:),
allocatable:: buffer
26 SUBROUTINE send (self, rank, tag)
31 if (mp%mode == mpi_thread_multiple)
then 32 call mpi_isend (self%buffer,
size(self%buffer), mpi_integer, rank, tag, &
33 mp%comm, self%req, self%ierr)
36 call mpi_isend (self%buffer,
size(self%buffer), mpi_integer, rank, tag, &
37 mp%comm, self%req, self%ierr)
51 integer:: stat(mpi_status_size)
53 if (mp%mode == mpi_thread_multiple)
then 54 call mpi_test (self%req, sent, stat, self%ierr)
57 call mpi_test (self%req, sent, stat, self%ierr)
63 if (sent) self%req = 0
73 FUNCTION recv (self, rank, tag)
79 integer:: stat(mpi_status_size)
81 if (mp%mode == mpi_thread_multiple)
then 83 call mpi_irecv (self%buffer,
size(self%buffer), mpi_integer, rank, tag, &
84 mp%comm, self%req, self%ierr)
85 call mpi_test (self%req, recv, stat, self%ierr)
90 call mpi_irecv (self%buffer,
size(self%buffer), mpi_integer, rank, tag, &
91 mp%comm, self%req, self%ierr)
92 call mpi_test (self%req, recv, stat, self%ierr)
99 if (recv) self%req = 0
Simple module for sending / receiving packages to / from other ranks.