On Fri, 11 Mar 2005, karla b wrote:
> Hi Anthony,
>
> Many thanks for the response, sincere apologies for the length of
> original posting.
>
> This was due to the fact that in many instances when newbies like
> myself mail problems without a full description of what the complete
> problem is, they are told that they aren't giving enough information,
> this was my attempt to give a complete description of what the actual
> problem is. Apologies again, seems we can never please everybody!
Usually, they leave important things out which may be relevant to the
issue, such as the version of LAM. In your case, it was a flow diagram
problem in the program, but it could have been a known issue in an older
version of LAM. Also, a more detailed, yet succinct, flow diagram of the
problem program would have been a tad more helpful, but the notes in the
source sufficed.
> <snip>
> May I take it that you would recommend using Irecv() and Isend()
> instead of send/receive or are you saying that this particular model
> as is will never work?
Non-blocking calls can also cause problems if you don't pay attention to
the flow diagram. If you use them, you need to make logic to check which
messages have been received, and then take the proper action. In your
case, your would issue two MPI_Irecv()'s and an MPI_Waitany() in each
slave, and then test which message was received and take appropriate
action.
However, the blocking calls can also be used here, if the master informs
each slave about which type of message it will receive next, and each
slave then MPI_Recv()'s the appropriate message.
Most important is the COORDINATION in the messages passed from
rank-to-rank. Whether you use nonblocking and/or blocking calls depends
on what you want to do or not do while messages are being passed.
> On Fri, 11 Mar 2005 14:32:04 -0600 (CST), "Anthony J. Ciani"
> <aciani1_at_[hidden]> wrote:
>> Hello,
>>
>> First: That message was long. Too long. Think about what you want to say
>> before you say it.
>>
>> Second: Is this really the place for that sort of debugging help?
>>
>> Third: This is a classic example of what happens when people don't think
>> about how they use BLOCKING calls. Your program has slaves expecting to
>> MPI_Recv() and MPI_Send() certain messages in a certain order; however,
>> your master only sends an expected message to one of the slaves. The
>> slaves which don't receive the message continue to wait for it, but the
>> master and other slave have terminated, which forces the termination of
>> the other slaves while waiting to MPI_Recv(). This produces the,
>>
>> MPI_Recv: process in local group is dead (rank 2, MPI_COMM_WORLD)
>>
>> error. If a process is using MPI_Recv() or MPI_Send you need to make
>> certain that the message is sent or received before terminating!
>>
>>
>> On Thu, 10 Mar 2005, karla b wrote:
>>> Hello,
>>
>> <mega snip>
>>
>> ------------------------------------------------------------
>> Anthony Ciani (aciani1_at_[hidden])
>> Computational Condensed Matter Physics
>> Department of Physics, University of Illinois, Chicago
>> http://ciani.phy.uic.edu/~tony
>> ------------------------------------------------------------
>> _______________________________________________
>> This list is archived at http://www.lam-mpi.org/MailArchives/lam/
>>
>
------------------------------------------------------------
Anthony Ciani (aciani1_at_[hidden])
Computational Condensed Matter Physics
Department of Physics, University of Illinois, Chicago
http://ciani.phy.uic.edu/~tony
------------------------------------------------------------
|