Hardware locality (hwloc)
Clone or download
bgoglin core: remove a useless check in find_same_type()
The caller already does it.

Signed-off-by: Brice Goglin <Brice.Goglin@inria.fr>
Latest commit 5738ac4 Sep 13, 2018
Failed to load latest commit information.
.github .github/issue_template.md: CFLAGS='-g -O0' and --enable-debug may help Jun 15, 2018
config configure: detect the diff path at configure and use it in test scripts Aug 23, 2018
contrib contrib/dist: save my script for installing release documentation in … Sep 4, 2018
doc core: update OS/distance insert error messages Sep 13, 2018
hwloc core: remove a useless check in find_same_type() Sep 14, 2018
include core: remove hwloc_namecoloncmp() Sep 14, 2018
netloc netloc: always include scotch-related sources in dist Jan 16, 2018
tests linux: use /sys/devices/system/node/possible for listing NUMA nodes d… Sep 12, 2018
utils hwloc-gather-cpuid: update to AMD manual from May 2018 Sep 6, 2018
.gitignore .gitignore: add libhwloc_embedded.la Jan 25, 2018
AUTHORS AUTHORS: this is not netloc Jan 15, 2018
COPYING COPYING: update copyrights Jan 24, 2016
HACKING whitespace: remove all trailing whitespace Sep 22, 2014
Makefile.am automake: rename pkgconfig variables into hwlocpkgconfig Jan 25, 2018
NEWS linux: add support for IBM S/390 drawers Sep 9, 2018
README doxy: reorder and sectionize the installation section Jan 31, 2018
VERSION contrib/windows: move HWLOC_VERSION* macros from private_config.h to … Aug 15, 2018
autogen.sh autogen: make it work outside of $srcdir Oct 26, 2017
configure.ac configure: cleanup graphical status in the configure summary May 4, 2018
hwloc.pc.in core: really use HWLOC_VERSION instead of VERSION everywhere Jun 13, 2015
netloc.pc.in core: really use HWLOC_VERSION instead of VERSION everywhere Jun 13, 2015
netlocscotch.pc.in netloc: add netlocscotch Oct 26, 2016



The Hardware Locality (hwloc) software project aims at easing the process of
discovering hardware resources in parallel architectures. It offers
command-line tools and a C API for consulting these resources, their locality,
attributes, and interconnection. hwloc primarily aims at helping
high-performance computing (HPC) applications, but is also applicable to any
project seeking to exploit code and/or data locality on modern computing

hwloc is actually made of two subprojects distributed together:

  * The original hwloc project for describing the internals of computing nodes.
 It is described in details starting at section Hardware Locality (hwloc)
  * The network-oriented companion called netloc (Network Locality), described
 in details starting with section Network Locality (netloc).

See also the Related pages tab above for links to other sections.

Netloc may be disabled, but the original hwloc cannot. Both hwloc and netloc
APIs are documented after these sections.


hwloc (http://www.open-mpi.org/projects/hwloc/) is available under the BSD
license. It is hosted as a sub-project of the overall Open MPI project (http://
www.open-mpi.org/). Note that hwloc does not require any functionality from
Open MPI -- it is a wholly separate (and much smaller!) project and code base.
It just happens to be hosted as part of the overall Open MPI project.

Basic Installation

Installation is the fairly common GNU-based process:

shell$ ./configure --prefix=...
shell$ make
shell$ make install

hwloc- and netloc-specific configure options and requirements are documented in
sections hwloc Installation and Netloc Installation respectively.

Also note that if you install supplemental libraries in non-standard locations,
hwloc's configure script may not be able to find them without some help. You
may need to specify additional CPPFLAGS, LDFLAGS, or PKG_CONFIG_PATH values on
the configure command line.

For example, if libpciaccess was installed into /opt/pciaccess, hwloc's
configure script may not find it be default. Try adding PKG_CONFIG_PATH to the
./configure command line, like this:

./configure PKG_CONFIG_PATH=/opt/pciaccess/lib/pkgconfig ...

Running the "lstopo" tool is a good way to check as a graphical output whether
hwloc properly detected the architecture of your node. Netloc command-line
tools can be used to display the network topology interconnecting your nodes.

Installing from a Git clone

Additionally, the code can be directly cloned from Git:

shell$ git clone https://github.com/open-mpi/hwloc.git
shell$ cd hwloc
shell$ ./autogen.sh

Note that GNU Autoconf >=2.63, Automake >=1.11 and Libtool >=2.2.6 are required
when building from a Git clone.

Nightly development snapshots are available on the web site, they can be
configured and built without any need for Git or GNU Autotools.

Questions and Bugs

Bugs should be reported in the tracker (https://github.com/open-mpi/hwloc/
issues). Opening a new issue automatically displays lots of hints about how to
debug and report issues.

Questions may be sent to the users or developers mailing lists (http://

There is also a #hwloc IRC channel on Freenode (irc.freenode.net).

See https://www.open-mpi.org/projects/hwloc/doc/ for more hwloc documentation.