On Jan 7, 2013, at 12:59 PM, Samuel Thibault <samuel.thiba...@inria.fr>
 wrote:

> Because I may not know *everything* that I want. Who knows what
> proprietary plugin I need to use to discover CPUs, while I know that for
> GPUs I can use cuda, but I don't want to use nvml.
> 
>> Taking your example: HWLOC_COMPONENTS=foo,^bar,^baz,yow
>> Is the same as:      HWLOC_COMPONENTS=foo,yow
> 
> No, because there is also the implicit "and the default plugins" after
> that.

So you're really saying "not bar and baz, but I do want everything else."

OMPI's intent was to be simple: specify what you want to *exclude* or what you 
want to *include*, but you'd never do *both*.

But maybe you're looking for some additional semantic meaning to your 
specification, above...?

COMPONENTS=foo,^bar,^baz,yow

Could mean:

- if foo doesn't load / isn't used, it's an error
- don't load bar
- don't load baz
- if yow doesn't load / isn't used, it's an error
- try to load all other components, but don't warn/error if they don't load / 
aren't used

which is more of a tri-state philosophy (yes/no/maybe), rather than a binary 
philosophy like OMPI's (yes/no).  And that would be fine, if that's what you 
want (or perhaps you want something different than that).  My point is that the 
OMPI include/exclude philosophy is quite simple to explain, and it was enough 
for us.  If something more than that is desired here, then go for it -- but you 
might want to use something other than ^ so that it's not confused with OMPI's 
syntax.

(BTW, we chose to use ^ instead of ! because with !, you'd have to escape it on 
the command line, e.g., "COMPONENTS=\!foo", which seemed like a pain, and 
everyone would get it wrong -- so we went with ^, instead)

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to