On Nov 3, 2014, at 5:49 AM, Brice Goglin <brice.gog...@inria.fr> wrote:

> * don't put I/O objects in "normal" children since it confuses programs
> consulting the children list. rather place them under a dedicated child
> pointer special objects such as Misc may go there as well.

If you're going to separate them from the normal "children", then how about 
naming them for what they are?  E.g.:

- pe_children
- io_children
- misc_children

> * stop having 4 cpusets and 3 nodesets per object and just have 1 cpuset
> and 1 nodeset depending on topology flags (only allowed, or only online,
> etc). possibly with ways to switch between modes at runtime

No, please don't do this.  For big code bases like Open MPI, we don't know how 
the different consumers of hwloc will use the information.  So we get all of 
the topo information once, at the beginning of time.  Various different plugins 
and different parts of OMPI may want different information, and it would kinda 
defeat the point if they had to re-scan the topo because we didn't initially 
get the information that they needed.

> * stop having a CACHE type + data/instruction/unified + depth, and just
> have one type for each of them, such as HWLOC_OBJ_CACHE_L1d. the
> advantage is that you can switch (type) without special-casing the CACHE
> subtypes. One drawback is that there are many subtypes in existing
> machines (at least L1[id], L2[idu], L3[idu], L4u).

Samuel has a good point about "where will it end?".

But I also agree that it's pretty annoying (and Ralph has [rightfully] 
complained a bunch) to have to special-case the check for the various caches -- 
it has caused a bunch of code churn in OMPI.

How about making enums for L1 through L5?  That's more than any architecture 
has today, and gives us a bit of future-proofing.

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/

Reply via email to