Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Development mailing list

Subject: Re: [hwloc-devel] v1.7
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2013-01-07 13:18:05

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


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
For corporate legal information go to: