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/