On Friday 17 August 2007 13:58, Jeff Squyres wrote:
> On Aug 16, 2007, at 1:13 PM, Tim Prins wrote:
> 
> >> So you're both right.  :-)  But Tim's falling back on an older (and
> >> unfortunately bad) precedent.  It would be nice to not extend that
> >> bad precedent, IMHO...
> >
> > I really don't care where the constants are defined, but they do  
> > need to
> > be unique. I think it is easiest if all the constants are stored in  
> > one
> > file, but if someone else wants to chop them up, that's fine with  
> > me. We
> > would just have to be more careful when adding new constants to check
> > both files.
> 
> Ya, IIRC, this is a definite problem that we had: it's at the core of  
> the "component" abstraction (a component should be wholly self- 
> contained and not have any component-specific definitions outside of  
> itself), but these tags are a central resource that need to be  
> allocated in a distributed fashion.
> 
> That's why I think it was decided to simply leave them as they were,  
> and/or use the (DYNAMIC-x) form.  I don't have any better suggestion;  
> I'm just providing rationale for the reason it was the way it was...
> 
> >> True.  We will need a robust tag reservation system, though, to
> >> guarantee that every process gets the same tag values (e.g., if udapl
> >> is available on some nodes but not others, will that cause openib to
> >> have different values on different nodes?  And so on).
> > Not really. All that is needed is a list of constants (similar to the
> > one in rml_types.h).
> 
> I was assuming a dynamic/run-time tag assignment (which is obviously  
> problematic for the reason I cited, and others).  But static is also  
> problematic for the breaking-abstraction reasons.  Stalemate.

What's about this. Every component choose its own tag independent from the 
others. Before a component can use the tag it must register with its full 
name and the tag at a small (process intern) database. If 2 components try to 
register the same tag we emit a warning, terminate the processes, ... .

If 2 components (CompA and CompB) want to register the same tag and we assume 
that process A loads _only_ CompA while processes B loads _only_ CompB than 
both components will be loaded without any error.
I assume that it's rather unusual that CompA send a message to process B as 
there is no counter component. But there is still some probability.

For more safety (and of course less performance) we could :
- add a parameter that cause this tag database to sync. across all processes.
- add a parameter that turns a check for every send/receive, if the specified 
tag has been used or not

Just my 0.02 $
   Sven

> > If a rsl component doesn't like the particular
> > constant tag values, they can do whatever they want in their
> > implementation, as long as a messages sent on a tag is received on the
> > same tag.
> 
> Sure.
> 
> -- 
> Jeff Squyres
> Cisco Systems
> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel
> 

Reply via email to