1Introduction 2 3hwloc provides command line tools and a C API to obtain the hierarchical map of 4key computing elements, such as: NUMA memory nodes, shared caches, processor 5packages, processor cores, processing units (logical processors or "threads") 6and even I/O devices. hwloc also gathers various attributes such as cache and 7memory information, and is portable across a variety of different operating 8systems and platforms. Additionally it may assemble the topologies of multiple 9machines into a single one so as to let applications consult the topology of an 10entire fabric or cluster at once. 11 12hwloc primarily aims at helping high-performance computing (HPC) applications, 13but is also applicable to any project seeking to exploit code and/or data 14locality on modern computing platforms. 15 16hwloc supports the following operating systems: 17 18 * Linux (including old kernels not having sysfs topology information, with 19 knowledge of cpusets, ScaleMP vSMP and Kerrighed support, etc.) on all 20 supported hardware, including Intel Xeon Phi (KNL and KNC, either 21 standalone or as a coprocessor) and NumaScale NumaConnect. 22 * Solaris 23 * AIX 24 * Darwin / OS X 25 * FreeBSD and its variants (such as kFreeBSD/GNU) 26 * NetBSD 27 * OSF/1 (a.k.a., Tru64) 28 * HP-UX 29 * Microsoft Windows 30 * IBM BlueGene/Q Compute Node Kernel (CNK) 31 32Since it uses standard Operating System information, hwloc's support is mostly 33independant from the processor type (x86, powerpc, ...) and just relies on the 34Operating System support. The only exception to this is kFreeBSD, which does 35not support topology information, and hwloc thus uses an x86-only CPUID-based 36backend (which can be used for other OSes too, see the Components and plugins 37section). 38 39To check whether hwloc works on a particular machine, just try to build it and 40run lstopo or lstopo-no-graphics. If some things do not look right (e.g. bogus 41or missing cache information), see Questions and Bugs below. 42 43hwloc only reports the number of processors on unsupported operating systems; 44no topology information is available. 45 46For development and debugging purposes, hwloc also offers the ability to work 47on "fake" topologies: 48 49 * Symmetrical tree of resources generated from a list of level arities, see 50 Synthetic topologies. 51 * Remote machine simulation through the gathering of topology as XML files, 52 see Importing and exporting topologies from/to XML files. 53 54hwloc can display the topology in a human-readable format, either in graphical 55mode (X11), or by exporting in one of several different formats, including: 56plain text, PDF, PNG, and FIG (see Command-line Examples below). Note that some 57of the export formats require additional support libraries. 58 59hwloc offers a programming interface for manipulating topologies and objects. 60It also brings a powerful CPU bitmap API that is used to describe topology 61objects location on physical/logical processors. See the Programming Interface 62below. It may also be used to binding applications onto certain cores or memory 63nodes. Several utility programs are also provided to ease command-line 64manipulation of topology objects, binding of processes, and so on. 65 66Perl bindings are available from Bernd Kallies on CPAN. 67 68Python bindings are available from Guy Streeter: 69 70 * Fedora RPM and tarball. 71 * git tree (html). 72 73 74 75See https://www.open-mpi.org/projects/hwloc/doc/ for more hwloc documentation. 76