Hello I am considering removing some features from hwloc since the next major release will be called 2.0 and it deserves major changes :)
If you care about anything below, please speak up: * the "custom" interface and hwloc-assembler tools (for assembling the topology of multiple nodes): nobody ever used it as far as I know, it complicates the code by allowing NULL cpuset at the top of the topology, and we know the design doesn't work (that's why netloc is coming) * kerrighed support (single-system image): planned for removal since 2012, see https://github.com/open-mpi/hwloc/issues/73 I am also considering this change that shouldn't break existing programs: * always create a NUMA node even if the machine isn't NUMA: we currently use a full nodeset for UMA machines without any NUMA object, and that makes the code ugly. If we're going to break the ABI anyway (removing custom will break the ABI), we could break it even more. Other possible more intrusive changes: * 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. * replace hwloc_topology_ignore_type_keep_structure() with a flavor that does not create asymmetric topologies. only remove entire levels that don't add any hierarchy. don't remove single objects within levels in case of asymmetric topologies (restricted by cgroup etc). * remove obj->os_level: pretty much unused and undocumented, can go in a string attribute if really useful Changes requested by some users but that I am not sure what to do yet: * 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 * 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). Also the "Group" type still needs special-casing because of multiple nested groups in large NUMA machines. Other things you don't like and never said? Brice