Hello Here are 4 pull requests about the likely-last significant API changes for hwloc 2.0. You'll get more details by clicking on the links. I'll merge these next week unless somebody complains.
Only maintain allowed_cpuset and allowed_nodeset for the entire topology https://github.com/open-mpi/hwloc/pull/277 Make all depths *signed* ints https://github.com/open-mpi/hwloc/pull/276 Remove the "System" object type https://github.com/open-mpi/hwloc/pull/275 Move local_memory to NUMA node specific attrs https://github.com/open-mpi/hwloc/pull/274 Brice Le 26/10/2017 17:36, Brice Goglin a écrit : > Hello > > I finally merged the new memory model in master (mainly for properly > supporting KNL-like heterogeneous memory). This was the main and last > big change for hwloc 2.0. I still need to fix some caveats (and lstopo > needs to better display NUMA nodes) but that part of the API should be > ready. > > Now we encourage people to start porting their code to the new hwloc 2.0 > API. Here's a guide that should answer most questions about the upgrade: > https://github.com/open-mpi/hwloc/wiki/Upgrading-to-v2.0-API > > The final 2.0 release isn't planned before at least the end of november, > but we need to fix API issues before releasing it. So please start > testing it and report issues, missing docs, etc. If there's any existing > function/feature (either new or old) that needs to be changed, please > report it too. We're only breaking the ABI once for 2.0, we cannot break > it again 2 months later. > > > Tarballs of git master are already available from > https://ci.inria.fr/hwloc/job/master-0-tarball/lastBuild/ > and in nightly snapshots on the website starting tomorrow. > > > There are still a couple things that may or may not change before the > final 2.0 API. If you have an opinion, please let us know. > * (likely) Make all depths *signed* ints: some objects have a negative > depth (meaning "special depth", not a normal depth in the main tree). > You'll have to cast to (int) whenever you printf a depth while > supporting both hwloc 1.x and 2.x. > * (likely) Drop obj->allowed_cpuset (and allowed_nodeset) and just keep > one for the entire topology: It is very rarely used (only when you set > HWLOC_TOPOLOGY_FLAG_WHOLESYSTEM) and can be emulated by doing a binary > "and" or "intersects" between obj->cpuset and topology->allowed_cpuset. > * (likely) obj->memory becomes obj->attr->numanode since it's only used > for numa nodes. But obj->total_memory should remain in obj because it's > available in all objects (accumulated memory in all children). > * (likely) Remove HWLOC_OBJ_SYSTEM: not used anymore (we don't support > multinode topologies anymore). The root is always MACHINE now. I guess > we'd #define SYSTEM MACHINE so that you don't have to change your code. > * (unlikely) rename some info objects for consistency (examples below). > + GPUVendor and PCIVendor and CPUVendor -> Vendor. > + GPUModel and PCIDevice and CPUModel -> Model > + NVIDIASerial and MICSerialNumber -> SerialNumber > But that will make your life harder for looking up attributes while > supporting hwloc 1.x and 2.x. And XML import from 1.x would be more > expensive since we'd have to rename these. > * (unlikely) Share information between osdev (e.g. eth0 or cuda0) and > pcidev: Lots of attributes are identical (Vendor, Model, kind of device > etc). We could merge those objects into a single generic "I/O object". > However a single PCI device can contain multiple OS devices (for > instance "mlx5_0"+"ib0", or "cuda0"+"opencl0d0", etc). > > > -- > Brice > _______________________________________________ hwloc-users mailing list hwloc-users@lists.open-mpi.org https://lists.open-mpi.org/mailman/listinfo/hwloc-users