On Aug 17, 2007, at 8:22 AM, Sven Stork wrote:

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, ... .

My knee-jerk reaction to this is: no! How could we ship code that might abort?!

But upon further reflection, I'm guessing that you assume that we would catch such tag conflicts during QA testing and therefore only ship components that use distinct tags. That might be tolerable.

However, it does raise another place where we would have to have central coordination between all MPI processes -- something we've actively been trying to shed for scalability reasons...

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.

*Assumedly* we would never ship components that use the same tag (per above), but it doesn't address the possibility of 3rd party components, etc.

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

Another thought (that was long-ago discarded) would be to use string tags. If you follow the prefix rule, it's easy to guarantee that there won't be conflicts. But:

a) this is the moral equivalent of the modex -- which currently utilizes the one-time blast-o-gram from the HNP during MPI_INIT to do all the transport

b) to use this for regular RML/OOB/RSL/whatever communication in the MPI layer would be rather expensive (which is why it was discarded)

--
Jeff Squyres
Cisco Systems

Reply via email to