On Sat, Jun 5, 2010 at 2:44 PM, David Zhang <solarbik...@gmail.com> 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

Reply via email to