Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] Replacing poll()
From: Alex Margolin (alex.margolin_at_[hidden])
Date: 2012-03-19 15:35:16


I've removed put and get from mosix (feels good to cut down on code
lines...), but now the question has to be asked:
Threre are send and sendi (is sendi sufficient, or must i include send
as well?) for the outgoing, but what about the incoming?
How does a process request input? Do I poll for incoming messages in the
progress function and call the function in
mca_btl_base_active_message_trigger[incoming_tag] ?

Also, If I remove the async operations and left only with the blocking
ones - can I remove the prepare_src/prepare_dst functions (and any other
mention of the descriptors data structure) for the time being? I assume
it'll cost me in performance, but I want to create a basic working
prototype first and proceed to supporting async calls later on.

Thanks for all your help,
Alex

P.S. Sorry about the lengthy thread... I promise I'll document my
component so it can later be used for reference for the things I didn't
understand reading the template, btl.h and the TCP component (any other
devel manuals to read?).

On 03/19/2012 07:22 PM, George Bosilca wrote:
> You don't have to implement all the protocols. The default is send protocol, and this is the minimum you have to implement. The RMA protocols (GET or PUT) are optional, and are specified by setting specific bits in your BTL flag.
>
> Regarding the TCP BTL, the two RMA operations are "fake", they are simply implemented on top of mca_btl_tcp_endpoint_send.
>
> george.
>
> On Mar 17, 2012, at 18:55 , Alex Margolin wrote:
>
>> My module is close to completion (though I need to fix other issues with shared memory to begin testing, but that's a different thread).
>> I'm trying to understand how exactly are the fragments returned to the application once they are received.
>>
>> In btl_tcp.c the function mca_btl_tcp_get() seems to be unused... and calls mca_btl_tcp_endpoint_send().
>> I've stumled upon the following snippet (btl_tcp_endpoint.c:715):
>>
>> btl_endpoint->endpoint_recv_frag = NULL;
>> if( MCA_BTL_TCP_HDR_TYPE_SEND == frag->hdr.type ) {
>> mca_btl_active_message_callback_t* reg;
>> reg = mca_btl_base_active_message_trigger + frag->hdr.base.tag;
>> reg->cbfunc(&frag->btl->super, frag->hdr.base.tag,&frag->base, reg->cbdata);
>> }
>> This calls a callback function, which I assume notifies the upper layer of a message, but this is only for MCA_BTL_TCP_HDR_TYPE_SEND.
>> What about MCA_BTL_TCP_HDR_TYPE_PUT?
>>
>> Thanks,
>> Alex
>>