Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] mpi_iprobe not behaving as expect
From: David Zhang (solarbikedz_at_[hidden])
Date: 2010-06-06 14:08:41


On Sat, Jun 5, 2010 at 2:44 PM, David Zhang <solarbikedz_at_[hidden]> wrote:

> Dear all:
>
> I'm using mpi_iprobe to serve as a way to send signals between different
> mpi executables. I'm using the following test codes (fortran):
>
> #1
> program send
> implicit none
> include 'mpif.h'
>
> real*8 :: vec(20000)=1.0
> integer :: ierr,i=0,request(1)
>
> call mpi_init(ierr)
> do
> call mpi_isend(vec,20000,mpi_real8,
> 0,1,mpi_comm_world,request(1),ierr)
> i=i+1
> print *,i
> vec=-vec
> call usleep_fortran(2.d0)
> call mpi_wait(request(1),MPI_STATUS_IGNORE,ierr)
> end do
>
> end program send
> --------------------------------------------------
> #2
> program send
> implicit none
> include 'mpif.h'
>
> real*8 :: vec(20000)
> integer :: ierr
>
> call mpi_init(ierr)
> do
> if(key_present()) then
> call
> mpi_recv(vec,20000,mpi_real8,1,1,mpi_comm_world,MPI_STATUS_IGNORE,ierr)
> end if
> call usleep_fortran(0.05d0)
>
> end do
>
> contains
>
> function key_present()
> implicit none
> logical :: key_present
>
> key_present = .false.
> call
> mpi_iprobe(1,1,mpi_comm_world,key_present,MPI_STATUS_IGNORE,ierr)
> print *, key_present
>
> end function key_present
>
> end program send
> -----------------------------------
> The usleep_fortran is a routine I've written to pause the program for that
> amount of time (in seconds). As you can see, on the receiving end I'm
> probing to see whether the message has being received every 0.05 seconds,
> where each probing would result a print of the probing result; while the
> sending is once every 2 seconds.
>
> Doing
> mpirun -np 1 recv : -np 1 send
> Naturally I expect the output to be something like:
>
> 1
> (fourty or so F)
> T
> 2
> (another fourty or so F)
> T
> 3
>
> however this is the output I get:
>
> 1
> (fourty or so F)
> T
> 2
> (about a two second delay)
> T
> 3
>
> It seems to me that after the first set of probes, once the message was
> received, the non-blocking mpi probe becomes blocking for some strange
> reason. I'm using mpi_iprobe for the first time, so I'm not sure if I'm
> doing something blatantly wrong.
>
>
> --
> David Zhang
> University of California, San Diego
>

-- 
David Zhang
University of California, San Diego