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/