Hello 2.0.0rc2 is out. Changes since rc1 include: * Mac OS X core and hyperthread discovery fixes * Memory binding improvements on Linux and Windows * Some clarification about the memory binding policies * Some minor configure/build fixes * Many documentation updates
I'd like to say we won't need a rc3, but we got several reports after rc1, hence I can't be sure it won't happen again :) Note that the Upgrading page is being moved from the wiki to the official documentation (available from the Related Pages tab): https://www.open-mpi.org/projects/hwloc/doc/v2.0.0rc2/a00327.php Brice Le 16/01/2018 à 16:51, Brice Goglin a écrit : > The Hardware Locality (hwloc) team is pleased to announce the first > release candidate for v2.0.0: > > http://www.open-mpi.org/projects/hwloc/ > > v2.0.0 is the result of more than 2 years of work. > There are lots of changes as listed below, including > * Better support for upcoming heterogeneous/hybrid/non-volatile > memory technologies, which involves significant changes in the > way NUMA nodes are attached to the tree and placed in a level. > * API changes to cleanup bad ideas from 8 years ago > > You are strongly encouraged to > ** try porting your code to this release candidate as soon as possible ** > and report any issue about the new API. > We can still change the API until the final 2.0 is released. > But we cannot break it later! > > See https://github.com/open-mpi/hwloc/wiki/Upgrading-to-v2.0-API > for details about API changes. > > Version 2.0.0 > ------------- > *** The ABI of the library has changed. *** > For instance some hwloc_obj fields were reordered, added or removed, see > below. > + HWLOC_API_VERSION and hwloc_get_api_version() now give 0x00020000. > + See "How do I handle ABI breaks and API upgrades ?" in the FAQ > and https://github.com/open-mpi/hwloc/wiki/Upgrading-to-v2.0-API > * Major API changes > + Memory, I/O and Misc objects are now stored in dedicated children lists, > not in the usual children list that is now only used for CPU-side objects. > - hwloc_get_next_child() may still be used to iterate over these 4 lists > of children at once. > - hwloc_obj_type_is_normal(), _memory() and _io() may be used to check > the kind of a given object type. > + Topologies always have at least one NUMA object. On non-NUMA machines, > a single NUMA object is added to describe the entire machine memory. > The NUMA level cannot be ignored anymore. > + The NUMA level is special since NUMA nodes are not in the main hierarchy > of objects anymore. Its depth is a fake negative depth that should not be > compared with normal levels. > - If all memory objects are attached to parents at the same depth, > it may be retrieved with hwloc_get_memory_parents_depth(). > + The HWLOC_OBJ_CACHE type is replaced with 8 types HWLOC_OBJ_L[1-5]CACHE > and HWLOC_OBJ_L[1-3]ICACHE that remove the need to disambiguate levels > when looking for caches with _by_type() functions. > - New hwloc_obj_type_is_{,d,i}cache() functions may be used to check > whether > a given type is a cache. > + Reworked ignoring/filtering API > - Replace hwloc_topology_ignore*() functions with > hwloc_topology_set_type_filter() > and hwloc_topology_set_all_types_filter(). > . Contrary to hwloc_topology_ignore_{type,all}_keep_structure() which > removed individual objects, HWLOC_TYPE_FILTER_KEEP_STRUCTURE only > removes > entire levels (so that topology do not become too asymmetric). > - Remove HWLOC_TOPOLOGY_FLAG_ICACHES in favor of > hwloc_topology_set_icache_types_filter() > with HWLOC_TYPE_FILTER_KEEP_ALL. > - Remove HWLOC_TOPOLOGY_FLAG_IO_DEVICES, _IO_BRIDGES and _WHOLE_IO in > favor of > hwloc_topology_set_io_types_filter() with HWLOC_TYPE_FILTER_KEEP_ALL or > HWLOC_TYPE_FILTER_KEEP_IMPORTANT. > + The distance API has been completely reworked. It is now described > in hwloc/distances.h. > + Return values > - Most functions in hwloc/bitmap.h now return an int that may be negative > in case of failure to realloc/extend the internal storage of a bitmap. > - hwloc_obj_add_info() also returns an int in case allocations fail. > * Minor API changes > + Object attributes > - obj->memory is removed. > . local_memory and page_types attributes are now in obj->attr->numanode > . total_memory moves obj->total_memory. > - Objects do not have allowed_cpuset and allowed_nodeset anymore. > They are only available for the entire topology using > hwloc_topology_get_allowed_cpuset() and > hwloc_topology_get_allowed_nodeset(). > - Objects now have a "subtype" field that supersedes former "Type" and > "CoProcType" info attributes. > + Object and level depths are now signed ints. > + Object string printing and parsing > - hwloc_type_sscanf() deprecates the old hwloc_obj_type_sscanf(). > - hwloc_type_sscanf_as_depth() is added to convert a type name into > a level depth. > - hwloc_obj_cpuset_snprintf() is deprecated in favor of > hwloc_bitmap_snprintf(). > + Misc objects > - Replace hwloc_topology_insert_misc_object_by_cpuset() with > hwloc_topology_insert_group_object() to precisely specify the location > of an additional hierarchy level in the topology. > - Misc objects have their own level and depth to iterate over all of them. > - Misc objects may now only be inserted as a leaf object with > hwloc_topology_insert_misc_object() which deprecates > hwloc_topology_insert_misc_object_by_parent(). > + hwloc_topology_restrict() doesn't remove objects that contain memory > by default anymore. > - The list of existing restrict flags was modified. > + The discovery support array now contains some NUMA specific bits. > + XML export functions take an additional flags argument, > for instance for exporting XMLs that are compatible with hwloc 1.x. > + Functions diff_load_xml*(), diff_export_xml*() and diff_destroy() in > hwloc/diff.h do not need a topology as first parameter anymore. > + hwloc_parse_cpumap_file () superseded by > hwloc_linux_read_path_as_cpumask() > in hwloc/linux.h. > * New APIs and Features > + Add hwloc/shmem.h for sharing topologies between processes running on > the same machine (for reducing the memory footprint). > + Add the experimental netloc subproject. It is disabled by default > and can be enabled with --enable-netloc. > It currently brings command-line tools to gather and visualize the > topology of InfiniBand fabrics, and an API to convert such topologies > into Scotch architectures for process mapping. > See the documentation for details. > * Removed APIs and features > + Remove the online_cpuset from struct hwloc_obj. Offline PUs get unknown > topologies on Linux nowadays, and wrong topology on Solaris. Other OS > do not support them. And one cannot do much about them anyway. Just keep > them in complete_cpuset. > + Remove the now-unused "System" object type HWLOC_OBJ_SYSTEM, > defined to MACHINE for backward compatibility. > + The almost-unused "os_level" attribute has been removed from the > hwloc_obj structure. > + Remove the custom interface for assembling the topologies of different > nodes as well as the hwloc-assembler tools. > + hwloc_topology_set_fsroot() is removed, the environment variable > HWLOC_FSROOT may be used for the same remote testing/debugging purpose. > + Remove the deprecated hwloc_obj_snprintf(), hwloc_obj_type_of_string(), > hwloc_distribute[v](). > * Remove Myrinet Express interoperability (hwloc/myriexpress.h). > + Remove Kerrighed support from the Linux backend. > + Remove Tru64 (OSF/1) support. > - Remove HWLOC_MEMBIND_REPLICATE which wasn't available anywhere else. > * Tools > + lstopo and hwloc-info have a new --filter option matching the new > filtering API. > + lstopo can be given --children-layout=plain to force a basic displaying > of memory and normal children together below their parent. > + hwloc-distances was removed and replaced with lstopo --distances. > * Misc > + About Objects > - Linux OS devices do not have to be attached through PCI anymore, > for instance enabling the discovery of NVDIMM block devices. > - Add a SectorSize attribute to block OS devices on Linux. > - MemoryModule objects are not added by default because Misc objects are > filtered-out by default. > - Do not set PCI devices and bridges name automatically. Vendor and device > names are already in info attributes. > + Exports > - Exporting to synthetic now ignores I/O and Misc objects. > + PCI discovery > - Separate OS device discovery from PCI discovery. Only the latter is > disabled > with --disable-pci at configure time. Both may be disabled with > --disable-io. > - The `linuxpci' component is now renamed into `linuxio'. > - The old `libpci' component name from hwloc 1.6 is not supported anymore, > only the `pci' name from hwloc 1.7 is now recognized. > - The HWLOC_PCI_<domain>_<bus>_LOCALCPUS environment variables are > superseded > with a single HWLOC_PCI_LOCALITY where bus ranges may be specified. > + Components and discovery > - Add HWLOC_SYNTHETIC environment variable to enforce a synthetic topology > as if hwloc_topology_set_synthetic() had been called. > - HWLOC_COMPONENTS doesn't support xml or synthetic component attributes > anymore, they should be passed in HWLOC_XMLFILE or HWLOC_SYNTHETIC > instead. > - HWLOC_COMPONENTS takes precedence over other environment variables > for selecting components. > + Remove the dependency on libnuma on Linux. > + hwloc now requires a C99 compliant compiler. > > Changes since v2.0.0-beta1 include the addition of > hwloc_get_memory_parents_depth(), > the addition of hwloc_obj_type_is_normal() and friends, some new support bits, > and the removal of Myrinet Express interoperability. > > Changes from v1.11.9rc1 are included in v2.0.0rc1. > > Te final v1.11.9 will be released in the next days and there will be other > ultra-stable v1.11.x releases even after the final v2.0.0. > > -- > Brice > _______________________________________________ hwloc-announce mailing list hwloc-announce@lists.open-mpi.org https://lists.open-mpi.org/mailman/listinfo/hwloc-announce