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):


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()
> favor of
>       hwloc_topology_set_io_types_filter() with HWLOC_TYPE_FILTER_KEEP_ALL or
>   + 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

Reply via email to