On Jan 7, 2013, at 12:59 PM, Samuel Thibault <samuel.thibault_at_[hidden]>
> 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
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...?
- 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)
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/