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



Reply via email to