[hwloc-devel] Create success (hwloc r1.7a1r5235)
Creating nightly hwloc snapshot SVN tarball was a success. Snapshot: hwloc 1.7a1r5235 Start time: Mon Jan 7 21:01:01 EST 2013 End time: Mon Jan 7 21:05:10 EST 2013 Your friendly daemon, Cyrador
Re: [hwloc-devel] v1.7
On Mon, Jan 7, 2013 at 11:00 AM, Jeff Squyres (jsquyres)wrote: > On Jan 7, 2013, at 1:42 PM, Brice Goglin > wrote: > > > My first code did that (with "all" instead of "*" because come shells > > don't like * :) > > Oh, right -- duh! :-) > > > But my testing told me that there were many more cases where we want > > everything ("all") than nothing else ("stop"), so changed to "nothing > else". > > But users are not going to play with the list of components very often > > anyway, so I think that'd be ok too. > > > Fair enough. > > So if you don't know the list of available components, is it not possible > to specify *only* foo and bar should be used? > > That's where one should use "!", to indicate that we are being emphatic: COMPONENTS=!foo,bar No chance of confusion there, right? Seriously, I think "COMPONENTS=foo,bar,stop" was the syntax mentioned earlier in this thread. -Paul -- Paul H. Hargrove phhargr...@lbl.gov Future Technologies Group Computer and Data Sciences Department Tel: +1-510-495-2352 Lawrence Berkeley National Laboratory Fax: +1-510-486-6900
Re: [hwloc-devel] v1.7
Jeff Squyres (jsquyres), le Mon 07 Jan 2013 20:01:44 +0100, a écrit : > So if you don't know the list of available components, is it not possible to > specify *only* foo and bar should be used? foo,bar,stop will do it. Samuel
Re: [hwloc-devel] v1.7
Le 07/01/2013 19:18, Jeff Squyres (jsquyres) a écrit : > On Jan 7, 2013, at 12:59 PM, Samuel Thibault> 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*. > Another difference with OMPI is that OMPI has many different frameworks with usually few components in each of them. And OMPI can exclude in some framework and include in some others. hwloc doesn't have multiple frameworks (actually, there's another one for libxml/nolibxml2 XML backends). All discovery components are at the same level (and I don't think we want to split the list into multiple frameworks). Brice
Re: [hwloc-devel] v1.7
Brice Goglin, le Mon 07 Jan 2013 19:11:02 +0100, a écrit : > BTW, if we change the hwloc syntax, we may want to not use ^ to avoid > confusion with OMPI. ~ and ! could work but some shells may not like them? How about '-'? I doubt anybody would want a plugin name starting with it. Samuel
Re: [hwloc-devel] v1.7
Jeff Squyres (jsquyres), le Mon 07 Jan 2013 19:19:15 +0100, a écrit : > On Jan 7, 2013, at 12:59 PM, Samuel Thibault> > 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." I'm also saying "foo and yow before everything else", which as Brice mentioned, does matter. > - 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 We don't imply erroring out. Components never error out, they just don't discover anything :) What we however have is the ordering. Samuel
Re: [hwloc-devel] v1.7
On Jan 7, 2013, at 1:18 PM, "Jeff Squyres (jsquyres)"wrote: > So you're really saying "not bar and baz, but I do want everything else." With Brice's clarification (that there's an implicit "...and all the rest" at the end of the specification), I see that my interpretation is wrong. But the rest of my suggestions stand. :-) -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
Re: [hwloc-devel] v1.7
On Jan 7, 2013, at 1:09 PM, Brice Goglinwrote: > Your argument works for selecting among I/O components like > cuda/nvml/opencl that are all independent (like several components in > the same framework in OMPI). But it doesn't work when the order matters > between components that discover the same things. Like "I want x86 first > because it works better than the solaris component on my machine, and > then the other usual components for to discover everything else". > > Remember that HWLOC_COMPONENTS="foo" means "foo first and then all the > usual ones that do not conflict". It's not "only foo", which should be > written as "foo,stop" (should be rare since the core excludes all > conflicting components automatically). Gotcha. I missed those two subtleties: 1. order matters 2. there's an implicit "...and all the rest" at the end of the specification BTW, don't get me wrong -- I'm not against a different meaning than OMPI's. I was just trying to explain what OMPI uses an why. But that being said, having a "...and all the rest" implicitly implied at the end of the COMPONENTS specification is a little surprising (to me, IMHO). Perhaps you could have a special token that means "...and all the rest"? Perhaps: COMPONENTS=foo,bar,* Which means "try foo first, then try bar, and then try all the rest in whatever order you want". Because then a user could specify: COMPONENTS=foo,bar if they *didn't* want all the others to be used. Just a thought. > BTW, if we change the hwloc syntax, we may want to not use ^ to avoid > confusion with OMPI. ~ and ! could work but some shells may not like them? Hah. Our mails crossed in the ether. :-) Short version: I agree. ~ and ! have the drawback of requiring escaping, which is kind of a pain (and everyone will get it wrong). -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
Re: [hwloc-devel] v1.7
On Jan 7, 2013, at 12:59 PM, Samuel Thibaultwrote: > 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/
Re: [hwloc-devel] v1.7
Le 07/01/2013 17:59, Jeff Squyres (jsquyres) a écrit : > On Jan 7, 2013, at 9:05 AM, Samuel Thibaultwrote: > >> HWLOC_COMPONENTS=^cuda,opencl >> >> disables cuda *and* opencl, while intuition would have told me that it >> disables cuda but enables opencl. >> >> Also, one would for instance want to be able to do this: >> >> HWLOC_COMPONENTS=x86,^cuda,^opencl,nvml > > (Sorry -- am just returning today from winter vacation...) > > FWIW: in OMPI, way back when we implemented this, we considered supporting > what you describe. But then we thought -- wait, why would I ever do that? > > More specifically: you only ever want to specify exactly what you *do* or *do > not* want to be loaded. Why would you ever list both? > > Taking your example: HWLOC_COMPONENTS=foo,^bar,^baz,^yow > Is the same as: HWLOC_COMPONENTS=foo,yow > > So why bother listing ^bar and ^baz? > > Generalizing that, why would you ever specify *some* components to exclude > and *some* components to exclude? It seems much cleaner to either exclude > some (and therefore include the rest), or include some (and exclude the rest). > Your argument works for selecting among I/O components like cuda/nvml/opencl that are all independent (like several components in the same framework in OMPI). But it doesn't work when the order matters between components that discover the same things. Like "I want x86 first because it works better than the solaris component on my machine, and then the other usual components for to discover everything else". Remember that HWLOC_COMPONENTS="foo" means "foo first and then all the usual ones that do not conflict". It's not "only foo", which should be written as "foo,stop" (should be rare since the core excludes all conflicting components automatically). BTW, if we change the hwloc syntax, we may want to not use ^ to avoid confusion with OMPI. ~ and ! could work but some shells may not like them? Brice
Re: [hwloc-devel] v1.7
On Jan 7, 2013, at 9:05 AM, Samuel Thibaultwrote: > HWLOC_COMPONENTS=^cuda,opencl > > disables cuda *and* opencl, while intuition would have told me that it > disables cuda but enables opencl. > > Also, one would for instance want to be able to do this: > > HWLOC_COMPONENTS=x86,^cuda,^opencl,nvml (Sorry -- am just returning today from winter vacation...) FWIW: in OMPI, way back when we implemented this, we considered supporting what you describe. But then we thought -- wait, why would I ever do that? More specifically: you only ever want to specify exactly what you *do* or *do not* want to be loaded. Why would you ever list both? Taking your example: HWLOC_COMPONENTS=foo,^bar,^baz,^yow Is the same as: HWLOC_COMPONENTS=foo,yow So why bother listing ^bar and ^baz? Generalizing that, why would you ever specify *some* components to exclude and *some* components to exclude? It seems much cleaner to either exclude some (and therefore include the rest), or include some (and exclude the rest). -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
Re: [hwloc-devel] v1.7
On Jan 7, 2013, at 6:05 AM, Samuel Thibaultwrote: > Hello, > > Brice Goglin, le Mon 31 Dec 2012 10:05:41 +0100, a écrit : >> + The HWLOC_COMPONENTS may now start with '^' to only define a list of >> components to exclude. > > I'm finding it not intuitive and not generic enough, I'm wondering how > that didn't affect Open-MPI, which as IUI uses this convention. > > It means that > > HWLOC_COMPONENTS=^cuda,opencl > > disables cuda *and* opencl, FWIW: that is the OMPI convention > while intuition would have told me that it > disables cuda but enables opencl. > > Also, one would for instance want to be able to do this: > > HWLOC_COMPONENTS=x86,^cuda,^opencl,nvml > > To be able to enable x86 before the default linux, but disable cuda and > opencl, but enable nvml, as well as all the other usual plugins (without > having to know the list, which is important for future extensions). > > Samuel > ___ > hwloc-devel mailing list > hwloc-de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel
Re: [hwloc-devel] v1.7
Brice Goglin, le Mon 07 Jan 2013 17:33:47 +0100, a écrit : > Ideally, we could even have a OS device for each OpenCL platform, each > containing OS devices for devices of the platform. But I'd rather keep a > single level to match other OS devices. In most cases the platform object wouldn't bring much information to the topology anyway. Or worse, make it impossible, e.g. when the NVIDIA OpenCL platform drives several GPUs on different PCI cards or even NUMA nodes. Samuel
Re: [hwloc-devel] v1.7
Le 07/01/2013 14:35, Samuel Thibault a écrit : > Brice Goglin, le Mon 31 Dec 2012 10:05:41 +0100, a écrit : >> - They add OS devices such as opencl0p0, > I see that platform 0 device 3 would be called opencl3p0. I find it > counterintuitive, and would have rather called it opencl0d3, along the > line of sda3, eth0:3, socket:2.core:0, etc. > I don't have any strong opinion here. I wasn't convinced by any of my ideas when I committed this. It looks like most OpenCL machines will have multiple platforms (one for CPU and one for GPU/accelerator) so we have to always keep the platform in the name. I'll be ok with whichever of XpY or YdX or pYdX or anything better. Ideally, we could even have a OS device for each OpenCL platform, each containing OS devices for devices of the platform. But I'd rather keep a single level to match other OS devices. Brice
Re: [hwloc-devel] v1.7
Hello, Brice Goglin, le Mon 31 Dec 2012 10:05:41 +0100, a écrit : > + The HWLOC_COMPONENTS may now start with '^' to only define a list of > components to exclude. I'm finding it not intuitive and not generic enough, I'm wondering how that didn't affect Open-MPI, which as IUI uses this convention. It means that HWLOC_COMPONENTS=^cuda,opencl disables cuda *and* opencl, while intuition would have told me that it disables cuda but enables opencl. Also, one would for instance want to be able to do this: HWLOC_COMPONENTS=x86,^cuda,^opencl,nvml To be able to enable x86 before the default linux, but disable cuda and opencl, but enable nvml, as well as all the other usual plugins (without having to know the list, which is important for future extensions). Samuel
Re: [hwloc-devel] v1.7
Brice Goglin, le Mon 31 Dec 2012 10:05:41 +0100, a écrit : > - They add OS devices such as opencl0p0, I see that platform 0 device 3 would be called opencl3p0. I find it counterintuitive, and would have rather called it opencl0d3, along the line of sda3, eth0:3, socket:2.core:0, etc. What do people think? Samuel