Hi Geogre,
Thank you very much!
i know ,it's really a receive callback in this send function
mca_btl_self_send,what i want to know is where  this callback function(line
303).
<snip>
303    reg = mca_btl_base_active_message_trigger + tag;
304    reg->cbfunc( btl, tag, des, reg->cbdata );
</snip>
mapped to,where this function is initialized.in which file,which
function,the mca_bml_r2_register was called.

Thanks & Regards
Yaohui

On Wed, Mar 17, 2010 at 12:42 PM, George Bosilca <bosi...@eecs.utk.edu>wrote:

> Yoahui,
>
> The self component is special. While is does behave as a "normal" BTL, it
> takes a lot of shortcuts as all operations are in the memory of a single
> process. However, as the simplest BTLs in Open MPI, I guess it is a good
> starting point.
>
> As stated previously, the self BTL exhibit a lot of differences compared
> with the others BTL. For your case, in the self BTL the send function
> trigger the receiver callback, as there is other simple way to drain the
> "network". This explain why we compute the btl_active_message_callback_t
> directly in the send function. Usually, this is done on the progress
> function, once some data have been extracted from the network. Basically,
> everything in the mca_btl_self_send function starting from the "/* upcall
> */" comment is the receive operation.
>
>  george.
>
> On Mar 17, 2010, at 00:30 , hu yaohui wrote:
>
> > Hi George,
> > what i want to do is to modify the self component to meet my needs,i just
> want to modify the send function of the self component to test whether my
> implemented send function ,which based on some emulation platform, is
> right.so i copied all the self component code,modified the component name to
> mine ,the i wanted to subsitude its send and receive to my implemented
> send/receive function.i dont know whether this is right,if not ,or you need
> more information ,please let me know.
> >
> > Thanks & Regards
> > Yaohui Hu .
> >
> > On Wed, Mar 17, 2010 at 12:05 PM, George Bosilca <bosi...@eecs.utk.edu>
> wrote:
> > Yaohui,
> >
> > The whole infrastructure at the level where you're looking is similar to
> Active Messages. The register function is used to register callback for a
> specific tag. A tag is a uint8_t, and thus there are 256 callbacks possible.
> However, there are some rules regarding which level is allowed to register
> callbacks in a specific range, in order to avoid conflict between several
> modules loaded in same time.
> >
> > Anyway, as far as I understood you're looking at writing a new BTL. Every
> time a message is drained from the network, the BTL is supposed to know that
> tag it was send to and trigger the corresponding callback (this only on the
> receiver side). How this "tag" is moved around depends on the BTL
> capabilities. Some will have to push it explicitly through the network (TCP
> as an example), while others have other means to move it around (for MX this
> tag is part of the 64 bits key used for each message). Therefore, the first
> thing you should make sure is that you really have a way to retrieve this
> tag on the receiver side. Once you have the tag and the content of the
> message, you should call the callback corresponding to the tag (using the
> simple addition you noticed), and pass the correct arguments. This should at
> least let you start the eager protocol.
> >
> >  george.
> >
> > On Mar 16, 2010, at 23:22 , hu yaohui wrote:
> >
> > > Hi Jeff & All
> > > Yes,you are right,i was just a little dizzy then. i need to modify the
> send function of component self in btl framework.
> > > i just met a problem right now.
> > > when i browse the function
> mca_btl_self_send(~/ompi/mca/btl/self/btl_self.c),i think it use this to
> send the data
> > > <snip>
> > > 303    reg = mca_btl_base_active_message_trigger + tag;
> > > 304    reg->cbfunc( btl, tag, des, reg->cbdata );
> > > </snip>
> > > i trace through the "mca_btl_base_active_message_trigger" to the
> function where it get its value ,then i find function
> mca_bml_r2_register(~/ompi/mca/bml/bml_r2.c),it like this:
> > > <snip>
> > > 728    mca_btl_base_active_message_trigger[tag].cbfunc = cbfunc;
> > > 729    mca_btl_base_active_message_trigger[tag].cbdata = data;
> > > <snip>
> > > when i trace through mca_bml_r2_register ,in the same file,i get this
> structure:
> > > <snip>
> > > mca_bml_r2_module_t mca_bml_r2 = {
> > >     {
> > >         &mca_bml_r2_component,
> > >         mca_bml_r2_add_procs,
> > >         mca_bml_r2_del_procs,
> > >         mca_bml_r2_add_btl,
> > >         mca_bml_r2_del_btl,
> > >         mca_bml_r2_del_proc_btl,
> > >         mca_bml_r2_register, <------------------------------------
> > >         mca_bml_r2_register_error,
> > >         mca_bml_r2_finalize,
> > >         mca_bml_r2_ft_event
> > >     }
> > >
> > > };
> > > <snip>
> > > after this ,i find the place where mca_bml_r2 is initialized,but i
> cannt find anything related to mca_bml_r2_register.i just want to know reg =
> mca_btl_base_active_message_trigger + tag;
> > > really is.and i want to modify the send function of self ,is this the
> right way? or you can tell me the right way to modify the send function of
> self component.
> > >
> > > Thanks & Regards
> > > Yaohui Hu
> > >
> > > On Wed, Mar 17, 2010 at 12:52 AM, Jeff Squyres <jsquy...@cisco.com>
> wrote:
> > > On Mar 16, 2010, at 9:45 AM, hu yaohui wrote:
> > >
> > > > it just said,i had a wrong command format,when i use mpirun --help,i
> really
> > > > didn't find the --mca parameter.why the tcp FAQ part list these
> command lines,
> > > > but it cann't execute successfully on my machine.Is there any another
> way to control the specific
> > > > btl components to be used?
> > >
> > > Make sure you're using the right mpirun -- you might have multiple
> installed on your machine.
> > >
> > > OMPI's "mpirun --help" definitely includes a description of the --mca
> parameter:
> > >
> > >   -mca|--mca <arg0> <arg1>
> > >                         Pass context-specific MCA parameters; they are
> > >                         considered global if --gmca is not used and
> only
> > >                         one context is specified (arg0 is the parameter
> > >                         name; arg1 is the parameter value)
> > >
> > > --
> > > Jeff Squyres
> > > jsquy...@cisco.com
> > > For corporate legal information go to:
> > > http://www.cisco.com/web/about/doing_business/legal/cri/
> > >
> > >
> > > _______________________________________________
> > > devel mailing list
> > > de...@open-mpi.org
> > > http://www.open-mpi.org/mailman/listinfo.cgi/devel
> > >
> > > _______________________________________________
> > > devel mailing list
> > > de...@open-mpi.org
> > > http://www.open-mpi.org/mailman/listinfo.cgi/devel
> >
> >
> > _______________________________________________
> > devel mailing list
> > de...@open-mpi.org
> > http://www.open-mpi.org/mailman/listinfo.cgi/devel
> >
> > _______________________________________________
> > devel mailing list
> > de...@open-mpi.org
> > http://www.open-mpi.org/mailman/listinfo.cgi/devel
>
>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>

Reply via email to