Update hwloc to v1.11.12
[charm.git] / contrib / hwloc / NEWS
blob017ad0c1870e4b8574121914b0945df112e32d4b
1 Copyright © 2009 CNRS
2 Copyright © 2009-2018 Inria.  All rights reserved.
3 Copyright © 2009-2013 Université Bordeaux
4 Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
6 $COPYRIGHT$
8 Additional copyrights may follow
10 $HEADER$
12 ===========================================================================
14 This file contains the main features as well as overviews of specific
15 bug fixes (and other actions) for each version of hwloc since version
16 0.9 (as initially released as "libtopology", then re-branded to "hwloc"
17 in v0.9.1).
20 Version 1.11.12 (also included in 2.0.3)
21 ---------------
22 * Fix a corner case of hwloc_topology_restrict() where children would
23   become out-of-order.
24 * Fix the return length of export_xmlbuffer() functions to always
25   include the ending \0.
28 Version 1.11.11 (also included in 2.0.2)
29 ---------------
30 * Add support for Hygon Dhyana processors in the x86 backend,
31   thanks to Pu Wen for the patch.
32 * Fix symbol renaming to also rename internal components,
33   thanks to Evan Ramos for the patch.
34 * Fix build on HP-UX, thanks to Richard Lloyd for reporting the issues.
35 * Detect PCI link speed without being root on Linux >= 4.13.
38 Version 1.11.10 (also included in 2.0.1)
39 ---------------
40 * Fix detection of cores and hyperthreads on Mac OS X.
41 * Serialize pciaccess discovery to fix concurrent topology loads in
42   multiple threads.
43 * Fix first touch area memory binding on Linux when thread memory
44   binding is different.
45 * Some minor fixes to memory binding.
46 * Fix hwloc-dump-hwdata to only process SMBIOS information that correspond
47   to the KNL and KNM configuration.
48 * Add a heuristic for guessing KNL/KNM memory and cluster modes when
49   hwloc-dump-hwdata could not run as root earlier.
50 * Fix discovery of NVMe OS devices on Linux >= 4.0.
51 * Add get_area_memlocation() on Windows.
52 * Add CPUVendor, Model, ... attributes on Mac OS X.
55 Version 1.11.9
56 --------------
57 * Add support for Zhaoxin ZX-C and ZX-D processors in the x86 backend,
58   thanks to Jeff Zhao for the patch.
59 * Fix AMD Epyc 24-core L3 cache locality in the x86 backend.
60 * Don't crash in the x86 backend when the CPUID vendor string is unknown.
61 * Fix the missing pu discovery support bit on some OS.
62 * Fix the management of the lstopoStyle info attribute for custom colors.
63 * Add verbose warnings when failing to load hwloc v2.0+ XMLs.
66 Version 1.11.8
67 --------------
68 * Multiple Solaris improvements, thanks to Maureen Chew for the help:
69   + Detect caches on Sparc.
70   + Properly detect allowed/disallowed PUs and NUMA nodes with processor sets.
71   + Add hwloc_get_last_cpu_location() support for the current thread.
72 * Add support for CUDA compute capability 7.0 and fix support for 6.[12].
73 * Tools improvements
74   + Fix search for objects by physical index in command-line tools.
75   + Add missing "cpubind:get_thisthread_last_cpu_location" in the output
76     of hwloc-info --support.
77   + Add --pid and --name to specify target processes in hwloc-ps.
78   + Display thread names in lstopo and hwloc-ps on Linux.
79 * Doc improvements
80   + Add a FAQ entry about building on Windows.
81   + Install missing sub-manpage for hwloc_obj_add_info() and
82     hwloc_obj_get_info_by_name().
85 Version 1.11.7
86 --------------
87 * Fix hwloc-bind --membind for CPU-less NUMA nodes (again).
88   Thanks to Gilles Gouaillardet for reporting the issue.
89 * Fix a memory leak on IBM S/390 platforms running Linux.
90 * Fix a memory leak when forcing the x86 backend first on amd64/topoext
91   platforms running Linux.
92 * Command-line tools now support "hbm" instead "numanode" for filtering
93   only high-bandwidth memory nodes when selecting locations.
94   + hwloc-bind also support --hbm and --no-hbm for filtering only or
95     no HBM nodes.
96   Thanks to Nicolas Denoyelle for the suggestion.
97 * Add --children and --descendants to hwloc-info for listing object
98   children or object descendants of a specific type.
99 * Add --no-index, --index, --no-attrs, --attrs to disable/enable display
100   of index numbers or attributes in the graphical lstopo output.
101 * Try to gather hwloc-dump-hwdata output from all possible locations
102   in hwloc-gather-topology.
103 * Updates to the documentation of locations in hwloc(7) and
104   command-line tools manpages.
107 Version 1.11.6
108 --------------
109 * Make the Linux discovery about twice faster, especially on the CPU side,
110   by trying to avoid sysfs file accesses as much as possible.
111 * Add support for AMD Family 17h processors (Zen) SMT cores in the Linux
112   and x86 backends.
113 * Add the HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES flag (and the
114   HWLOC_THISSYSTEM_ALLOWED_RESOURCES environment variable) for reading the
115   set of allowed resources from the local operating system even if the
116   topology was loaded from XML or synthetic.
117 * Fix hwloc_bitmap_set/clr_range() for infinite ranges that do not
118   overlap currently defined ranges in the bitmap.
119 * Don't reset the lstopo zoom scale when moving the X11 window.
120 * lstopo now has --flags for manually setting topology flags.
121 * hwloc_get_depth_type() returns HWLOC_TYPE_DEPTH_UNKNOWN for Misc objects.
124 Version 1.11.5
125 --------------
126 * Add support for Knights Mill Xeon Phi, thanks to Piotr Luc for the patch.
127 * Reenable distance gathering on Solaris, disabled by mistake since v1.0.
128   Thanks to TU Wien for the help.
129 * Fix hwloc_get_*obj*_inside_cpuset() functions to ignore objects with
130   empty CPU sets, for instance, CPU-less NUMA nodes such as KNL MCDRAM.
131   Thanks to Nicolas Denoyelle for the report.
132 * Fix XML import of multiple distance matrices.
133 * Add a FAQ entry about "hwloc is only a structural model, it ignores
134   performance models, memory bandwidth, etc.?"
137 Version 1.11.4
138 --------------
139 * Add MemoryMode and ClusterMode attributes in the Machine object on KNL.
140   Add doc/examples/get-knl-modes.c for an example of retrieving them.
141   Thanks to Grzegorz Andrejczuk.
142 * Fix Linux build with -m32 with respect to libudev.
143   Thanks to Paul Hargrove for reporting the issue.
144 * Fix build with Visual Studio 2015, thanks to Eloi Gaudry for reporting
145   the issue and providing the patch.
146 * Don't forget to display OS device children in the graphical lstopo.
147 * Fix a memory leak on Solaris, thanks to Bryon Gloden for the patch.
148 * Properly handle realloc() failures, thanks to Bryon Gloden for reporting
149   the issue.
150 * Fix lstopo crash in ascii/fig/windows outputs when some objects have a
151   lstopoStyle info attribute.
154 Version 1.11.3
155 --------------
156 * Bug fixes
157   + Fix a memory leak on Linux S/390 hosts with books.
158   + Fix /proc/mounts parsing on Linux by using mntent.h.
159     Thanks to Nathan Hjelm for reporting the issue.
160   + Fix a x86 infinite loop on VMware due to the x2APIC feature being
161     advertised without actually being fully supported.
162     Thanks to Jianjun Wen for reporting the problem and testing the patch.
163   + Fix the return value of hwloc_alloc() on mmap() failure.
164     Thanks to Hugo Brunie for reporting the issue.
165   + Fix the return value of command-line tools in some error cases.
166   + Do not break individual thread bindings during x86 backend discovery in a
167     multithreaded process. Thanks to Farouk Mansouri for the report.
168   + Fix hwloc-bind --membind for CPU-less NUMA nodes.
169   + Fix some corner cases in the XML export/import of application userdata.
170 * API Improvements
171   + Add HWLOC_MEMBIND_BYNODESET flag so that membind() functions accept
172     either cpusets or nodesets.
173   + Add hwloc_get_area_memlocation() to check where pages are actually
174     allocated. Only implemented on Linux for now.
175     - There's no _nodeset() variant, but the new flag HWLOC_MEMBIND_BYNODESET
176       is supported.
177   + Make hwloc_obj_type_sscanf() parse back everything that may be outputted
178     by hwloc_obj_type_snprintf().
179 * Detection Improvements
180   + Allow the x86 backend to add missing cache levels, so that it completes
181     what the Solaris backend lacks.
182     Thanks to Ryan Zezeski for reporting the issue.
183   + Do not filter-out FibreChannel PCI adapters by default anymore.
184     Thanks to Matt Muggeridge for the report.
185   + Add support for CUDA compute capability 6.x.
186 * Tools
187   + Add --support to hwloc-info to list supported features, just like with
188     hwloc_topology_get_support().
189     - Also add --objects and --topology to explicitly switch between the
190       default modes.
191   + Add --tid to let hwloc-bind operate on individual threads on Linux.
192   + Add --nodeset to let hwloc-bind report memory binding as NUMA node sets.
193   + hwloc-annotate and lstopo don't drop application userdata from XMLs anymore.
194     - Add --cu to hwloc-annotate to drop these application userdata.
195   + Make the hwloc-dump-hwdata dump directory configurable through configure
196     options such as --runstatedir or --localstatedir.
197 * Misc Improvements
198   + Add systemd service template contrib/systemd/hwloc-dump-hwdata.service
199     for launching hwloc-dump-hwdata at boot on Linux.
200     Thanks to Grzegorz Andrejczuk.
201   + Add HWLOC_PLUGINS_BLACKLIST environment variable to prevent some plugins
202     from being loaded. Thanks to Alexandre Denis for the suggestion.
203   + Small improvements for various Windows build systems,
204     thanks to Jonathan L Peyton and Marco Atzeri.
207 Version 1.11.2
208 --------------
209 * Improve support for Intel Knights Landing Xeon Phi on Linux:
210   + Group local NUMA nodes of normal memory (DDR) and high-bandwidth memory
211     (MCDRAM) together through "Cluster" groups so that the local MCDRAM is
212     easy to find.
213     - See "How do I find the local MCDRAM NUMA node on Intel Knights
214       Landing Xeon Phi?" in the documentation.
215     - For uniformity across all KNL configurations, always have a NUMA node
216       object even if the host is UMA.
217   + Fix the detection of the memory-side cache:
218     - Add the hwloc-dump-hwdata superuser utility to dump SMBIOS information
219       into /var/run/hwloc/ as root during boot, and load this dumped
220       information from the hwloc library at runtime.
221     - See "Why do I need hwloc-dump-hwdata for caches on Intel Knights
222       Landing Xeon Phi?" in the documentation.
223   Thanks to Grzegorz Andrejczuk for the patches and for the help.
224 * The x86 and linux backends may now be combined for discovering CPUs
225   through x86 CPUID and memory from the Linux kernel.
226   This is useful for working around buggy CPU information reported by Linux
227   (for instance the AMD Bulldozer/Piledriver bug below).
228   Combination is enabled by passing HWLOC_COMPONENTS=x86 in the environment.
229 * Fix L3 cache sharing on AMD Opteron 63xx (Piledriver) and 62xx (Bulldozer)
230   in the x86 backend. Thanks to many users who helped.
231 * Fix the overzealous L3 cache sharing fix added to the x86 backend in 1.11.1
232   for AMD Opteron 61xx (Magny-Cours) processors.
233 * The x86 backend may now add the info attribute Inclusive=0 or 1 to caches
234   it discovers, or to caches discovered by other backends earlier.
235   Thanks to Guillaume Beauchamp for the patch.
236 * Fix the management on alloc_membind() allocation failures on AIX, HP-UX
237   and OSF/Tru64.
238 * Fix spurious failures to load with ENOMEM on AIX in case of Misc objects
239   below PUs.
240 * lstopo improvements in X11 and Windows graphical mode:
241   + Add + - f 1 shortcuts to manually zoom-in, zoom-out, reset the scale,
242     or fit the entire window.
243   + Display all keyboard shortcuts in the console.
244 * Debug messages may be disabled at runtime by passing HWLOC_DEBUG_VERBOSE=0
245   in the environment when --enable-debug was passed to configure.
246 * Add a FAQ entry "What are these Group objects in my topology?".
249 Version 1.11.1
250 --------------
251 * Detection fixes
252   + Hardwire the topology of Fujitsu K-computer, FX10, FX100 servers to
253     workaround buggy Linux kernels.
254     Thanks to Takahiro Kawashima and Gilles Gouaillardet.
255   + Fix L3 cache information on AMD Opteron 61xx Magny-Cours processors
256     in the x86 backend. Thanks to Guillaume Beauchamp for the patch.
257   + Detect block devices directly attached to PCI without a controller,
258     for instance NVMe disks. Thanks to Barry M. Tannenbaum.
259   + Add the PCISlot attribute to all PCI functions instead of only the
260     first one.
261 * Miscellaneous internal fixes
262   + Ignore PCI bridges that could fail assertions by reporting buggy
263     secondary-subordinate bus numbers
264     Thanks to George Bosilca for reporting the issue.
265   + Fix an overzealous assertion when inserting an intermediate Group object
266     while Groups are totally ignored.
267   + Fix a memory leak on Linux on AMD processors with dual-core compute units.
268     Thanks to Bob Benner.
269   + Fix a memory leak on failure to load a xml diff file.
270   + Fix some segfaults when inputting an invalid synthetic description.
271   + Fix a segfault when plugins fail to find core symbols.
272     Thanks to Guy Streeter.
273 * Many fixes and improvements in the Windows backend:
274   + Fix the discovery of more than 32 processors and multiple processor
275     groups. Thanks to Barry M. Tannenbaum for the help.
276   + Add thread binding set support in case of multiple process groups.
277   + Add thread binding get support.
278   + Add get_last_cpu_location() support for the current thread.
279   + Disable the unsupported process binding in case of multiple processor
280     groups.
281   + Fix/update the Visual Studio support under contrib/windows.
282     Thanks to Eloi Gaudry for the help.
283 * Tools fixes
284   + Fix a segfault when displaying logical indexes in the graphical lstopo.
285     Thanks to Guillaume Mercier for reporting the issue.
286   + Fix lstopo linking with X11 libraries, for instance on Mac OS X.
287     Thanks to Scott Atchley and Pierre Ramet for reporting the issue.
288   + hwloc-annotate, hwloc-diff and hwloc-patch do not drop unavailable
289     resources from the output anymore and those may be annotated as well.
290   + Command-line tools may now import XML from the standard input with -i -.xml
291   + Add missing documentation for the hwloc-info --no-icaches option.
294 Version 1.11.0
295 --------------
296 * API
297   + Socket objects are renamed into Package to align with the terminology
298     used by processor vendors. The old HWLOC_OBJ_SOCKET type and "Socket"
299     name are still supported for backward compatibility.
300   + HWLOC_OBJ_NODE is replaced with HWLOC_OBJ_NUMANODE for clarification.
301     HWLOC_OBJ_NODE is still supported for backward compatibility.
302     "Node" and "NUMANode" strings are supported as in earlier releases.
303 * Detection improvements
304   + Add support for Intel Knights Landing Xeon Phi.
305     Thanks to Grzegorz Andrejczuk and Lukasz Anaczkowski.
306   + Add Vendor, Model, Revision, SerialNumber, Type and LinuxDeviceID
307     info attributes to Block OS devices on Linux. Thanks to Vineet Pedaballe
308     for the help.
309     - Add --disable-libudev to avoid dependency on the libudev library.
310   + Add "MemoryModule" Misc objects with information about DIMMs, on Linux
311     when privileged and when I/O is enabled.
312     Thanks to Vineet Pedaballe for the help.
313   + Add a PCISlot attribute to PCI devices on Linux when supported to
314     identify the physical PCI slot where the board is plugged.
315   + Add CPUStepping info attribute on x86 processors,
316     thanks to Thomas Röhl for the suggestion.
317   + Ignore the device-tree on non-Power architectures to avoid buggy
318     detection on ARM. Thanks to Orion Poplawski for reporting the issue.
319   + Work-around buggy Xeon E5v3 BIOS reporting invalid PCI-NUMA affinity
320     for the PCI links on the second processor.
321   + Add support for CUDA compute capability 5.x, thanks Benjamin Worpitz.
322   + Many fixes to the x86 backend
323     - Add L1i and fix L2/L3 type on old AMD processors without topoext support.
324     - Fix Intel CPU family and model numbers when basic family isn't 6 or 15.
325     - Fix package IDs on recent AMD processors.
326     - Fix misc issues due to incomplete APIC IDs on x2APIC processors.
327     - Avoid buggy discovery on old SGI Altix UVs with non-unique APIC IDs.
328   + Gather total machine memory on NetBSD.
329 * Tools
330   + lstopo
331     - Collapse identical PCI devices unless --no-collapse is given.
332       This avoids gigantic outputs when a PCI device contains dozens of
333       identical virtual functions.
334     - The ASCII art output is now called "ascii", for instance in
335       "lstopo -.ascii".
336       The former "txt" extension is retained for backward compatibility.
337     - Automatically scales graphical box width to the inner text in Cairo,
338       ASCII and Windows outputs.
339     - Add --rect to lstopo to force rectangular layout even for NUMA nodes.
340     - Add --restrict-flags to configure the behavior of --restrict.
341     - Objects may have a "Type" info attribute to specify a better type name
342       and display it in lstopo.
343     - Really export all verbose information to the given output file.
344   + hwloc-annotate
345     - May now operate on all types of objects, including I/O.
346     - May now insert Misc objects in the topology.
347     - Do not drop instruction caches and I/O devices from the output anymore.
348   + Fix lstopo path in hwloc-gather-topology after install.
349 * Misc
350   + Fix hwloc/cudart.h for machines with multiple PCI domains,
351     thanks to Imre Kerr for reporting the problem.
352   + Fix PCI Bridge-specific depth attribute.
353   + Fix hwloc_bitmap_intersect() for two infinite bitmaps.
354   + Fix some corner cases in the building of levels on large NUMA machines
355     with non-uniform NUMA groups and I/Os.
356   + Improve the performance of object insertion by cpuset for large
357     topologies.
358   + Prefix verbose XML import errors with the source name.
359   + Improve pkg-config checks and error messages.
360   + Fix excluding after a component with an argument in the HWLOC_COMPONENTS
361     environment variable.
362 * Documentation
363   + Fix the recommended way in documentation and examples to allocate memory
364     on some node, it should use HWLOC_MEMBIND_BIND.
365     Thanks to Nicolas Bouzat for reporting the issue.
366   + Add a "Miscellaneous objects" section in the documentation.
367   + Add a FAQ entry "What happens to my topology if I disable symmetric
368     multithreading, hyper-threading, etc. ?" to the documentation.
371 Version 1.10.1
372 --------------
373 * Actually remove disallowed NUMA nodes from nodesets when the whole-system
374   flag isn't enabled.
375 * Fix the gathering of PCI domains. Thanks to James Custer for reporting
376   the issue and providing a patch.
377 * Fix the merging of identical parent and child in presence of Misc objects.
378   Thanks to Dave Love for reporting the issue.
379 * Fix some misordering of children when merging with ignore_keep_structure()
380   in partially allowed topologies.
381 * Fix an overzealous assertion in the debug code when running on a single-PU
382   host with I/O. Thanks to Thomas Van Doren for reporting the issue.
383 * Don't forget to setup NUMA node object nodesets in x86 backend (for BSDs)
384   and OSF/Tru64 backend.
385 * Fix cpuid-x86 build error with gcc -O3 on x86-32. Thanks to Thomas Van Doren
386   for reporting the issue.
387 * Fix support for future very large caches in the x86 backend.
388 * Fix vendor/device names for SR-IOV PCI devices on Linux.
389 * Fix an unlikely crash in case of buggy hierarchical distance matrix.
390 * Fix PU os_index on some AIX releases. Thanks to Hendryk Bockelmann and
391   Erik Schnetter for helping debugging.
392 * Fix hwloc_bitmap_isincluded() in case of infinite sets.
393 * Change hwloc-ls.desktop into a lstopo.desktop and only install it if
394   lstopo is built with Cairo/X11 support. It cannot work with a non-graphical
395   lstopo or hwloc-ls.
396 * Add support for the renaming of Socket into Package in future releases.
397 * Add support for the replacement of HWLOC_OBJ_NODE with HWLOC_OBJ_NUMANODE
398   in future releases.
399 * Clarify the documentation of distance matrices in hwloc.h and in the manpage
400   of the hwloc-distances. Thanks to Dave Love for the suggestion.
401 * Improve some error messages by displaying more information about the
402   hwloc library in use.
403 * Document how to deal with the ABI break when upgrading to the upcoming 2.0
404   See "How do I handle ABI breaks and API upgrades ?" in the FAQ.
407 Version 1.10.0
408 --------------
409 * API
410   + Add hwloc_topology_export_synthetic() to export a topology to a
411     synthetic string without using lstopo. See the Synthetic topologies
412     section in the documentation.
413   + Add hwloc_topology_set/get_userdata() to let the application save
414     a private pointer in the topology whenever it needs a way to find
415     its own object corresponding to a topology.
416   + Add hwloc_get_numanode_obj_by_os_index() and document that this function
417     as well as hwloc_get_pu_obj_by_os_index() are good at converting
418     nodesets and cpusets into objects.
419   + hwloc_distrib() does not ignore any objects anymore when there are
420     too many of them. They get merged with others instead.
421     Thanks to Tim Creech for reporting the issue.
422 * Tools
423   + hwloc-bind --get <command-line> now executes the command after displaying
424     the binding instead of ignoring the command entirely.
425     Thanks to John Donners for the suggestion.
426   + Clarify that memory sizes shown in lstopo are local by default
427     unless specified (total memory added in the root object).
428 * Synthetic topologies
429   + Synthetic topology descriptions may now specify attributes such as
430     memory sizes and OS indexes. See the Synthetic topologies section
431     in the documentation.
432   + lstopo now exports in this fully-detailed format by default.
433     The new option --export-synthetic-flags may be used to revert
434     back the old format.
435 * Documentation
436   + Add the doc/examples/ subdirectory with several real-life examples,
437     including the already existing hwloc-hello.C for basics.
438     Thanks to Rob Aulwes for the suggestion.
439   + Improve the documentation of CPU and memory binding in the API.
440   + Add a FAQ entry about operating system errors, especially on AMD
441     platforms with buggy cache information.
442   + Add a FAQ entry about loading many topologies in a single program.
443 * Misc
444   + Work around buggy Linux kernels reporting 2 sockets instead
445     1 socket with 2 NUMA nodes for each Xeon E5 v3 (Haswell) processor.
446   + pciutils/libpci support is now removed since libpciaccess works
447     well and there's also a Linux-specific PCI backend. For the record,
448     pciutils was GPL and therefore disabled by default since v1.6.2.
449   + Add --disable-cpuid configure flag to work around buggy processor
450     simulators reporting invalid CPUID information.
451     Thanks for Andrew Friedley for reporting the issue.
452   + Fix a racy use of libltdl when manipulating multiple topologies in
453     different threads.
454     Thanks to Andra Hugo for reporting the issue and testing patches.
455   + Fix some build failures in private/misc.h.
456     Thanks to Pavan Balaji and Ralph Castain for the reports.
457   + Fix failures to detect X11/Xutil.h on some Solaris platforms.
458     Thanks to Siegmar Gross for reporting the failure.
459   + The plugin ABI has changed, this release will not load plugins
460     built against previous hwloc releases.
463 Version 1.9.1
464 -------------
465 * Fix a crash when the PCI locality is invalid. Attach to the root object
466   instead. Thanks to Nicolas Denoyelle for reporting the issue.
467 * Fix -f in lstopo manpage. Thanks to Jirka Hladky for reporting the issue.
468 * Fix hwloc_obj_type_sscanf() and others when strncasecmp() is not properly
469   available. Thanks to Nick Papior Andersen for reporting the problem.
470 * Mark Linux file descriptors as close-on-exec to avoid leaks on exec.
471 * Fix some minor memory leaks.
474 Version 1.9.0
475 -------------
476 * API
477   + Add hwloc_obj_type_sscanf() to extend hwloc_obj_type_of_string() with
478     type-specific attributes such as Cache/Group depth and Cache type.
479     hwloc_obj_type_of_string() is moved to hwloc/deprecated.h.
480   + Add hwloc_linux_get_tid_last_cpu_location() for retrieving the
481     last CPU where a Linux thread given by TID ran.
482   + Add hwloc_distrib() to extend the old hwloc_distribute[v]() functions.
483     hwloc_distribute[v]() is moved to hwloc/deprecated.h.
484   + Don't mix total and local memory when displaying verbose object attributes
485     with hwloc_obj_attr_snprintf() or in lstopo.
486 * Backends
487   + Add CPUVendor, CPUModelNumber and CPUFamilyNumber info attributes for
488     x86, ia64 and Xeon Phi sockets on Linux, to extend the x86-specific
489     support added in v1.8.1. Requested by Ralph Castain.
490   + Add many CPU- and Platform-related info attributes on ARM and POWER
491     platforms, in the Machine and Socket objects.
492   + Add CUDA info attributes describing the number of multiprocessors and
493     cores and the size of the global, shared and L2 cache memories in CUDA
494     OS devices.
495   + Add OpenCL info attributes describing the number of compute units and
496     the global memory size in OpenCL OS devices.
497   + The synthetic backend now accepts extended types such as L2Cache, L1i or
498     Group3. lstopo also exports synthetic strings using these extended types.
499 * Tools
500   + lstopo
501     - Do not overwrite output files by default anymore.
502       Pass -f or --force to enforce it.
503     - Display OpenCL, CUDA and Xeon Phi numbers of cores and memory sizes
504       in the graphical output.
505     - Fix export to stdout when specifying a Cairo-based output type
506       with --of.
507   + hwloc-ps
508     - Add -e or --get-last-cpu-location to report where processes/threads
509       run instead of where they are bound.
510     - Report locations as likely-more-useful objects such as Cores or Sockets
511       instead of Caches when possible.
512   + hwloc-bind
513     - Fix failure on Windows when not using --pid.
514     - Add -e as a synonym to --get-last-cpu-location.
515   + hwloc-distrib
516     - Add --reverse to distribute using last objects first and singlify
517       into last bits first. Thanks to Jirka Hladky for the suggestion.
518   + hwloc-info
519     - Report unified caches when looking for data or instruction cache
520       ancestor objects.
521 * Misc
522   + Add experimental Visual Studio support under contrib/windows.
523     Thanks to Eloi Gaudry for his help and for providing the first draft.
524   + Fix some overzealous assertions and warnings about the ordering of
525     objects on a level with respect to cpusets. The ordering is only
526     guaranteed for complete cpusets (based on the first bit in sets).
527   + Fix some memory leaks when importing xml diffs and when exporting a
528     "too complex" entry.
531 Version 1.8.1
532 -------------
533 * Fix the cpuid code on Windows 64bits so that the x86 backend gets
534   enabled as expected and can populate CPU information.
535   Thanks to Robin Scher for reporting the problem.
536 * Add CPUVendor/CPUModelNumber/CPUFamilyNumber attributes when running
537   on x86 architecture. Thanks to Ralph Castain for the suggestion.
538 * Work around buggy BIOS reporting duplicate NUMA nodes on Linux.
539   Thanks to Jeff Becker for reporting the problem and testing the patch.
540 * Add a name to the lstopo graphical window. Thanks to Michael Prokop
541   for reporting the issue.
544 Version 1.8.0
545 -------------
546 * New components
547   + Add the "linuxpci" component that always works on Linux even when
548     libpciaccess and libpci aren't available (and even with a modified
549     file-system root). By default the old "pci" component runs first
550     because "linuxpci" lacks device names (obj->name is always NULL).
551 * API
552   + Add the topology difference API in hwloc/diff.h for manipulating
553     many similar topologies.
554   + Add hwloc_topology_dup() for duplicating an entire topology.
555   + hwloc.h and hwloc/helper.h have been reorganized to clarify the
556     documentation sections. The actual inline code has moved out of hwloc.h
557     into the new hwloc/inlines.h.
558   + Deprecated functions are now in hwloc/deprecated.h, and not in the
559     official documentation anymore.
560 * Tools
561   + Add hwloc-diff and hwloc-patch tools together with the new diff API.
562   + Add hwloc-compress-dir to (de)compress an entire directory of XML files
563     using hwloc-diff and hwloc-patch.
564   + Object colors in the graphical output of lstopo may be changed by adding
565     a "lstopoStyle" info attribute. See CUSTOM COLORS in the lstopo(1) manpage
566     for details. Thanks to Jirka Hladky for discussing the idea.
567   + hwloc-gather-topology may now gather I/O-related files on Linux when
568     --io is given. Only the linuxpci component supports discovering I/O
569     objects from these extended tarballs.
570   + hwloc-annotate now supports --ri to remove/replace info attributes with
571     a given name.
572   + hwloc-info supports "root" and "all" special locations for dumping
573     information about the root object.
574   + lstopo now supports --append-legend to append custom lines of text
575     to the legend in the graphical output. Thanks to Jirka Hladky for
576     discussing the idea.
577   + hwloc-calc and friends have a more robust parsing of locations given
578     on the command-line and they report useful error messages about it.
579   + Add --whole-system to hwloc-bind, hwloc-calc, hwloc-distances and
580     hwloc-distrib, and add --restrict to hwloc-bind for uniformity among
581     tools.
582 * Misc
583   + Calling hwloc_topology_load() or hwloc_topology_set_*() on an already
584     loaded topology now returns an error (deprecated since release 1.6.1).
585   + Fix the initialisation of cpusets and nodesets in Group objects added
586     when inserting PCI hostbridges.
587   + Never merge Group objects that were added explicitly by the user with
588     hwloc_custom_insert_group_object_by_parent().
589   + Add a sanity check during dynamic plugin loading to prevent some
590     crashes when hwloc is dynamically loaded by another plugin mechanisms.
591   + Add --with-hwloc-plugins-path to specify the install/load directories
592     of plugins.
593   + Add the MICSerialNumber info attribute to the root object when running
594     hwloc inside a Xeon Phi to match the same attribute in the MIC OS device
595     when running in the host.
598 Version 1.7.2
599 -------------
600 * Do not create invalid block OS devices on very old Linux kernel such
601   as RHEL4 2.6.9.
602 * Fix PCI subvendor/device IDs.
603 * Fix the management of Misc objects inserted by parent.
604   Thanks to Jirka Hladky for reporting the problem.
605 * Add a Port<n>State into attribute to OpenFabrics OS devices.
606 * Add a MICSerialNumber info attribute to Xeon PHI/MIC OS devices.
607 * Improve verbose error messages when failing to load from XML.
610 Version 1.7.1
611 -------------
612 * Fix a failed assertion in the distance grouping code when loading a XML
613   file that already contains some groups.
614   Thanks to Laercio Lima Pilla for reporting the problem.
615 * Remove unexpected Group objects when loading XML topologies with I/O
616   objects and NUMA distances.
617   Thanks to Elena Elkina for reporting the problem and testing patches.
618 * Fix PCI link speed discovery when using libpciaccess.
619 * Fix invalid libpciaccess virtual function device/vendor IDs when using
620   SR-IOV PCI devices on Linux.
621 * Fix GL component build with old NVCtrl releases.
622   Thanks to Jirka Hladky for reporting the problem.
623 * Fix embedding breakage caused by libltdl.
624   Thanks to Pavan Balaji for reporting the problem.
625 * Always use the system-wide libltdl instead of shipping one inside hwloc.
626 * Document issues when enabling plugins while embedding hwloc in another
627   project, in the documentation section Embedding hwloc in Other Software.
628 * Add a FAQ entry "How to get useful topology information on NetBSD?"
629   in the documentation.
630 * Somes fixes in the renaming code for embedding.
631 * Miscellaneous minor build fixes.
634 Version 1.7.0
635 -------------
636 * New operating system backends
637   + Add BlueGene/Q compute node kernel (CNK) support. See the FAQ in the
638     documentation for details. Thanks to Jeff Hammond, Christopher Samuel
639     and Erik Schnetter for their help.
640   + Add NetBSD support, thanks to Aleksej Saushev.
641 * New I/O device discovery
642   + Add co-processor OS devices such as "mic0" for Intel Xeon Phi (MIC)
643     on Linux. Thanks to Jerome Vienne for helping.
644   + Add co-processor OS devices such as "cuda0" for NVIDIA CUDA-capable GPUs.
645   + Add co-processor OS devices such as "opencl0d0" for OpenCL GPU devices
646     on the AMD OpenCL implementation.
647   + Add GPU OS devices such as ":0.0" for NVIDIA X11 displays.
648   + Add GPU OS devices such as "nvml0" for NVIDIA GPUs.
649     Thanks to Marwan Abdellah and Stefan Eilemann for helping.
650   These new OS devices have some string info attributes such as CoProcType,
651   GPUModel, etc. to better identify them.
652   See the I/O Devices and Attributes documentation sections for details.
653 * New components
654   + Add the "opencl", "cuda", "nvml" and "gl" components for I/O device
655     discovery.
656   + "nvml" also improves the discovery of NVIDIA GPU PCIe link speed.
657   All of these new components may be built as plugins. They may also be
658   disabled entirely by passing --disable-opencl/cuda/nvml/gl to configure.
659   See the I/O Devices, Components and Plugins, and FAQ documentation
660   sections for details.
661 * API
662   + Add hwloc_topology_get_flags().
663   + Add hwloc/plugins.h for building external plugins.
664     See the Adding new discovery components and plugins section.
665 * Interoperability
666   + Add hwloc/opencl.h, hwloc/nvml.h, hwloc/gl.h and hwloc/intel-mic.h
667     to retrieve the locality of OS devices that correspond to AMD OpenCL
668     GPU devices or indexes, to NVML devices or indexes, to NVIDIA X11
669     displays, or to Intel Xeon Phi (MIC) device indexes.
670   + Add new helpers in hwloc/cuda.h and hwloc/cudart.h to convert
671     between CUDA devices or indexes and hwloc OS devices.
672   + Add hwloc_ibv_get_device_osdev() and clarify the requirements
673     of the OpenFabrics Verbs helpers in hwloc/openfabrics-verbs.h.
674 * Tools
675   + hwloc-info is not only a synonym of lstopo -s anymore, it also
676     dumps information about objects given on the command-line.
677 * Documentation
678   + Add a section "Existing components and plugins".
679   + Add a list of common OS devices in section "Software devices".
680   + Add a new FAQ entry "Why is lstopo slow?" about lstopo slowness
681     issues because of GPUs.
682   + Clarify the documentation of inline helpers in hwloc/myriexpress.h
683     and hwloc/openfabrics-verbs.h.
684 * Misc
685   + Improve cache detection on AIX.
686   + The HWLOC_COMPONENTS variable now excludes the components whose
687     names are prefixed with '-'.
688   + lstopo --ignore PU now works when displaying the topology in
689     graphical and textual mode (not when exporting to XML).
690   + Make sure I/O options always appear in lstopo usage, not only when
691     using pciutils/libpci.
692   + Remove some unneeded Linux specific includes from some interoperability
693     headers.
694   + Fix some inconsistencies in hwloc-distrib and hwloc-assembler-remote
695     manpages. Thanks to Guy Streeter for the report.
696   + Fix a memory leak on AIX when getting memory binding.
697   + Fix many small memory leaks on Linux.
698   + The `libpci' component is now called `pci' but the old name is still
699     accepted in the HWLOC_COMPONENTS variable for backward compatibility.
702 Version 1.6.2
703 -------------
704 * Use libpciaccess instead of pciutils/libpci by default for I/O discovery.
705   pciutils/libpci is only used if --enable-libpci is given to configure
706   because its GPL license may taint hwloc. See the Installation section
707   in the documentation for details.
708 * Fix get_cpubind on Solaris when bound to a single PU with
709   processor_bind(). Thanks to Eugene Loh for reporting the problem
710   and providing a patch.
713 Version 1.6.1
714 -------------
715 * Fix some crash or buggy detection in the x86 backend when Linux
716   cgroups/cpusets restrict the available CPUs.
717 * Fix the pkg-config output with --libs --static.
718   Thanks to Erik Schnetter for reporting one of the problems.
719 * Fix the output of hwloc-calc -H --hierarchical when using logical
720   indexes in the output.
721 * Calling hwloc_topology_load() multiple times on the same topology
722   is officially deprecated. hwloc will warn in such cases.
723 * Add some documentation about existing plugins/components, package
724   dependencies, and I/O devices specification on the command-line.
727 Version 1.6.0
728 -------------
729 * Major changes
730   + Reorganize the backend infrastructure to support dynamic selection
731     of components and dynamic loading of plugins. For details, see the
732     new documentation section Components and plugins.
733     - The HWLOC_COMPONENTS variable lets one replace the default discovery
734       components.
735     - Dynamic loading of plugins may be enabled with --enable-plugins
736       (except on AIX and Windows). It will build libxml2 and libpci
737       support as separated modules. This helps reducing the dependencies
738       of the core hwloc library when distributed as a binary package.
739 * Backends
740   + Add CPUModel detection on Darwin and x86/FreeBSD.
741     Thanks to Robin Scher for providing ways to implement this.
742   + The x86 backend now adds CPUModel info attributes to socket objects
743     created by other backends that do not natively support this attribute.
744   + Fix detection on FreeBSD in case of cpuset restriction. Thanks to
745     Sebastian Kuzminsky for reporting the problem.
746 * XML
747   + Add hwloc_topology_set_userdata_import/export_callback(),
748     hwloc_export_obj_userdata() and _userdata_base64() to let
749     applications specify how to save/restore the custom data they placed
750     in the userdata private pointer field of hwloc objects.
751 * Tools
752   + Add hwloc-annotate program to add string info attributes to XML
753     topologies.
754   + Add --pid-cmd to hwloc-ps to append the output of a command to each
755     PID line. May be used for showing Open MPI process ranks, see the
756     hwloc-ps(1) manpage for details.
757   + hwloc-bind now exits with an error if binding fails; the executable
758     is not launched unless binding suceeeded or --force was given.
759   + Add --quiet to hwloc-calc and hwloc-bind to hide non-fatal error
760     messages.
761   + Fix command-line pid support in windows tools.
762   + All programs accept --verbose as a synonym to -v.
763 * Misc
764   + Fix some DIR descriptor leaks on Linux.
765   + Fix I/O device lists when some were filtered out after a XML import.
766   + Fix the removal of I/O objects when importing a I/O-enabled XML topology
767     without any I/O topology flag.
768   + When merging objects with HWLOC_IGNORE_TYPE_KEEP_STRUCTURE or
769     lstopo --merge, compare object types before deciding which one of two
770     identical object to remove (e.g. keep sockets in favor of caches).
771   + Add some GUID- and LID-related info attributes to OpenFabrics
772     OS devices.
773   + Only add CPUType socket attributes on Solaris/Sparc. Other cases
774     don't report reliable information (Solaris/x86), and a replacement
775     is available as the Architecture string info in the Machine object.
776   + Add missing Backend string info on Solaris in most cases.
777   + Document object attributes and string infos in a new Attributes
778     section in the documentation.
779   + Add a section about Synthetic topologies in the documentation.
782 Version 1.5.2 (some of these changes are in v1.6.2 but not in v1.6)
783 -------------
784 * Use libpciaccess instead of pciutils/libpci by default for I/O discovery.
785   pciutils/libpci is only used if --enable-libpci is given to configure
786   because its GPL license may taint hwloc. See the Installation section
787   in the documentation for details.
788 * Fix get_cpubind on Solaris when bound to a single PU with
789   processor_bind(). Thanks to Eugene Loh for reporting the problem
790   and providing a patch.
791 * Fix some DIR descriptor leaks on Linux.
792 * Fix I/O device lists when some were filtered out after a XML import.
793 * Add missing Backend string info on Solaris in most cases.
794 * Fix the removal of I/O objects when importing a I/O-enabled XML topology
795   without any I/O topology flag.
796 * Fix the output of hwloc-calc -H --hierarchical when using logical
797   indexes in the output.
798 * Fix the pkg-config output with --libs --static.
799   Thanks to Erik Schnetter for reporting one of the problems.
802 Version 1.5.1
803 -------------
804 * Fix block OS device detection on Linux kernel 3.3 and later.
805   Thanks to Guy Streeter for reporting the problem and testing the fix.
806 * Fix the cpuid code in the x86 backend (for FreeBSD). Thanks to
807   Sebastian Kuzminsky for reporting problems and testing patches.
808 * Fix 64bit detection on FreeBSD.
809 * Fix some corner cases in the management of the thissystem flag with
810   respect to topology flags and environment variables.
811 * Fix some corner cases in command-line parsing checks in hwloc-distrib
812   and hwloc-distances.
813 * Make sure we do not miss some block OS devices on old Linux kernels
814   when a single PCI device has multiple IDE hosts/devices behind it.
815 * Do not disable I/O devices or instruction caches in hwloc-assembler output.
818 Version 1.5.0
819 -------------
820 * Backends
821   + Do not limit the number of processors to 1024 on Solaris anymore.
822   + Gather total machine memory on FreeBSD. Thanks to Cyril Roelandt.
823   + XML topology files do not depend on the locale anymore. Float numbers
824     such as NUMA distances or PCI link speeds now always use a dot as a
825     decimal separator.
826   + Add instruction caches detection on Linux, AIX, Windows and Darwin.
827   + Add get_last_cpu_location() support for the current thread on AIX.
828   + Support binding on AIX when threads or processes were bound with
829     bindprocessor(). Thanks to Hendryk Bockelmann for reporting the issue
830     and testing patches, and to Farid Parpia for explaining the binding
831     interfaces.
832   + Improve AMD topology detection in the x86 backend (for FreeBSD) using
833     the topoext feature.
834 * API
835   + Increase HWLOC_API_VERSION to 0x00010500 so that API changes may be
836     detected at build-time.
837   + Add a cache type attribute describind Data, Instruction and Unified
838     caches. Caches with different types but same depth (for instance L1d
839     and L1i) are placed on different levels.
840   + Add hwloc_get_cache_type_depth() to retrieve the hwloc level depth of
841     of the given cache depth and type, for instance L1i or L2.
842     It helps  disambiguating the case where hwloc_get_type_depth() returns
843     HWLOC_TYPE_DEPTH_MULTIPLE.
844   + Instruction caches are ignored unless HWLOC_TOPOLOGY_FLAG_ICACHES is
845     passed to hwloc_topology_set_flags() before load.
846   + Add hwloc_ibv_get_device_osdev_by_name() OpenFabrics helper in
847     openfabrics-verbs.h to find the hwloc OS device object corresponding to
848     an OpenFabrics device.
849 * Tools
850   + Add lstopo-no-graphics, a lstopo built without graphical support to
851     avoid dependencies on external libraries such as Cairo and X11. When
852     supported, graphical outputs are only available in the original lstopo
853     program.
854     - Packagers splitting lstopo and lstopo-no-graphics into different
855       packages are advised to use the alternatives system so that lstopo
856       points to the best available binary.
857   + Instruction caches are enabled in lstopo by default. Use --no-icaches
858     to disable them.
859   + Add -t/--threads to show threads in hwloc-ps.
860 * Removal of obsolete components
861   + Remove the old cpuset interface (hwloc/cpuset.h) which is deprecated and
862     superseded by the bitmap API (hwloc/bitmap.h) since v1.1.
863     hwloc_cpuset and nodeset types are still defined, but all hwloc_cpuset_*
864     compatibility wrappers are now gone.
865   + Remove Linux libnuma conversion helpers for the deprecated and
866     broken nodemask_t interface.
867   + Remove support for "Proc" type name, it was superseded by "PU" in v1.0.
868   + Remove hwloc-mask symlinks, it was replaced by hwloc-calc in v1.0.
869 * Misc
870   + Fix PCIe 3.0 link speed computation.
871   + Non-printable characters are dropped from strings during XML export.
872   + Fix importing of escaped characters with the minimalistic XML backend.
873   + Assert hwloc_is_thissystem() in several I/O related helpers.
874   + Fix some memory leaks in the x86 backend for FreeBSD.
875   + Minor fixes to ease native builds on Windows.
876   + Limit the number of retries when operating on all threads within a
877     process on Linux if the list of threads is heavily getting modified.
880 Version 1.4.3
881 -------------
882 * This release is only meant to fix the pciutils license issue when upgrading
883   to hwloc v1.5 or later is not possible. It contains several other minor
884   fixes but ignores many of them that are only in v1.5 or later.
885 * Use libpciaccess instead of pciutils/libpci by default for I/O discovery.
886   pciutils/libpci is only used if --enable-libpci is given to configure
887   because its GPL license may taint hwloc. See the Installation section
888   in the documentation for details.
889 * Fix PCIe 3.0 link speed computation.
890 * Fix importing of escaped characters with the minimalistic XML backend.
891 * Fix a memory leak in the x86 backend.
894 Version 1.4.2
895 -------------
896 * Fix build on Solaris 9 and earlier when fabsf() is not a compiler
897   built-in. Thanks to Igor Galić for reporting the problem.
898 * Fix support for more than 32 processors on Windows. Thanks to Hartmut
899   Kaiser for reporting the problem.
900 * Fix process-wide binding and cpulocation routines on Linux when some
901   threads disappear in the meantime. Thanks to Vlad Roubtsov for reporting
902   the issue.
903 * Make installed scripts executable. Thanks to Jirka Hladky for reporting
904   the problem.
905 * Fix libtool revision management when building for Windows. This fix was
906   also released as hwloc v1.4.1.1 Windows builds. Thanks to Hartmut Kaiser
907   for reporting the problem.
908 * Fix the __hwloc_inline keyword in public headers when compiling with a
909   C++ compiler.
910 * Add Port info attribute to network OS devices inside OpenFabrics PCI
911   devices so as to identify which interface corresponds to which port.
912 * Document requirements for interoperability helpers: I/O devices discovery
913   is required for some of them; the topology must match the current host
914   for most of them.
917 Version 1.4.1
918 -------------
919 * This release contains all changes from v1.3.2.
920 * Fix hwloc_alloc_membind, thanks Karl Napf for reporting the issue.
921 * Fix memory leaks in some get_membind() functions.
922 * Fix helpers converting from Linux libnuma to hwloc (hwloc/linux-libnuma.h)
923   in case of out-of-order NUMA node ids.
924 * Fix some overzealous assertions in the distance grouping code.
925 * Workaround BIOS reporting empty I/O locality in CUDA and OpenFabrics
926   helpers on Linux. Thanks to Albert Solernou for reporting the problem.
927 * Install a valgrind suppressions file hwloc-valgrind.supp (see the FAQ).
928 * Fix memory binding documentation. Thanks to Karl Napf for reporting the
929   issues.
932 Version 1.4.0 (does not contain all v1.3.2 changes)
933 -------------
934 * Major features
935   + Add "custom" interface and "assembler" tools to build multi-node
936     topology. See the Multi-node Topologies section in the documentation
937     for details.
938 * Interface improvements
939   + Add symmetric_subtree object attribute to ease assumptions when consulting
940     regular symmetric topologies.
941   + Add a CPUModel and CPUType info attribute to Socket objects on Linux
942     and Solaris.
943   + Add hwloc_get_obj_index_inside_cpuset() to retrieve the "logical" index
944     of an object within a subtree of the topology.
945   + Add more NVIDIA CUDA helpers in cuda.h and cudart.h to find hwloc objects
946     corresponding to CUDA devices.
947 * Discovery improvements
948   + Add a group object above partial distance matrices to make sure
949     the matrices are available in the final topology, except when this
950     new object would contradict the existing hierarchy.
951   + Grouping by distances now also works when loading from XML.
952   + Fix some corner cases in object insertion, for instance when dealing
953     with NUMA nodes without any CPU.
954 * Backends
955   + Implement hwloc_get_area_membind() on Linux.
956   + Honor I/O topology flags when importing from XML.
957   + Further improve XML-related error checking and reporting.
958   + Hide synthetic topology error messages unless HWLOC_SYNTHETIC_VERBOSE=1.
959 * Tools
960   + Add synthetic exporting of symmetric topologies to lstopo.
961   + lstopo --horiz and --vert can now be applied to some specific object types.
962   + lstopo -v -p now displays distance matrices with physical indexes.
963   + Add hwloc-distances utility to list distances.
964 * Documentation
965   + Fix and/or document the behavior of most inline functions in hwloc/helper.h
966     when the topology contains some I/O or Misc objects.
967   + Backend documentation enhancements.
968 * Bug fixes
969   + Fix missing last bit in hwloc_linux_get_thread_cpubind().
970     Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue.
971   + Fix FreeBSD build without cpuid support.
972   + Fix several Windows build issues.
973   + Fix inline keyword definition in public headers.
974   + Fix dependencies in the embedded library.
975   + Improve visibility support detection. Thanks to Dave Love for providing
976     the patch.
977   + Remove references to internal symbols in the tools.
980 Version 1.3.3
981 -------------
982 * This release is only meant to fix the pciutils license issue when upgrading
983   to hwloc v1.4 or later is not possible. It contains several other minor
984   fixes but ignores many of them that are only in v1.4 or later.
985 * Use libpciaccess instead of pciutils/libpci by default for I/O discovery.
986   pciutils/libpci is only used if --enable-libpci is given to configure
987   because its GPL license may taint hwloc. See the Installation section
988   in the documentation for details.
991 Version 1.3.2
992 -------------
993 * Fix missing last bit in hwloc_linux_get_thread_cpubind().
994   Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue.
995 * Fix build with -mcmodel=medium. Thanks to Devendar Bureddy for reporting
996   the issue.
997 * Fix build with Solaris Studio 12 compiler when XML is disabled.
998   Thanks to Paul H. Hargrove for reporting the problem.
999 * Fix installation with old GNU sed, for instance on Red Hat 8.
1000   Thanks to Paul H. Hargrove for reporting the problem.
1001 * Fix PCI locality when Linux cgroups restrict the available CPUs.
1002 * Fix floating point issue when grouping by distance on mips64 architecture.
1003   Thanks to Paul H. Hargrove for reporting the problem.
1004 * Fix conversion from/to Linux libnuma when some NUMA nodes have no memory.
1005 * Fix support for gccfss compilers with broken ffs() support. Thanks to
1006   Paul H. Hargrove for reporting the problem and providing a patch.
1007 * Fix FreeBSD build without cpuid support.
1008 * Fix several Windows build issues.
1009 * Fix inline keyword definition in public headers.
1010 * Fix dependencies in the embedded library.
1011 * Detect when a compiler such as xlc may not report compile errors
1012   properly, causing some configure checks to be wrong. Thanks to
1013   Paul H. Hargrove for reporting the problem and providing a patch.
1014 * Improve visibility support detection. Thanks to Dave Love for providing
1015   the patch.
1016 * Remove references to internal symbols in the tools.
1017 * Fix installation on systems with limited command-line size.
1018   Thanks to Paul H. Hargrove for reporting the problem.
1019 * Further improve XML-related error checking and reporting.
1022 Version 1.3.1
1023 -------------
1024 * Fix pciutils detection with pkg-config when not installed in standard
1025   directories.
1026 * Fix visibility options detection with the Solaris Studio compiler.
1027   Thanks to Igor Galić and Terry Dontje for reporting the problems.
1028 * Fix support for old Linux sched.h headers such as those found
1029   on Red Hat 8. Thanks to Paul H. Hargrove for reporting the problems.
1030 * Fix inline and attribute support for Solaris compilers. Thanks to
1031   Dave Love for reporting the problems.
1032 * Print a short summary at the end of the configure output. Thanks to
1033   Stefan Eilemann for the suggestion.
1034 * Add --disable-libnuma configure option to disable libnuma-based
1035   memory binding support on Linux.  Thanks to Rayson Ho for the
1036   suggestion.
1037 * Make hwloc's configure script properly obey $PKG_CONFIG.  Thanks to
1038   Nathan Phillip Brink for raising the issue.
1039 * Silence some harmless pciutils warnings, thanks to Paul H. Hargrove
1040   for reporting the problem.
1041 * Fix the documentation with respect to hwloc_pid_t and hwloc_thread_t
1042   being either pid_t and pthread_t on Unix, or HANDLE on Windows.
1045 Version 1.3.0
1046 -------------
1047 * Major features
1048   + Add I/O devices and bridges to the topology using the pciutils
1049     library. Only enabled after setting the relevant flag with
1050     hwloc_topology_set_flags() before hwloc_topology_load(). See the
1051     I/O Devices section in the documentation for details.
1052 * Discovery improvements
1053   + Add associativity to the cache attributes.
1054   + Add support for s390/z11 "books" on Linux.
1055   + Add the HWLOC_GROUPING_ACCURACY environment variable to relax
1056     distance-based grouping constraints. See the Environment Variables
1057     section in the documentation for details about grouping behavior
1058     and configuration.
1059   + Allow user-given distance matrices to remove or replace those
1060     discovered by the OS backend.
1061 * XML improvements
1062   + XML is now always supported: a minimalistic custom import/export
1063     code is used when libxml2 is not available. It is only guaranteed
1064     to read XML files generated by hwloc.
1065   + hwloc_topology_export_xml() and export_xmlbuffer() now return an
1066     integer.
1067   + Add hwloc_free_xmlbuffer() to free the buffer allocated by
1068     hwloc_topology_export_xmlbuffer().
1069   + Hide XML topology error messages unless HWLOC_XML_VERBOSE=1.
1070 * Minor API updates
1071   + Add hwloc_obj_add_info to customize object info attributes.
1072 * Tools
1073   + lstopo now displays I/O devices by default. Several options are
1074     added to configure the I/O discovery.
1075   + hwloc-calc and hwloc-bind now accept I/O devices as input.
1076   + Add --restrict option to hwloc-calc and hwloc-distribute.
1077   + Add --sep option to change the output field separator in hwloc-calc.
1078   + Add --whole-system option to hwloc-ps.
1081 Version 1.2.2
1082 -------------
1083 * Fix build on AIX 5.2, thanks Utpal Kumar Ray for the report.
1084 * Fix XML import of very large page sizes or counts on 32bits platform,
1085   thanks to Karsten Hopp for the RedHat ticket.
1086 * Fix crash when administrator limitations such as Linux cgroup require
1087   to restrict distance matrices. Thanks to Ake Sandgren for reporting the
1088   problem.
1089 * Fix the removal of objects such as AMD Magny-Cours dual-node sockets
1090   in case of administrator restrictions.
1091 * Improve error reporting and messages in case of wrong synthetic topology
1092   description.
1093 * Several other minor internal fixes and documentation improvements.
1096 Version 1.2.1
1097 -------------
1098 * Improve support of AMD Bulldozer "Compute-Unit" modules by detecting
1099   logical processors with different core IDs on Linux.
1100 * Fix hwloc-ps crash when listing processes from another Linux cpuset.
1101   Thanks to Carl Smith for reporting the problem.
1102 * Fix build on AIX and Solaris. Thanks to Carl Smith and Andreas Kupries
1103   for reporting the problems.
1104 * Fix cache size detection on Darwin. Thanks to Erkcan Özcan for reporting
1105   the problem.
1106 * Make configure fail if --enable-xml or --enable-cairo is given and
1107   proper support cannot be found. Thanks to Andreas Kupries for reporting
1108   the XML problem.
1109 * Fix spurious L1 cache detection on AIX. Thanks to Hendryk Bockelmann
1110   for reporting the problem.
1111 * Fix hwloc_get_last_cpu_location(THREAD) on Linux. Thanks to Gabriele
1112   Fatigati for reporting the problem.
1113 * Fix object distance detection on Solaris.
1114 * Add pthread_self weak symbol to ease static linking.
1115 * Minor documentation fixes.
1118 Version 1.2.0
1119 -------------
1120 * Major features
1121   + Expose latency matrices in the API as an array of distance structures
1122     within objects. Add several helpers to find distances.
1123   + Add hwloc_topology_set_distance_matrix() and environment variables
1124     to provide a matrix of distances between a given set of objects.
1125   + Add hwloc_get_last_cpu_location() and hwloc_get_proc_last_cpu_location()
1126     to retrieve the processors where a process or thread recently ran.
1127     - Add the corresponding --get-last-cpu-location option to hwloc-bind.
1128   + Add hwloc_topology_restrict() to restrict an existing topology to a
1129     given cpuset.
1130     - Add the corresponding --restrict option to lstopo.
1131 * Minor API updates
1132   + Add hwloc_bitmap_list_sscanf/snprintf/asprintf to convert between bitmaps
1133     and strings such as 4-5,7-9,12,15-
1134   + hwloc_bitmap_set/clr_range() now support infinite ranges.
1135   + Clarify the difference between inserting Misc objects by cpuset or by
1136     parent.
1137   + hwloc_insert_misc_object_by_cpuset() now returns NULL in case of error.
1138 * Discovery improvements
1139   + x86 backend (for freebsd): add x2APIC support
1140   + Support standard device-tree phandle, to get better support on e.g. ARM
1141     systems providing it.
1142   + Detect cache size on AIX. Thanks Christopher and IBM.
1143   + Improve grouping to support asymmetric topologies.
1144 * Tools
1145   + Command-line tools now support "all" and "root" special locations
1146     consisting in the entire topology, as well as type names with depth
1147     attributes such as L2 or Group4.
1148   + hwloc-calc improvements:
1149     - Add --number-of/-N option to report the number of objects of a given
1150       type or depth.
1151     - -I is now equivalent to --intersect for listing the indexes of
1152       objects of a given type or depth that intersects the input.
1153     - Add -H to report the output as a hierarchical combination of types
1154       and depths.
1155   + Add --thissystem to lstopo.
1156   + Add lstopo-win, a console-less lstopo variant on Windows.
1157 * Miscellaneous
1158   + Remove C99 usage from code base.
1159   + Rename hwloc-gather-topology.sh into hwloc-gather-topology
1160   + Fix AMD cache discovery on freebsd when there is no L3 cache, thanks
1161     Andriy Gapon for the fix.
1164 Version 1.1.2
1165 -------------
1166 * Fix a segfault in the distance-based grouping code when some objects
1167   are not placed in any group. Thanks to Bernd Kallies for reporting
1168   the problem and providing a patch.
1169 * Fix the command-line parsing of hwloc-bind --mempolicy interleave.
1170   Thanks to Guy Streeter for reporting the problem.
1171 * Stop truncating the output in hwloc_obj_attr_snprintf() and in the
1172   corresponding lstopo output. Thanks to Guy Streeter for reporting the
1173   problem.
1174 * Fix object levels ordering in synthetic topologies.
1175 * Fix potential incoherency between device tree and kernel information,
1176   when SMT is disabled on Power machines.
1177 * Fix and document the behavior of hwloc_topology_set_synthetic() in case
1178   of invalid argument. Thanks to Guy Streeter for reporting the problem.
1179 * Add some verbose error message reporting when it looks like the OS
1180   gives erroneous information.
1181 * Do not include unistd.h and stdint.h in public headers on Windows.
1182 * Move config.h files into their own subdirectories to avoid name
1183   conflicts when AC_CONFIG_HEADERS adds -I's for them.
1184 * Remove the use of declaring variables inside "for" loops.
1185 * Some other minor fixes.
1186 * Many minor documentation fixes.
1189 Version 1.1.1
1190 -------------
1191 * Add hwloc_get_api_version() which returns the version of hwloc used
1192   at runtime. Thanks to Guy Streeter for the suggestion.
1193 * Fix the number of hugepages reported for NUMA nodes on Linux.
1194 * Fix hwloc_bitmap_to_ulong() right after allocating the bitmap.
1195   Thanks to Bernd Kallies for reporting the problem.
1196 * Fix hwloc_bitmap_from_ith_ulong() to properly zero the first ulong.
1197   Thanks to Guy Streeter for reporting the problem.
1198 * Fix hwloc_get_membind_nodeset() on Linux.
1199   Thanks to Bernd Kallies for reporting the problem and providing a patch.
1200 * Fix some file descriptor leaks in the Linux discovery.
1201 * Fix the minimum width of NUMA nodes, caches and the legend in the graphical
1202   lstopo output. Thanks to Jirka Hladky for reporting the problem.
1203 * Various fixes to bitmap conversion from/to taskset-strings.
1204 * Fix and document snprintf functions behavior when the buffer size is too
1205   small or zero. Thanks to Guy Streeter for reporting the problem.
1206 * Fix configure to avoid spurious enabling of the cpuid backend.
1207   Thanks to Tim Anderson for reporting the problem.
1208 * Cleanup error management in hwloc-gather-topology.sh.
1209   Thanks to Jirka Hladky for reporting the problem and providing a patch.
1210 * Add a manpage and usage for hwloc-gather-topology.sh on Linux.
1211   Thanks to Jirka Hladky for providing a patch.
1212 * Memory binding documentation enhancements.
1215 Version 1.1.0
1216 -------------
1218 * API
1219   + Increase HWLOC_API_VERSION to 0x00010100 so that API changes may be
1220     detected at build-time.
1221   + Add a memory binding interface.
1222   + The cpuset API (hwloc/cpuset.h) is now deprecated. It is replaced by
1223     the bitmap API (hwloc/bitmap.h) which offers the same features with more
1224     generic names since it applies to CPU sets, node sets and more.
1225     Backward compatibility with the cpuset API and ABI is still provided but
1226     it will be removed in a future release.
1227     Old types (hwloc_cpuset_t, ...) are still available as a way to clarify
1228     what kind of hwloc_bitmap_t each API function manipulates.
1229     Upgrading to the new API only requires to replace hwloc_cpuset_ function
1230     calls with the corresponding hwloc_bitmap_ calls, with the following
1231     renaming exceptions:
1232     - hwloc_cpuset_cpu -> hwloc_bitmap_only
1233     - hwloc_cpuset_all_but_cpu -> hwloc_bitmap_allbut
1234     - hwloc_cpuset_from_string -> hwloc_bitmap_sscanf
1235   + Add an `infos' array in each object to store couples of info names and
1236     values. It enables generic storage of things like the old dmi board infos
1237     that were previously stored in machine specific attributes.
1238   + Add linesize cache attribute.
1239 * Features
1240   + Bitmaps (and thus CPU sets and node sets) are dynamically (re-)allocated,
1241     the maximal number of CPUs (HWLOC_NBMAXCPUS) has been removed.
1242   + Improve the distance-based grouping code to better support irregular
1243     distance matrices.
1244   + Add support for device-tree to get cache information (useful on Power
1245     architectures).
1246 * Helpers
1247   + Add NVIDIA CUDA helpers in cuda.h and cudart.h to ease interoperability
1248     with CUDA Runtime and Driver APIs.
1249   + Add Myrinet Express helper in myriexpress.h to ease interoperability.
1250 * Tools
1251   + lstopo now displays physical/OS indexes by default in graphical mode
1252     (use -l to switch back to logical indexes). The textual output still uses
1253     logical by default (use -p to switch to physical indexes).
1254   + lstopo prefixes logical indexes with `L#' and physical indexes with `P#'.
1255     Physical indexes are also printed as `P#N' instead of `phys=N' within
1256     object attributes (in parentheses).
1257   + Add a legend at the bottom of the lstopo graphical output, use --no-legend
1258     to remove it.
1259   + Add hwloc-ps to list process' bindings.
1260   + Add --membind and --mempolicy options to hwloc-bind.
1261   + Improve tools command-line options by adding a generic --input option
1262     (and more) which replaces the old --xml, --synthetic and --fsys-root.
1263   + Cleanup lstopo output configuration by adding --output-format.
1264   + Add --intersect in hwloc-calc, and replace --objects with --largest.
1265   + Add the ability to work on standard input in hwloc-calc.
1266   + Add --from, --to and --at in hwloc-distrib.
1267   + Add taskset-specific functions and command-line tools options to
1268     manipulate CPU set strings in the format of the taskset program.
1269   + Install hwloc-gather-topology.sh on Linux.
1272 Version 1.0.3
1273 -------------
1275 * Fix support for Linux cpuset when emulated by a cgroup mount point.
1276 * Remove unneeded runtime dependency on libibverbs.so in the library and
1277   all utils programs.
1278 * Fix hwloc_cpuset_to_linux_libnuma_ulongs in case of non-linear OS-indexes
1279   for NUMA nodes.
1280 * lstopo now displays physical/OS indexes by default in graphical mode
1281   (use -l to switch back to logical indexes). The textual output still uses
1282   logical by default (use -p to switch to physical indexes).
1285 Version 1.0.2
1286 -------------
1288 * Public headers can now be included directly from C++ programs.
1289 * Solaris fix for non-contiguous cpu numbers.  Thanks to Rolf vandeVaart for
1290   reporting the issue.
1291 * Darwin 10.4 fix.  Thanks to Olivier Cessenat for reporting the issue.
1292 * Revert 1.0.1 patch that ignored sockets with unknown ID values since it
1293   only slightly helped POWER7 machines with old Linux kernels while it
1294   prevents recent kernels from getting the complete POWER7 topology.
1295 * Fix hwloc_get_common_ancestor_obj().
1296 * Remove arch-specific bits in public headers.
1297 * Some fixes in the lstopo graphical output.
1298 * Various man page clarifications and minor updates.
1301 Version 1.0.1
1302 -------------
1304 * Various Solaris fixes.  Thanks to Yannick Martin for reporting the issue.
1305 * Fix "non-native" builds on x86 platforms (e.g., when building 32
1306   bit executables with compilers that natively build 64 bit).
1307 * Ignore sockets with unknown ID values (which fixes issues on POWER7
1308   machines).  Thanks to Greg Bauer for reporting the issue.
1309 * Various man page clarifications and minor updates.
1310 * Fixed memory leaks in hwloc_setup_group_from_min_distance_clique().
1311 * Fix cache type filtering on MS Windows 7.  Thanks to Αλέξανδρος
1312   Παπαδογιαννάκ for reporting the issue.
1313 * Fixed warnings when compiling with -DNDEBUG.
1316 Version 1.0.0
1317 -------------
1319 * The ABI of the library has changed.
1320 * Backend updates
1321   + Add FreeBSD support.
1322   + Add x86 cpuid based backend.
1323   + Add Linux cgroup support to the Linux cpuset code.
1324   + Support binding of entire multithreaded process on Linux.
1325   + Fix and enable Group support in Windows.
1326   + Cleanup XML export/import.
1327 * Objects
1328   + HWLOC_OBJ_PROC is renamed into HWLOC_OBJ_PU for "Processing Unit",
1329     its stringified type name is now "PU".
1330   + Use new HWLOC_OBJ_GROUP objects instead of MISC when grouping
1331     objects according to NUMA distances or arbitrary OS aggregation.
1332   + Rework memory attributes.
1333   + Add different cpusets in each object to specify processors that
1334     are offline, unavailable, ...
1335   + Cleanup the storage of object names and DMI infos.
1336 * Features
1337   + Add support for looking up specific PID topology information.
1338   + Add hwloc_topology_export_xml() to export the topology in a XML file.
1339   + Add hwloc_topology_get_support() to retrieve the supported features
1340     for the current topology context.
1341   + Support non-SYSTEM object as the root of the tree, use MACHINE in
1342     most common cases.
1343   + Add hwloc_get_*cpubind() routines to retrieve the current binding
1344     of processes and threads.
1345 * API
1346   + Add HWLOC_API_VERSION to help detect the currently used API version.
1347   + Add missing ending "e" to *compare* functions.
1348   + Add several routines to emulate PLPA functions.
1349   + Rename and rework the cpuset and/or/xor/not/clear operators to output
1350     their result in a dedicated argument instead of modifying one input.
1351   + Deprecate hwloc_obj_snprintf() in favor of hwloc_obj_type/attr_snprintf().
1352   + Clarify the use of parent and ancestor in the API, do not use father.
1353   + Replace hwloc_get_system_obj() with hwloc_get_root_obj().
1354   + Return -1 instead of HWLOC_OBJ_TYPE_MAX in the API since the latter
1355     isn't public.
1356   + Relax constraints in hwloc_obj_type_of_string().
1357   + Improve displaying of memory sizes.
1358   + Add 0x prefix to cpuset strings.
1359 * Tools
1360   + lstopo now displays logical indexes by default, use --physical to
1361     revert back to OS/physical indexes.
1362   + Add colors in the lstopo graphical outputs to distinguish between online,
1363     offline, reserved, ... objects.
1364   + Extend lstopo to show cpusets, filter objects by type, ...
1365   + Renamed hwloc-mask into hwloc-calc which supports many new options.
1366 * Documentation
1367   + Add a hwloc(7) manpage containing general information.
1368   + Add documentation about how to switch from PLPA to hwloc.
1369   + Cleanup the distributed documentation files.
1370 * Miscellaneous
1371   + Many compilers warning fixes.
1372   + Cleanup the ABI by using the visibility attribute.
1373   + Add project embedding support.
1376 Version 0.9.4 (unreleased)
1377 --------------------------
1379 * Fix reseting colors to normal in lstopo -.txt output.
1380 * Fix Linux pthread_t binding error report.
1383 Version 0.9.3
1384 -------------
1386 * Fix autogen.sh to work with Autoconf 2.63.
1387 * Fix various crashes in particular conditions:
1388   - xml files with root attributes
1389   - offline CPUs
1390   - partial sysfs support
1391   - unparseable /proc/cpuinfo
1392   - ignoring NUMA level while Misc level have been generated
1393 * Tweak documentation a bit
1394 * Do not require the pthread library for binding the current thread on Linux
1395 * Do not erroneously consider the sched_setaffinity prototype is the old version
1396   when there is actually none.
1397 * Fix _syscall3 compilation on archs for which we do not have the
1398   sched_setaffinity system call number.
1399 * Fix AIX binding.
1400 * Fix libraries dependencies: now only lstopo depends on libtermcap, fix
1401   binutils-gold link
1402 * Have make check always build and run hwloc-hello.c
1403 * Do not limit size of a cpuset.
1406 Version 0.9.2
1407 -------------
1409 * Trivial documentation changes.
1412 Version 0.9.1
1413 -------------
1415 * Re-branded to "hwloc" and moved to the Open MPI project, relicensed under the
1416   BSD license.
1417 * The prefix of all functions and tools is now hwloc, and some public
1418   functions were also renamed for real.
1419 * Group NUMA nodes into Misc objects according to their physical distance
1420   that may be reported by the OS/BIOS.
1421   May be ignored by setting HWLOC_IGNORE_DISTANCES=1 in the environment.
1422 * Ignore offline CPUs on Solaris.
1423 * Improved binding support on AIX.
1424 * Add HP-UX support.
1425 * CPU sets are now allocated/freed dynamically.
1426 * Add command line options to tune the lstopo graphical output, add
1427   semi-graphical textual output
1428 * Extend topobind to support multiple cpusets or objects on the command
1429   line as topomask does.
1430 * Add an Infiniband-specific helper hwloc/openfabrics-verbs.h to retrieve
1431   the physical location of IB devices.
1434 Version 0.9 (libtopology)
1435 -------------------------
1437 * First release.