[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fw: [bgl-discuss] MPI Buffer Problem



>         From:   Bob Walkup/Watson/IBM@IBMUS
> This sounds like MPI rank 0 is running out of memory because it is 
> allocating buffers for messages that have been sent before a matching 
> mpi_recv was posted.
> ...
> One solution is 
> to introduce control flow.  For example:
> 
> if (myrank .eq. 0) then
>    do pe  = 1, numpes
>        call mpi_send(flag, 1, mpi_integer, pe, ...)
>        call mpi_recv(rbuf, count, type, pe, ...)
>    end do
> else
>    call mpi_recv(flag, 1, mpi_integer, 0, ...)
>    call mpi_send(sbuf, count, type, 0, ...) 
> end if

Thanks very much for the help.  I tried this approach, and it worked
in one case.  I tried it in a different routine that works in a
similar way to the first routine, and I'm getting the same error
there.  I'll look into this further.

> This user, however, experiences this problem on 4 processes with large
> messages (5.7 MB), which I don't think will be sent as eager. And he
> experiences it even after reducing the eager limit to 1024. That's
> mysterious.

I see your point, and I don't understand this either.  I'll try it
again to make sure I can duplicate the behavior.

> MPI_Gatherv has to work in this case, otherwise it can be considered a bug
> in the implementation of gatherv.

Unfortunately I can't use a gather.  I'm collecting chunks of arrays,
for example, processor 1 might send x(:,3) to processor 0, processor
2 might send x(:,6) to processor 0, etc. 

Thanks for all the responses; they were quite helpful.
___________________________________________________________

Doug Sondak                Boston University
email: sondak@xxxxxx       Office of Information Technology
phone: (617)353-8273       111 Cummington Street
fax  : (617)353-6260       Boston, MA 02215

- --------------------------------------------------------------------
To add or remove yourself from this mailing list, use the 'notifyme'
command on any BGL machine. To remove: notifyme -n, to add: notifyme -y.