Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] Retrying a MPI_SEND
From: Hugo Daniel Meyer (meyer.hugo_at_[hidden])
Date: 2011-12-09 06:59:56


Hello George and all.

I've been adapting some of the code to copy the request, and now i think
that it is working ok. I'm storing the request as you do on the pessimist,
but i'm only logging received messages, as my approach is a pessimist log
based on the receiver.

I do have a question about how you detect when you have to resend a
message, or at least repost it?

Thanks for the help.

Hugo

2011/11/19 Hugo Daniel Meyer <meyer.hugo_at_[hidden]>

>
>
> 2011/11/18 George Bosilca <bosilca_at_[hidden]>
>
>>
>> On Nov 18, 2011, at 11:50 , Hugo Daniel Meyer wrote:
>>
>>
>> 2011/11/18 George Bosilca <bosilca_at_[hidden]>
>>
>>>
>>> On Nov 18, 2011, at 11:14 , Hugo Daniel Meyer wrote:
>>>
>>> 2011/11/18 George Bosilca <bosilca_at_[hidden]>
>>>
>>>>
>>>> On Nov 18, 2011, at 07:29 , Hugo Daniel Meyer wrote:
>>>>
>>>> Hello again.
>>>>
>>>> I was doing some trace into de PML_OB1 files. I start to follow a
>>>> MPI_Ssend() trying to find where a message is stored (in the sender) if it
>>>> is not send until the receiver post the recv, but i didn't find that place.
>>>>
>>>>
>>>> Right, you can't find this as the message is not stored on the sender.
>>>> The pointer to the send request is sent encapsulated in the matching
>>>> header, and the receiver will provide it back once the message has been
>>>> matched (this means the data is now ready to flow).
>>>>
>>>
>>> So, what you're saying is that the sender only sends the header, so when
>>> the receiver post the recv will send again the header so the sender starts
>>> with the data sent? am i getting it right? If this is ok, the data stays
>>> in the sender, but where it is stored?
>>>
>>>
>>> If we consider rendez-vous messages the data is remains in the sender
>>> buffer (aka the buffer provided by the upper level to the MPI_Send
>>> function).
>>>
>>
>> Yes, so i will only need to save the headears of the messages (where the
>> status is incomplete), and then maybe just call again the upper level
>> MP_Send. A question here, the headers are not marked as pending (at least i
>> think so), so, my only approach might be to create a list of pending
>> headers and store there the pointer to the send, then try to identify its
>> corresponding upper level MPI_Send and retries it in case of failure, is
>> this a correct approach?
>>
>>
>> Look in the mca/vprotocol/base to see how we deal with the send requests
>> in our message logging protocol. We hijack the send request list, and
>> replace them with our own, allowing us to chain all active requests. This
>> make the tracking of chive requests very simple, and minimize the impact on
>> the overall code.
>>
>> george.
>>
>>
> Ok George.
> I will take a look there and then let you know how it goes.
>
> Thanks.
>
> Hugo
>
>>
>> _______________________________________________
>> devel mailing list
>> devel_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>
>
>