On Jan 11, 2010, at 11:12 AM, Samuel Thibault wrote:

> > Are you thinking of adding bandwidth attributes?
> 
> When the information is available through some way (be it by hand), yes.
> 
> > Or are you thinking of adding weighting between objects in the hierarchy?  
> > Or ...?
> 
> I'd tend to think that this would be an upper layer that applications
> would compute themselves, according to their needs.

FWIW, some networks provide this kind of information through an API, such as 
verbs.  But it's not a straight "bandwidth" information; verbs provides lanes 
and widths.  The point: different networks may report network-specific 
information differently.

More below.

> > More generally -- some objects can be bound to, some cannot.
> >
> > How does this kind of thing extend to, say, co-processors (such as 
> > accelerators, FPGAs, GPGPUs, etc.)?
> 
> I once thought about adding gpuset, maybe, but since the kinds of
> objects will probably vary a lot, maybe it's better to not try to be
> smart and let layers above handle it, only possibly provide for each
> kind the OS number (e.g. CUDA device number).

Maybe it would be better to add a (void*) on to the object to allow arbitrary 
3rd parties to cache information off any given hwloc object.  This would allow 
the upper-layer to assign specific context (such as additional device 
information) to any given hwloc object that could even persist across tree 
copies, etc.

> > > - Helpers that take cpuset parameters of course don't make sense any more
> > >   when applied to networked topologies.  But it probably doesn't make
> > >   sense for the caller to call them in the first place, and the caller
> > >   knows it since it's the caller that has first called the combining
> > >   operation or loaded an XML file resulting from it.
> >
> > Agreed.  Perhaps we should have a general query function that can return 
> > whether a given object can be bound to or not (e.g., for generic 
> > tree-traversal kinds of functionality)...?
> 
> Well, to be "bound to" here would mean for a thread, i.e. to be bound
> to a CPU set. So testing for cpuset != NULL should be enough.  

Ok, fair enough.  We should document that assumption somewhere.

> As said
> above, I'm not sure we necessarily want to extend that notion since
> the various kinds of "binding something to" becomes numerous.

Yep, agree.

> > > The plan I see is that for 1.0 we only check that catenating .XML files
> > > by hand to build misc levels representing network layers does indeed
> > > work, which should mean that actual combining functions etc. should be
> > > possible to implement later.
> >
> > FWIW, I'd prefer to see the combining/etc. functions ASAP -- we could 
> > definitely use such things in Open MPI...
> 
> Mmm, doing it in the API is not so trivial, for 1.0 I'd rather just
> provide a small xml combiner (just a matter of tail/head/cat), which may
> be enough for a start. But if you need it at the API level, we can add
> it to the 1.0 milestone.

K.  "He who implements, wins".  So perhaps I can volunteer to implement this 
stuff.  :-)

I'm curious -- what's the definition of cat'ing 2 XML files together?  Does the 
2nd become a subtree of the first?

-- 
Jeff Squyres
jsquy...@cisco.com


Reply via email to