diff --git a/opal/mca/hwloc/hwloc1112/README-ompi.txt b/opal/mca/hwloc/hwloc1112/README-ompi.txt deleted file mode 100644 index 60d73d103a..0000000000 --- a/opal/mca/hwloc/hwloc1112/README-ompi.txt +++ /dev/null @@ -1,4 +0,0 @@ -Applied the following patches from the upstream hwloc 1.11 branch after -the v1.11.1 release: - -...none yet... diff --git a/opal/mca/hwloc/hwloc1112/configure.m4 b/opal/mca/hwloc/hwloc1112/configure.m4 deleted file mode 100644 index 28f40a6d95..0000000000 --- a/opal/mca/hwloc/hwloc1112/configure.m4 +++ /dev/null @@ -1,174 +0,0 @@ -# -*- shell-script -*- -# -# Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved. -# Copyright (c) 2014-2015 Intel, Inc. All rights reserved. -# Copyright (c) 2015 Research Organization for Information Science -# and Technology (RIST). All rights reserved. -# Copyright (c) 2016 Los Alamos National Security, LLC. All rights -# reserved. -# -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -# -# Priority -# -AC_DEFUN([MCA_opal_hwloc_hwloc1112_PRIORITY], [90]) - -# -# Force this component to compile in static-only mode -# -AC_DEFUN([MCA_opal_hwloc_hwloc1112_COMPILE_MODE], [ - AC_MSG_CHECKING([for MCA component $2:$3 compile mode]) - $4="static" - AC_MSG_RESULT([$$4]) -]) - -# Include hwloc m4 files -m4_include(opal/mca/hwloc/hwloc1112/hwloc/config/hwloc.m4) -m4_include(opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_pkg.m4) -m4_include(opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_check_attributes.m4) -m4_include(opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_check_visibility.m4) -m4_include(opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_check_vendor.m4) -m4_include(opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_components.m4) - -# MCA_hwloc_hwloc1112_POST_CONFIG() -# --------------------------------- -AC_DEFUN([MCA_opal_hwloc_hwloc1112_POST_CONFIG],[ - OPAL_VAR_SCOPE_PUSH([opal_hwloc_hwloc1112_basedir]) - - # If we won, then do all the rest of the setup - AS_IF([test "$1" = "1" && test "$opal_hwloc_hwloc1112_support" = "yes"], - [ - # Set this variable so that the framework m4 knows what - # file to include in opal/mca/hwloc/hwloc.h - opal_hwloc_hwloc1112_basedir=opal/mca/hwloc/hwloc1112 - opal_hwloc_base_include="$opal_hwloc_hwloc1112_basedir/hwloc1112.h" - - # Add some stuff to CPPFLAGS so that the rest of the source - # tree can be built - file=$opal_hwloc_hwloc1112_basedir/hwloc - CPPFLAGS="$CPPFLAGS -I$OPAL_TOP_SRCDIR/$file/include" - AS_IF([test "$OPAL_TOP_BUILDDIR" != "$OPAL_TOP_SRCDIR"], - [CPPFLAGS="$CPPFLAGS -I$OPAL_TOP_BUILDDIR/$file/include"]) - unset file - ]) - OPAL_VAR_SCOPE_POP - - # This must be run unconditionally - HWLOC_DO_AM_CONDITIONALS -])dnl - - -# MCA_hwloc_hwloc1112_CONFIG([action-if-found], [action-if-not-found]) -# -------------------------------------------------------------------- -AC_DEFUN([MCA_opal_hwloc_hwloc1112_CONFIG],[ - # Hwloc needs to know if we have Verbs support - AC_REQUIRE([OPAL_CHECK_VERBS_DIR]) - - AC_CONFIG_FILES([opal/mca/hwloc/hwloc1112/Makefile]) - - OPAL_VAR_SCOPE_PUSH([HWLOC_VERSION opal_hwloc_hwloc1112_save_CPPFLAGS opal_hwloc_hwloc1112_save_LDFLAGS opal_hwloc_hwloc1112_save_LIBS opal_hwloc_hwloc1112_save_cairo opal_hwloc_hwloc1112_save_xml opal_hwloc_hwloc1112_basedir opal_hwloc_hwloc1112_file opal_hwloc_hwloc1112_save_cflags CPPFLAGS_save LIBS_save]) - - # default to this component not providing support - opal_hwloc_hwloc1112_basedir=opal/mca/hwloc/hwloc1112 - opal_hwloc_hwloc1112_support=no - - if test "$with_hwloc" = "internal" || test -z "$with_hwloc" || test "$with_hwloc" = "yes"; then - opal_hwloc_hwloc1112_save_CPPFLAGS=$CPPFLAGS - opal_hwloc_hwloc1112_save_LDFLAGS=$LDFLAGS - opal_hwloc_hwloc1112_save_LIBS=$LIBS - - # Run the hwloc configuration - set the prefix to minimize - # the chance that someone will use the internal symbols - HWLOC_SET_SYMBOL_PREFIX([opal_hwloc1112_]) - - # save XML or graphical options - opal_hwloc_hwloc1112_save_cairo=$enable_cairo - opal_hwloc_hwloc1112_save_xml=$enable_xml - opal_hwloc_hwloc1112_save_static=$enable_static - opal_hwloc_hwloc1112_save_shared=$enable_shared - opal_hwloc_hwloc1112_save_plugins=$enable_plugins - - # never enable hwloc's graphical option - enable_cairo=no - - # never enable hwloc's plugin system - enable_plugins=no - enable_static=yes - enable_shared=no - - # Override -- disable hwloc's libxml2 support, but enable the - # native hwloc XML support - enable_libxml2=no - enable_xml=yes - - # hwloc checks for compiler visibility, and its needs to do - # this without "picky" flags. - opal_hwloc_hwloc1112_save_cflags=$CFLAGS - CFLAGS=$OPAL_CFLAGS_BEFORE_PICKY - HWLOC_SETUP_CORE([opal/mca/hwloc/hwloc1112/hwloc], - [AC_MSG_CHECKING([whether hwloc configure succeeded]) - AC_MSG_RESULT([yes]) - HWLOC_VERSION="internal v`$srcdir/$opal_hwloc_hwloc1112_basedir/hwloc/config/hwloc_get_version.sh $srcdir/$opal_hwloc_hwloc1112_basedir/hwloc/VERSION`" - - # Build flags for our Makefile.am - opal_hwloc_hwloc1112_LDFLAGS='$(HWLOC_EMBEDDED_LDFLAGS)' - opal_hwloc_hwloc1112_LIBS='$(OPAL_TOP_BUILDDIR)/'"$opal_hwloc_hwloc1112_basedir"'/hwloc/src/libhwloc_embedded.la $(HWLOC_EMBEDDED_LIBS)' - opal_hwloc_hwloc1112_support=yes - - AC_DEFINE_UNQUOTED([HWLOC_HWLOC1112_HWLOC_VERSION], - ["$HWLOC_VERSION"], - [Version of hwloc]) - - # Do we have verbs support? - CPPFLAGS_save=$CPPFLAGS - AS_IF([test "$opal_want_verbs" = "yes"], - [CPPFLAGS="-I$opal_verbs_dir/include $CPPFLAGS"]) - AC_CHECK_HEADERS([infiniband/verbs.h]) - CPPFLAGS=$CPPFLAGS_save - ], - [AC_MSG_CHECKING([whether hwloc configure succeeded]) - AC_MSG_RESULT([no]) - opal_hwloc_hwloc1112_support=no]) - CFLAGS=$opal_hwloc_hwloc1112_save_cflags - - # Restore some env variables, if necessary - AS_IF([test -n "$opal_hwloc_hwloc1112_save_cairo"], - [enable_cairo=$opal_hwloc_hwloc1112_save_cairo]) - AS_IF([test -n "$opal_hwloc_hwloc1112_save_xml"], - [enable_xml=$opal_hwloc_hwloc1112_save_xml]) - AS_IF([test -n "$opal_hwloc_hwloc1112_save_static"], - [enable_static=$opal_hwloc_hwloc1112_save_static]) - AS_IF([test -n "$opal_hwloc_hwloc1112_save_shared"], - [enable_shared=$opal_hwloc_hwloc1112_save_shared]) - AS_IF([test -n "$opal_hwloc_hwloc1112_save_plugins"], - [enable_plugins=$opal_hwloc_hwloc1112_save_shared]) - - CPPFLAGS=$opal_hwloc_hwloc1112_save_CPPFLAGS - LDFLAGS=$opal_hwloc_hwloc1112_save_LDFLAGS - LIBS=$opal_hwloc_hwloc1112_save_LIBS - - AC_SUBST([opal_hwloc_hwloc1112_CFLAGS]) - AC_SUBST([opal_hwloc_hwloc1112_CPPFLAGS]) - AC_SUBST([opal_hwloc_hwloc1112_LDFLAGS]) - AC_SUBST([opal_hwloc_hwloc1112_LIBS]) - - # Finally, add some flags to the wrapper compiler so that our - # headers can be found. - hwloc_hwloc1112_WRAPPER_EXTRA_LDFLAGS="$HWLOC_EMBEDDED_LDFLAGS" - hwloc_hwloc1112_WRAPPER_EXTRA_LIBS="$HWLOC_EMBEDDED_LIBS" - hwloc_hwloc1112_WRAPPER_EXTRA_CPPFLAGS='-I${pkgincludedir}/'"$opal_hwloc_hwloc1112_basedir/hwloc/include" - fi - - # Done! - AS_IF([test "$opal_hwloc_hwloc1112_support" = "yes"], - [$1], - [$2]) - - OPAL_VAR_SCOPE_POP -])dnl diff --git a/opal/mca/hwloc/hwloc1112/hwloc/README b/opal/mca/hwloc/hwloc1112/hwloc/README deleted file mode 100644 index 592d459f84..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/README +++ /dev/null @@ -1,612 +0,0 @@ -Introduction - -hwloc provides command line tools and a C API to obtain the hierarchical map of -key computing elements, such as: NUMA memory nodes, shared caches, processor -packages, processor cores, processing units (logical processors or "threads") -and even I/O devices. hwloc also gathers various attributes such as cache and -memory information, and is portable across a variety of different operating -systems and platforms. Additionally it may assemble the topologies of multiple -machines into a single one so as to let applications consult the topology of an -entire fabric or cluster at once. - -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 platforms. - -Note that the hwloc project represents the merger of the libtopology project -from inria and the Portable Linux Processor Affinity (PLPA) sub-project from -Open MPI. Both of these prior projects are now deprecated. The first hwloc -release was essentially a "re-branding" of the libtopology code base, but with -both a few genuinely new features and a few PLPA-like features added in. Prior -releases of hwloc included documentation about switching from PLPA to hwloc; -this documentation has been dropped on the assumption that everyone who was -using PLPA has already switched to hwloc. - -hwloc supports the following operating systems: - - * Linux (including old kernels not having sysfs topology information, with - knowledge of cpusets, offline CPUs, ScaleMP vSMP and Kerrighed support) on - all supported hardware, including Intel Xeon Phi (KNL and KNC, either - standalone or as a coprocessor) and NumaScale NumaConnect. - * Solaris - * AIX - * Darwin / OS X - * FreeBSD and its variants (such as kFreeBSD/GNU) - * NetBSD - * OSF/1 (a.k.a., Tru64) - * HP-UX - * Microsoft Windows - * IBM BlueGene/Q Compute Node Kernel (CNK) - -Since it uses standard Operating System information, hwloc's support is mostly -independant from the processor type (x86, powerpc, ...) and just relies on the -Operating System support. The only exception to this is kFreeBSD, which does -not support topology information, and hwloc thus uses an x86-only CPUID-based -backend (which can be used for other OSes too, see the Components and plugins -section). - -To check whether hwloc works on a particular machine, just try to build it and -run lstopo or lstopo-no-graphics. If some things do not look right (e.g. bogus -or missing cache information), see Questions and Bugs below. - -hwloc only reports the number of processors on unsupported operating systems; -no topology information is available. - -For development and debugging purposes, hwloc also offers the ability to work -on "fake" topologies: - - * Symmetrical tree of resources generated from a list of level arities - * Remote machine simulation through the gathering of Linux sysfs topology - files - -hwloc can display the topology in a human-readable format, either in graphical -mode (X11), or by exporting in one of several different formats, including: -plain text, PDF, PNG, and FIG (see CLI Examples below). Note that some of the -export formats require additional support libraries. - -hwloc offers a programming interface for manipulating topologies and objects. -It also brings a powerful CPU bitmap API that is used to describe topology -objects location on physical/logical processors. See the Programming Interface -below. It may also be used to binding applications onto certain cores or memory -nodes. Several utility programs are also provided to ease command-line -manipulation of topology objects, binding of processes, and so on. - -Perl bindings are available from Bernd Kallies on CPAN. - -Python bindings are available from Guy Streeter: - - * Fedora RPM and tarball. - * git tree (html). - -Installation - -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. - -Nightly development snapshots are available on the web site. 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.10 and Libtool >=2.2.6 are required -when building from a Git clone. - -Installation by itself is the fairly common GNU-based process: - -shell$ ./configure --prefix=... -shell$ make -shell$ make install - -The hwloc command-line tool "lstopo" produces human-readable topology maps, as -mentioned above. It can also export maps to the "fig" file format. Support for -PDF, Postscript, and PNG exporting is provided if the "Cairo" development -package (usually cairo-devel or libcairo2-dev) can be found in "lstopo" when -hwloc is configured and build. - -The hwloc core may also benefit from the following development packages: - - * libnuma for memory binding and migration support on Linux (numactl-devel or - libnuma-dev package). - * libpciaccess for full I/O device discovery (libpciaccess-devel or - libpciaccess-dev package). On Linux, PCI discovery may still be performed - (without vendor/device names) even if libpciaccess cannot be used. - - * the AMD OpenCL implementation for OpenCL device discovery. - * the NVIDIA CUDA Toolkit for CUDA device discovery. - * the NVIDIA Tesla Development Kit for NVML device discovery. - * the NV-CONTROL X extension library (NVCtrl) for NVIDIA display discovery. - * libxml2 for full XML import/export support (otherwise, the internal - minimalistic parser will only be able to import XML files that were - exported by the same hwloc release). See Importing and exporting topologies - from/to XML files for details. The relevant development package is usually - libxml2-devel or libxml2-dev. - * libudev on Linux for easier discovery of OS device information (otherwise - hwloc will try to manually parse udev raw files). The relevant development - package is usually libudev-devel or libudev-dev. - * libtool's ltdl library for dynamic plugin loading. The relevant development - package is usually libtool-ltdl-devel or libltdl-dev. - -PCI and XML support may be statically built inside the main hwloc library, or -as separate dynamically-loaded plugins (see the Components and plugins -section). - -Note that because of the possibility of GPL taint, the pciutils library libpci -will not be used (remember that hwloc is BSD-licensed). - -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 ... - -CLI Examples - -On a 4-package 2-core machine with hyper-threading, the lstopo tool may show -the following graphical output: - -dudley.png - -Here's the equivalent output in textual form: - -Machine (16GB) - Package L#0 + L3 L#0 (4096KB) - L2 L#0 (1024KB) + L1 L#0 (16KB) + Core L#0 - PU L#0 (P#0) - PU L#1 (P#8) - L2 L#1 (1024KB) + L1 L#1 (16KB) + Core L#1 - PU L#2 (P#4) - PU L#3 (P#12) - Package L#1 + L3 L#1 (4096KB) - L2 L#2 (1024KB) + L1 L#2 (16KB) + Core L#2 - PU L#4 (P#1) - PU L#5 (P#9) - L2 L#3 (1024KB) + L1 L#3 (16KB) + Core L#3 - PU L#6 (P#5) - PU L#7 (P#13) - Package L#2 + L3 L#2 (4096KB) - L2 L#4 (1024KB) + L1 L#4 (16KB) + Core L#4 - PU L#8 (P#2) - PU L#9 (P#10) - L2 L#5 (1024KB) + L1 L#5 (16KB) + Core L#5 - PU L#10 (P#6) - PU L#11 (P#14) - Package L#3 + L3 L#3 (4096KB) - L2 L#6 (1024KB) + L1 L#6 (16KB) + Core L#6 - PU L#12 (P#3) - PU L#13 (P#11) - L2 L#7 (1024KB) + L1 L#7 (16KB) + Core L#7 - PU L#14 (P#7) - PU L#15 (P#15) - -Note that there is also an equivalent output in XML that is meant for exporting -/importing topologies but it is hardly readable to human-beings (see Importing -and exporting topologies from/to XML files for details). - -On a 4-package 2-core Opteron NUMA machine, the lstopo tool may show the -following graphical output: - -hagrid.png - -Here's the equivalent output in textual form: - -Machine (32GB) - NUMANode L#0 (P#0 8190MB) + Package L#0 - L2 L#0 (1024KB) + L1 L#0 (64KB) + Core L#0 + PU L#0 (P#0) - L2 L#1 (1024KB) + L1 L#1 (64KB) + Core L#1 + PU L#1 (P#1) - NUMANode L#1 (P#1 8192MB) + Package L#1 - L2 L#2 (1024KB) + L1 L#2 (64KB) + Core L#2 + PU L#2 (P#2) - L2 L#3 (1024KB) + L1 L#3 (64KB) + Core L#3 + PU L#3 (P#3) - NUMANode L#2 (P#2 8192MB) + Package L#2 - L2 L#4 (1024KB) + L1 L#4 (64KB) + Core L#4 + PU L#4 (P#4) - L2 L#5 (1024KB) + L1 L#5 (64KB) + Core L#5 + PU L#5 (P#5) - NUMANode L#3 (P#3 8192MB) + Package L#3 - L2 L#6 (1024KB) + L1 L#6 (64KB) + Core L#6 + PU L#6 (P#6) - L2 L#7 (1024KB) + L1 L#7 (64KB) + Core L#7 + PU L#7 (P#7) - -On a 2-package quad-core Xeon (pre-Nehalem, with 2 dual-core dies into each -package): - -emmett.png - -Here's the same output in textual form: - -Machine (16GB) - Package L#0 - L2 L#0 (4096KB) - L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0) - L1 L#1 (32KB) + Core L#1 + PU L#1 (P#4) - L2 L#1 (4096KB) - L1 L#2 (32KB) + Core L#2 + PU L#2 (P#2) - L1 L#3 (32KB) + Core L#3 + PU L#3 (P#6) - Package L#1 - L2 L#2 (4096KB) - L1 L#4 (32KB) + Core L#4 + PU L#4 (P#1) - L1 L#5 (32KB) + Core L#5 + PU L#5 (P#5) - L2 L#3 (4096KB) - L1 L#6 (32KB) + Core L#6 + PU L#6 (P#3) - L1 L#7 (32KB) + Core L#7 + PU L#7 (P#7) - -Programming Interface - -The basic interface is available in hwloc.h. Some higher-level functions are -available in hwloc/helper.h to reduce the need to manually manipulate objects -and follow links between them. Documentation for all these is provided later in -this document. Developers may also want to look at hwloc/inlines.h which -contains the actual inline code of some hwloc.h routines, and at this document, -which provides good higher-level topology traversal examples. - -To precisely define the vocabulary used by hwloc, a Terms and Definitions -section is available and should probably be read first. - -Each hwloc object contains a cpuset describing the list of processing units -that it contains. These bitmaps may be used for CPU binding and Memory binding. -hwloc offers an extensive bitmap manipulation interface in hwloc/bitmap.h. - -Moreover, hwloc also comes with additional helpers for interoperability with -several commonly used environments. See the Interoperability With Other -Software section for details. - -The complete API documentation is available in a full set of HTML pages, man -pages, and self-contained PDF files (formatted for both both US letter and A4 -formats) in the source tarball in doc/doxygen-doc/. - -NOTE: If you are building the documentation from a Git clone, you will need to -have Doxygen and pdflatex installed -- the documentation will be built during -the normal "make" process. The documentation is installed during "make install" -to $prefix/share/doc/hwloc/ and your systems default man page tree (under -$prefix, of course). - -Portability - -As shown in CLI Examples, hwloc can obtain information on a wide variety of -hardware topologies. However, some platforms and/or operating system versions -will only report a subset of this information. For example, on an PPC64-based -system with 32 cores (each with 2 hardware threads) running a default -2.6.18-based kernel from RHEL 5.4, hwloc is only able to glean information -about NUMA nodes and processor units (PUs). No information about caches, -packages, or cores is available. - -Similarly, Operating System have varying support for CPU and memory binding, -e.g. while some Operating Systems provide interfaces for all kinds of CPU and -memory bindings, some others provide only interfaces for a limited number of -kinds of CPU and memory binding, and some do not provide any binding interface -at all. Hwloc's binding functions would then simply return the ENOSYS error -(Function not implemented), meaning that the underlying Operating System does -not provide any interface for them. CPU binding and Memory binding provide more -information on which hwloc binding functions should be preferred because -interfaces for them are usually available on the supported Operating Systems. - -Here's the graphical output from lstopo on this platform when Simultaneous -Multi-Threading (SMT) is enabled: - -ppc64-with-smt.png - -And here's the graphical output from lstopo on this platform when SMT is -disabled: - -ppc64-without-smt.png - -Notice that hwloc only sees half the PUs when SMT is disabled. PU #15, for -example, seems to change location from NUMA node #0 to #1. In reality, no PUs -"moved" -- they were simply re-numbered when hwloc only saw half as many. -Hence, PU #15 in the SMT-disabled picture probably corresponds to PU #30 in the -SMT-enabled picture. - -This same "PUs have disappeared" effect can be seen on other platforms -- even -platforms / OSs that provide much more information than the above PPC64 system. -This is an unfortunate side-effect of how operating systems report information -to hwloc. - -Note that upgrading the Linux kernel on the same PPC64 system mentioned above -to 2.6.34, hwloc is able to discover all the topology information. The -following picture shows the entire topology layout when SMT is enabled: - -ppc64-full-with-smt.png - -Developers using the hwloc API or XML output for portable applications should -therefore be extremely careful to not make any assumptions about the structure -of data that is returned. For example, per the above reported PPC topology, it -is not safe to assume that PUs will always be descendants of cores. - -Additionally, future hardware may insert new topology elements that are not -available in this version of hwloc. Long-lived applications that are meant to -span multiple different hardware platforms should also be careful about making -structure assumptions. For example, there may someday be an element "lower" -than a PU, or perhaps a new element may exist between a core and a PU. - -API Example - -The following small C example (named ``hwloc-hello.c'') prints the topology of -the machine and bring the process to the first logical processor of the second -core of the machine. More examples are available in the doc/examples/ directory -of the source tree. - -/* Example hwloc API program. - * - * See other examples under doc/examples/ in the source tree - * for more details. - * - * Copyright (c) 2009-2015 Inria. All rights reserved. - * Copyright (c) 2009-2011 Universit?eacute; Bordeaux - * Copyright (c) 2009-2010 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - * - * hwloc-hello.c - */ - -#include -#include -#include -#include - -static void print_children(hwloc_topology_t topology, hwloc_obj_t obj, - int depth) -{ - char type[32], attr[1024]; - unsigned i; - - hwloc_obj_type_snprintf(type, sizeof(type), obj, 0); - printf("%*s%s", 2*depth, "", type); - if (obj->os_index != (unsigned) -1) - printf("#%u", obj->os_index); - hwloc_obj_attr_snprintf(attr, sizeof(attr), obj, " ", 0); - if (*attr) - printf("(%s)", attr); - printf("\n"); - for (i = 0; i < obj->arity; i++) { - print_children(topology, obj->children[i], depth + 1); - } -} - -int main(void) -{ - int depth; - unsigned i, n; - unsigned long size; - int levels; - char string[128]; - int topodepth; - hwloc_topology_t topology; - hwloc_cpuset_t cpuset; - hwloc_obj_t obj; - - /* Allocate and initialize topology object. */ - hwloc_topology_init(&topology); - - /* ... Optionally, put detection configuration here to ignore - some objects types, define a synthetic topology, etc.... - - The default is to detect all the objects of the machine that - the caller is allowed to access. See Configure Topology - Detection. */ - - /* Perform the topology detection. */ - hwloc_topology_load(topology); - - /* Optionally, get some additional topology information - in case we need the topology depth later. */ - topodepth = hwloc_topology_get_depth(topology); - - /***************************************************************** - * First example: - * Walk the topology with an array style, from level 0 (always - * the system level) to the lowest level (always the proc level). - *****************************************************************/ - for (depth = 0; depth < topodepth; depth++) { - printf("*** Objects at level %d\n", depth); - for (i = 0; i < hwloc_get_nbobjs_by_depth(topology, depth); - i++) { - hwloc_obj_type_snprintf(string, sizeof(string), - hwloc_get_obj_by_depth -(topology, depth, i), 0); - printf("Index %u: %s\n", i, string); - } - } - - /***************************************************************** - * Second example: - * Walk the topology with a tree style. - *****************************************************************/ - printf("*** Printing overall tree\n"); - print_children(topology, hwloc_get_root_obj(topology), 0); - - /***************************************************************** - * Third example: - * Print the number of packages. - *****************************************************************/ - depth = hwloc_get_type_depth(topology, HWLOC_OBJ_PACKAGE); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) { - printf("*** The number of packages is unknown\n"); - } else { - printf("*** %u package(s)\n", - hwloc_get_nbobjs_by_depth(topology, depth)); - } - - /***************************************************************** - * Fourth example: - * Compute the amount of cache that the first logical processor - * has above it. - *****************************************************************/ - levels = 0; - size = 0; - for (obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0); - obj; - obj = obj->parent) - if (obj->type == HWLOC_OBJ_CACHE) { - levels++; - size += obj->attr->cache.size; - } - printf("*** Logical processor 0 has %d caches totaling %luKB\n", - levels, size / 1024); - - /***************************************************************** - * Fifth example: - * Bind to only one thread of the last core of the machine. - * - * First find out where cores are, or else smaller sets of CPUs if - * the OS doesn't have the notion of a "core". - *****************************************************************/ - depth = hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_CORE); - - /* Get last core. */ - obj = hwloc_get_obj_by_depth(topology, depth, - hwloc_get_nbobjs_by_depth(topology, depth) - 1); - if (obj) { - /* Get a copy of its cpuset that we may modify. */ - cpuset = hwloc_bitmap_dup(obj->cpuset); - - /* Get only one logical processor (in case the core is - SMT/hyper-threaded). */ - hwloc_bitmap_singlify(cpuset); - - /* And try to bind ourself there. */ - if (hwloc_set_cpubind(topology, cpuset, 0)) { - char *str; - int error = errno; - hwloc_bitmap_asprintf(&str, obj->cpuset); - printf("Couldn't bind to cpuset %s: %s\n", str, strerror(error)); - free(str); - } - - /* Free our cpuset copy */ - hwloc_bitmap_free(cpuset); - } - - /***************************************************************** - * Sixth example: - * Allocate some memory on the last NUMA node, bind some existing - * memory to the last NUMA node. - *****************************************************************/ - /* Get last node. */ - n = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NUMANODE); - if (n) { - void *m; - size = 1024*1024; - - obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NUMANODE, n - 1); - m = hwloc_alloc_membind_nodeset(topology, size, obj->nodeset, - HWLOC_MEMBIND_BIND, 0); - hwloc_free(topology, m, size); - - m = malloc(size); - hwloc_set_area_membind_nodeset(topology, m, size, obj->nodeset, - HWLOC_MEMBIND_BIND, 0); - free(m); - } - - /* Destroy topology object. */ - hwloc_topology_destroy(topology); - - return 0; -} - -hwloc provides a pkg-config executable to obtain relevant compiler and linker -flags. For example, it can be used thusly to compile applications that utilize -the hwloc library (assuming GNU Make): - -CFLAGS += $(pkg-config --cflags hwloc) -LDLIBS += $(pkg-config --libs hwloc) -cc hwloc-hello.c $(CFLAGS) -o hwloc-hello $(LDLIBS) - -On a machine with 4GB of RAM and 2 processor packages -- each package of which -has two processing cores -- the output from running hwloc-hello could be -something like the following: - -shell$ ./hwloc-hello -*** Objects at level 0 -Index 0: Machine(3938MB) -*** Objects at level 1 -Index 0: Package#0 -Index 1: Package#1 -*** Objects at level 2 -Index 0: Core#0 -Index 1: Core#1 -Index 2: Core#3 -Index 3: Core#2 -*** Objects at level 3 -Index 0: PU#0 -Index 1: PU#1 -Index 2: PU#2 -Index 3: PU#3 -*** Printing overall tree -Machine(3938MB) - Package#0 - Core#0 - PU#0 - Core#1 - PU#1 - Package#1 - Core#3 - PU#2 - Core#2 - PU#3 -*** 2 package(s) -shell$ - -Questions and Bugs - -Questions should be sent to the devel mailing list (http://www.open-mpi.org/ -community/lists/hwloc.php). Bug reports should be reported in the tracker ( -https://github.com/open-mpi/hwloc/issues). - -If hwloc discovers an incorrect topology for your machine, the very first thing -you should check is to ensure that you have the most recent updates installed -for your operating system. Indeed, most of hwloc topology discovery relies on -hardware information retrieved through the operation system (e.g., via the /sys -virtual filesystem of the Linux kernel). If upgrading your OS or Linux kernel -does not solve your problem, you may also want to ensure that you are running -the most recent version of the BIOS for your machine. - -If those things fail, contact us on the mailing list for additional help. -Please attach the output of lstopo after having given the --enable-debug option -to ./configure and rebuilt completely, to get debugging output. Also attach the -/proc + /sys tarball generated by the installed script hwloc-gather-topology -when submitting problems about Linux, or send the output of kstat cpu_info in -the Solaris case, or the output of sysctl hw in the Darwin or BSD cases. - -History / Credits - -hwloc is the evolution and merger of the libtopology (http:// -runtime.bordeaux.inria.fr/libtopology/) project and the Portable Linux -Processor Affinity (PLPA) (http://www.open-mpi.org/projects/plpa/) project. -Because of functional and ideological overlap, these two code bases and ideas -were merged and released under the name "hwloc" as an Open MPI sub-project. - -libtopology was initially developed by the inria Runtime Team-Project (http:// -runtime.bordeaux.inria.fr/) (headed by Raymond Namyst (http:// -dept-info.labri.fr/~namyst/). PLPA was initially developed by the Open MPI -development team as a sub-project. Both are now deprecated in favor of hwloc, -which is distributed as an Open MPI sub-project. - -Further Reading - -The documentation chapters include - - * Terms and Definitions - * Command-Line Tools - * Environment Variables - * CPU and Memory Binding Overview - * I/O Devices - * Miscellaneous objects - * Multi-node Topologies - * Object attributes - * Importing and exporting topologies from/to XML files - * Synthetic topologies - * Interoperability With Other Software - * Thread Safety - * Components and plugins - * Embedding hwloc in Other Software - * Frequently Asked Questions - -Make sure to have had a look at those too! - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/README b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/README deleted file mode 100644 index c7d8d472bb..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/README +++ /dev/null @@ -1,36 +0,0 @@ -This Visual Studio support is experimental. -Thanks to Eloi Gaudry for contributing the first draft of files. - - -No PlatformToolset is specified, so that the default target is always -used during build. -That means your build may not be compatible with older systems. -Enforce a specific toolset before building if needed. - - -hwloc-assembler-remote is not built because it requires a hardwired -path to hwloc-assembler and it uses ssh. - -hwloc-compress-dir not built because needs work. - -hwloc-gather-topology is Linux specific. - -hwloc-ps is not built because it does nothing on Windows anyway. -Possible code proposed by Eloi Gaudry: - // Get the process list snapshot - HANDLE hProcessSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); - // Initialize the process entry structure - PROCESSENTRY32 ProcessEntry = { 0 } ; - ProcessEntry.dwSize = sizeof(ProcessEntry); - // Get the first process info - if (Process32First( hProcessSnapShot, &ProcessEntry)) { - do { - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, ProcessEntry.th32ProcessID) ; - if (hProcess) { - std::cerr << ProcessEntry.th32ProcessID << "(" << ProcessEntry.szExeFile << ")" << std::endl ; - } - // check the PROCESSENTRY32 for other members. - } while (Process32Next(hProcessSnapShot, &ProcessEntry)); - // Close the handle - CloseHandle( hProcessSnapShot ) ; - } diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-annotate.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-annotate.vcxproj deleted file mode 100644 index 42e9ca0f1a..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-annotate.vcxproj +++ /dev/null @@ -1,90 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB8F} - hwloc-bind - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-annotate.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-annotate.vcxproj.filters deleted file mode 100644 index 8c95a9b8ea..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-annotate.vcxproj.filters +++ /dev/null @@ -1,69 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-assembler.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-assembler.vcxproj deleted file mode 100644 index aba819a572..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-assembler.vcxproj +++ /dev/null @@ -1,90 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB9A} - hwloc-bind - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-assembler.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-assembler.vcxproj.filters deleted file mode 100644 index 2a1cb719c6..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-assembler.vcxproj.filters +++ /dev/null @@ -1,69 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-bind.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-bind.vcxproj deleted file mode 100644 index a544967d80..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-bind.vcxproj +++ /dev/null @@ -1,91 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB91} - hwloc-bind - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-bind.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-bind.vcxproj.filters deleted file mode 100644 index dea4bf6ee0..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-bind.vcxproj.filters +++ /dev/null @@ -1,72 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-calc.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-calc.vcxproj deleted file mode 100644 index 65e172d9bf..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-calc.vcxproj +++ /dev/null @@ -1,91 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB92} - hwloc-calc - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-calc.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-calc.vcxproj.filters deleted file mode 100644 index 96caf5dbf6..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-calc.vcxproj.filters +++ /dev/null @@ -1,72 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-diff.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-diff.vcxproj deleted file mode 100644 index c5d3750380..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-diff.vcxproj +++ /dev/null @@ -1,89 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB93} - hwloc-bind - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-diff.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-diff.vcxproj.filters deleted file mode 100644 index 7b648e90e9..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-diff.vcxproj.filters +++ /dev/null @@ -1,66 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distances.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distances.vcxproj deleted file mode 100644 index aadbb45d0e..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distances.vcxproj +++ /dev/null @@ -1,90 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB94} - hwloc-bind - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distances.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distances.vcxproj.filters deleted file mode 100644 index 7a1af4833f..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distances.vcxproj.filters +++ /dev/null @@ -1,69 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distrib.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distrib.vcxproj deleted file mode 100644 index 5407924ef3..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distrib.vcxproj +++ /dev/null @@ -1,90 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB95} - hwloc-bind - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distrib.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distrib.vcxproj.filters deleted file mode 100644 index 7b77f48587..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-distrib.vcxproj.filters +++ /dev/null @@ -1,69 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-info.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-info.vcxproj deleted file mode 100644 index ce01efe074..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-info.vcxproj +++ /dev/null @@ -1,91 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB96} - hwloc-info - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-info.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-info.vcxproj.filters deleted file mode 100644 index 9769af14a1..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-info.vcxproj.filters +++ /dev/null @@ -1,72 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-patch.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-patch.vcxproj deleted file mode 100644 index 64faf426e4..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-patch.vcxproj +++ /dev/null @@ -1,89 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB97} - hwloc-bind - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-patch.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-patch.vcxproj.filters deleted file mode 100644 index de6769da89..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc-patch.vcxproj.filters +++ /dev/null @@ -1,66 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc.sln b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc.sln deleted file mode 100644 index bfb53e27db..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc.sln +++ /dev/null @@ -1,121 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Express 2012 for Windows Desktop -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libhwloc", "libhwloc.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB8D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lstopo-no-graphics", "lstopo-no-graphics.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB8E}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-annotate", "hwloc-annotate.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB8F}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-assembler", "hwloc-assembler.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB90}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-bind", "hwloc-bind.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB91}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-calc", "hwloc-calc.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB92}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-diff", "hwloc-diff.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB93}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-distances", "hwloc-distances.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB94}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-distrib", "hwloc-distrib.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB95}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-info", "hwloc-info.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB96}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-patch", "hwloc-patch.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB97}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lstopo", "lstopo.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB98}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB8E} = {9DE76C6D-4773-4766-9F93-69C56166CB8E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lstopo-win", "lstopo-win.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB99}" - ProjectSection(ProjectDependencies) = postProject - {9DE76C6D-4773-4766-9F93-69C56166CB98} = {9DE76C6D-4773-4766-9F93-69C56166CB98} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Release|x64 = Release|x64 - ReleaseStatic|x64 = ReleaseStatic|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9DE76C6D-4773-4766-9F93-69C56166CB8D}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB8D}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB8D}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB8D}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB8E}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB8E}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB8E}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB8F}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB8F}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB8F}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB90}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB90}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB90}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB91}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB91}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB91}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB92}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB92}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB92}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB93}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB93}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB93}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB94}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB94}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB94}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB95}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB95}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB95}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB96}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB96}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB96}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB97}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB97}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB97}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB98}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB98}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB98}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB99}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB99}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB99}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB99}.ReleaseStatic|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB9A}.Release|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB9A}.Release|x64.Build.0 = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB9A}.ReleaseStatic|x64.ActiveCfg = Release|x64 - {9DE76C6D-4773-4766-9F93-69C56166CB9A}.ReleaseStatic|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc_config.h b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc_config.h deleted file mode 100644 index 49237163b0..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/hwloc_config.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2014 Inria. All rights reserved. - * Copyright © 2009-2012 Université Bordeaux - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* The configuration file */ - -#ifndef HWLOC_CONFIG_H -#define HWLOC_CONFIG_H - -#define __hwloc_restrict -#define __hwloc_inline __inline - -#define __hwloc_attribute_unused -#define __hwloc_attribute_malloc -#define __hwloc_attribute_const -#define __hwloc_attribute_pure -#define __hwloc_attribute_deprecated -#define __hwloc_attribute_may_alias - -/* Defined to 1 if you have the `windows.h' header. */ -#define HWLOC_HAVE_WINDOWS_H 1 -#define hwloc_pid_t HANDLE -#define hwloc_thread_t HANDLE - -#include -#include -typedef DWORDLONG hwloc_uint64_t; -typedef SSIZE_T ssize_t; -#define snprintf _snprintf -#define strcasecmp _stricmp -#define strncasecmp _strnicmp -#define strdup _strdup -#define strtoull _strtoui64 -#define strtoll _strtoi64 -#define S_ISREG(m) ((m)&_S_IFREG) -#define S_ISDIR( m ) (((m) & S_IFMT) == S_IFDIR) -#define putenv _putenv - -#if defined( _USRDLL ) /* dynamic linkage */ -#if defined( DECLSPEC_EXPORTS ) -#define HWLOC_DECLSPEC __declspec(dllexport) -#else -#define HWLOC_DECLSPEC __declspec(dllimport) -#endif -#else /* static linkage */ -#define HWLOC_DECLSPEC -#endif - -/* Whether we need to re-define all the hwloc public symbols or not */ -#define HWLOC_SYM_TRANSFORM 0 - -/* The hwloc symbol prefix */ -#define HWLOC_SYM_PREFIX hwloc_ - -/* The hwloc symbol prefix in all caps */ -#define HWLOC_SYM_PREFIX_CAPS HWLOC_ - -#endif /* HWLOC_CONFIG_H */ diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/libhwloc.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/libhwloc.vcxproj deleted file mode 100644 index e1475e6df9..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/libhwloc.vcxproj +++ /dev/null @@ -1,238 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB8D} - libhwloc - Win32Proj - - - - DebugStatic - x64 - - - DebugDll - x64 - - - ReleaseStatic - x64 - - - Release - x64 - - - - - DynamicLibrary - true - MultiByte - v110 - - - StaticLibrary - true - MultiByte - v110 - - - DynamicLibrary - false - true - MultiByte - v110 - - - StaticLibrary - false - true - MultiByte - v110 - - - - - - - - - - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\src\static-components.h - - - - - Level3 - Disabled - WIN32;WIN64;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;%(AdditionalIncludeDirectories) - - - Console - true - - - - - copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\src\static-components.h - - - - - Level3 - Disabled - WIN32;WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;%(AdditionalIncludeDirectories) - - - Console - true - - - - - copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\src\static-components.h - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\src - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - $(OutDir)$(ProjectName).lib - true - $(OutDir)$(TargetName).dll - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - - - - - copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\src\static-components.h - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\src - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - $(OutDir)$(ProjectName).lib - true - $(OutDir)$(TargetName).dll - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/libhwloc.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/libhwloc.vcxproj.filters deleted file mode 100644 index 77b4f77901..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/libhwloc.vcxproj.filters +++ /dev/null @@ -1,123 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-no-graphics.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-no-graphics.vcxproj deleted file mode 100644 index 48659e8049..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-no-graphics.vcxproj +++ /dev/null @@ -1,97 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB8E} - lstopo-no-graphics - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc;..\..\utils\lstopo - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-no-graphics.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-no-graphics.vcxproj.filters deleted file mode 100644 index d888f3a183..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-no-graphics.vcxproj.filters +++ /dev/null @@ -1,90 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-win.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-win.vcxproj deleted file mode 100644 index fdbefca8cc..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-win.vcxproj +++ /dev/null @@ -1,99 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB99} - lstopo-no-graphics - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - LSTOPO_HAVE_GRAPHICS=1;PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc;..\..\utils\lstopo - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Windows - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - mainCRTStartup - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-win.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-win.vcxproj.filters deleted file mode 100644 index 4ce0ed87fb..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo-win.vcxproj.filters +++ /dev/null @@ -1,93 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo.vcxproj b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo.vcxproj deleted file mode 100644 index ba75246409..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo.vcxproj +++ /dev/null @@ -1,98 +0,0 @@ - - - - {9DE76C6D-4773-4766-9F93-69C56166CB98} - lstopo-no-graphics - Win32Proj - - - - Release - x64 - - - - - Application - false - true - MultiByte - v110 - - - - - - - - - - false - true - $(ProjectName)-5 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - - - - Level3 - - - MaxSpeed - true - MultiThreadedDLL - true - true - LSTOPO_HAVE_GRAPHICS=1;PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - ..\..\include;..\..\utils\hwloc;..\..\utils\lstopo - - - $(IntDir)$(TargetFileName).intermediate.manifest - false - false - false - libcmt.lib;%(IgnoreSpecificDefaultLibraries) - true - $(OutDir)$(TargetName).exe - $(OutDir)$(ProjectName).pdb - LinkVerboseLib - Console - true - MachineX64 - NoErrorReport - $(SolutionDir)$(Platform)\Release;$(AdditionalLibraryDirectories) - libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo.vcxproj.filters b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo.vcxproj.filters deleted file mode 100644 index 4ce0ed87fb..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/lstopo.vcxproj.filters +++ /dev/null @@ -1,93 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/private_config.h b/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/private_config.h deleted file mode 100644 index 942aed787e..0000000000 --- a/opal/mca/hwloc/hwloc1112/hwloc/contrib/windows/private_config.h +++ /dev/null @@ -1,674 +0,0 @@ -/* - * Copyright © 2009, 2011, 2012 CNRS. All rights reserved. - * Copyright © 2009-2015 Inria. All rights reserved. - * Copyright © 2009, 2011, 2012, 2015 Université Bordeaux. All rights reserved. - * Copyright © 2009 Cisco Systems, Inc. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#ifndef HWLOC_CONFIGURE_H -#define HWLOC_CONFIGURE_H - -#define DECLSPEC_EXPORTS - -#define HWLOC_HAVE_MSVC_CPUIDEX 1 - -/* Define to 1 if the system has the type `CACHE_DESCRIPTOR'. */ -#define HAVE_CACHE_DESCRIPTOR 0 - -/* Define to 1 if the system has the type `CACHE_RELATIONSHIP'. */ -#define HAVE_CACHE_RELATIONSHIP 0 - -/* Define to 1 if you have the `clz' function. */ -/* #undef HAVE_CLZ */ - -/* Define to 1 if you have the `clzl' function. */ -/* #undef HAVE_CLZL */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_CL_CL_EXT_H */ - -/* Define to 1 if you have the `cpuset_setaffinity' function. */ -/* #undef HAVE_CPUSET_SETAFFINITY */ - -/* Define to 1 if you have the `cpuset_setid' function. */ -/* #undef HAVE_CPUSET_SETID */ - -/* Define to 1 if we have -lcuda */ -/* #undef HAVE_CUDA */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_CUDA_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_CUDA_RUNTIME_API_H */ - -/* Define to 1 if you have the declaration of `CL_DEVICE_TOPOLOGY_AMD', and to - 0 if you don't. */ -/* #undef HAVE_DECL_CL_DEVICE_TOPOLOGY_AMD */ - -/* Define to 1 if you have the declaration of `CTL_HW', and to 0 if you don't. - */ -/* #undef HAVE_DECL_CTL_HW */ - -/* Define to 1 if you have the declaration of `fabsf', and to 0 if you don't. - */ -#define HAVE_DECL_FABSF 1 - -/* Define to 1 if you have the declaration of `HW_NCPU', and to 0 if you - don't. */ -/* #undef HAVE_DECL_HW_NCPU */ - -/* Define to 1 if you have the declaration of - `nvmlDeviceGetMaxPcieLinkGeneration', and to 0 if you don't. */ -/* #undef HAVE_DECL_NVMLDEVICEGETMAXPCIELINKGENERATION */ - -/* Define to 1 if you have the declaration of `pthread_getaffinity_np', and to - 0 if you don't. */ -#define HAVE_DECL_PTHREAD_GETAFFINITY_NP 0 - -/* Define to 1 if you have the declaration of `pthread_setaffinity_np', and to - 0 if you don't. */ -#define HAVE_DECL_PTHREAD_SETAFFINITY_NP 0 - -/* Define to 1 if you have the declaration of `strtoull', and to 0 if you - don't. */ -#define HAVE_DECL_STRTOULL 1 - -/* Define to 1 if you have the declaration of `_SC_LARGE_PAGESIZE', and to 0 - if you don't. */ -#define HAVE_DECL__SC_LARGE_PAGESIZE 0 - -/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_CONF', and to 0 - if you don't. */ -#define HAVE_DECL__SC_NPROCESSORS_CONF 0 - -/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_ONLN', and to 0 - if you don't. */ -#define HAVE_DECL__SC_NPROCESSORS_ONLN 0 - -/* Define to 1 if you have the declaration of `_SC_NPROC_CONF', and to 0 if - you don't. */ -#define HAVE_DECL__SC_NPROC_CONF 0 - -/* Define to 1 if you have the declaration of `_SC_NPROC_ONLN', and to 0 if - you don't. */ -#define HAVE_DECL__SC_NPROC_ONLN 0 - -/* Define to 1 if you have the declaration of `_SC_PAGESIZE', and to 0 if you - don't. */ -#define HAVE_DECL__SC_PAGESIZE 0 - -/* Define to 1 if you have the declaration of `_SC_PAGE_SIZE', and to 0 if you - don't. */ -#define HAVE_DECL__SC_PAGE_SIZE 0 - -/* Define to 1 if you have the header file. */ -/* #define HAVE_DIRENT_H 1 */ -#undef HAVE_DIRENT_H - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_DLFCN_H */ - -/* Define to 1 if you have the `ffs' function. */ -/* #undef HAVE_FFS */ - -/* Define to 1 if you have the `ffsl' function. */ -/* #undef HAVE_FFSL */ - -/* Define to 1 if you have the `fls' function. */ -/* #undef HAVE_FLS */ - -/* Define to 1 if you have the `flsl' function. */ -/* #undef HAVE_FLSL */ - -/* Define to 1 if you have the `getpagesize' function. */ -#define HAVE_GETPAGESIZE 1 - -/* Define to 1 if the system has the type `GROUP_AFFINITY'. */ -#define HAVE_GROUP_AFFINITY 1 - -/* Define to 1 if the system has the type `GROUP_RELATIONSHIP'. */ -#define HAVE_GROUP_RELATIONSHIP 1 - -/* Define to 1 if you have the `host_info' function. */ -/* #undef HAVE_HOST_INFO */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_INFINIBAND_VERBS_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if the system has the type `KAFFINITY'. */ -#define HAVE_KAFFINITY 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_KSTAT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_LANGINFO_H */ - -/* Define to 1 if we have -lgdi32 */ -#define HAVE_LIBGDI32 1 - -/* Define to 1 if we have -libverbs */ -/* #undef HAVE_LIBIBVERBS */ - -/* Define to 1 if we have -lkstat */ -/* #undef HAVE_LIBKSTAT */ - -/* Define to 1 if we have -llgrp */ -/* #undef HAVE_LIBLGRP */ - -/* Define to 1 if you have the header file. */ -#define HAVE_LOCALE_H 1 - -/* Define to 1 if the system has the type `LOGICAL_PROCESSOR_RELATIONSHIP'. */ -#define HAVE_LOGICAL_PROCESSOR_RELATIONSHIP 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_MACH_MACH_HOST_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_MACH_MACH_INIT_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_MALLOC_H 1 - -/* Define to 1 if you have the `memalign' function. */ -/* #undef HAVE_MEMALIGN */ - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if we have -lmyriexpress */ -/* #undef HAVE_MYRIEXPRESS */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_MYRIEXPRESS_H */ - -/* Define to 1 if you have the `nl_langinfo' function. */ -/* #undef HAVE_NL_LANGINFO */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_NUMAIF_H */ - -/* Define to 1 if the system has the type `NUMA_NODE_RELATIONSHIP'. */ -#define HAVE_NUMA_NODE_RELATIONSHIP 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_NVCTRL_NVCTRL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_NVML_H */ - -/* Define to 1 if you have the `openat' function. */ -/* #undef HAVE_OPENAT */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_PICL_H */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if the system has the type `PROCESSOR_CACHE_TYPE'. */ -#define HAVE_PROCESSOR_CACHE_TYPE 1 - -/* Define to 1 if the system has the type `PROCESSOR_GROUP_INFO'. */ -#define HAVE_PROCESSOR_GROUP_INFO 1 - -/* Define to 1 if the system has the type `PROCESSOR_RELATIONSHIP'. */ -#define HAVE_PROCESSOR_RELATIONSHIP 1 - -/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_BLOCK'. */ -/* #undef HAVE_PSAPI_WORKING_SET_EX_BLOCK */ - -/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_INFORMATION'. - */ -/* #undef HAVE_PSAPI_WORKING_SET_EX_INFORMATION */ - -/* Define to 1 if the system has the type `PROCESSOR_NUMBER'. */ -#define HAVE_PROCESSOR_NUMBER 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_PTHREAD_NP_H */ - -/* Define to 1 if the system has the type `pthread_t'. */ -/* #undef HAVE_PTHREAD_T */ -#undef HAVE_PTHREAD_T - -/* Define to 1 if you have the `putwc' function. */ -#define HAVE_PUTWC 1 - -/* Define to 1 if the system has the type `RelationProcessorPackage'. */ -/* #undef HAVE_RELATIONPROCESSORPACKAGE */ - -/* Define to 1 if you have the `setlocale' function. */ -#define HAVE_SETLOCALE 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the `strftime' function. */ -#define HAVE_STRFTIME 1 - -/* Define to 1 if you have the header file. */ -/* #define HAVE_STRINGS_H 1*/ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the `strncasecmp' function. */ -#define HAVE_STRNCASECMP 1 - -/* Define to '1' if sysctl is present and usable */ -/* #undef HAVE_SYSCTL */ - -/* Define to '1' if sysctlbyname is present and usable */ -/* #undef HAVE_SYSCTLBYNAME */ - -/* Define to 1 if the system has the type - `SYSTEM_LOGICAL_PROCESSOR_INFORMATION'. */ -#define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION 1 - -/* Define to 1 if the system has the type - `SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX'. */ -#define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_CPUSET_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_LGRP_USER_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_MMAN_H */ - -/* Define to 1 if you have the header file. */ -/* #define HAVE_SYS_PARAM_H 1 */ -#undef HAVE_SYS_PARAM_H - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_SYSCTL_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_UTSNAME_H */ - -/* Define to 1 if you have the `uname' function. */ -/* #undef HAVE_UNAME */ - -/* Define to 1 if you have the header file. */ -/* #define HAVE_UNISTD_H 1 */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `uselocale' function. */ -/* #undef HAVE_USELOCALE */ - -/* Define to 1 if the system has the type `wchar_t'. */ -#define HAVE_WCHAR_T 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_X11_KEYSYM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_X11_XLIB_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_X11_XUTIL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_XLOCALE_H */ - -/* Define to 1 on AIX */ -/* #undef HWLOC_AIX_SYS */ - -/* Define to 1 on BlueGene/Q */ -/* #undef HWLOC_BGQ_SYS */ - -/* Whether C compiler supports symbol visibility or not */ -#define HWLOC_C_HAVE_VISIBILITY 0 - -/* Define to 1 on Darwin */ -/* #undef HWLOC_DARWIN_SYS */ - -/* Whether we are in debugging mode or not */ -/* #undef HWLOC_DEBUG */ - -/* Define to 1 on *FREEBSD */ -/* #undef HWLOC_FREEBSD_SYS */ - -/* Whether your compiler has __attribute__ or not */ -/* #define HWLOC_HAVE_ATTRIBUTE 1 */ -#undef HWLOC_HAVE_ATTRIBUTE - -/* Whether your compiler has __attribute__ aligned or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_ALIGNED 1 */ - -/* Whether your compiler has __attribute__ always_inline or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE 1 */ - -/* Whether your compiler has __attribute__ cold or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_COLD 1 */ - -/* Whether your compiler has __attribute__ const or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_CONST 1 */ - -/* Whether your compiler has __attribute__ deprecated or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_DEPRECATED 1 */ - -/* Whether your compiler has __attribute__ format or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_FORMAT 1 */ - -/* Whether your compiler has __attribute__ hot or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_HOT 1 */ - -/* Whether your compiler has __attribute__ malloc or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_MALLOC 1 */ - -/* Whether your compiler has __attribute__ may_alias or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS 1 */ - -/* Whether your compiler has __attribute__ nonnull or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_NONNULL 1 */ - -/* Whether your compiler has __attribute__ noreturn or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_NORETURN 1 */ - -/* Whether your compiler has __attribute__ no_instrument_function or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION 1 */ - -/* Whether your compiler has __attribute__ packed or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_PACKED 1 */ - -/* Whether your compiler has __attribute__ pure or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_PURE 1 */ - -/* Whether your compiler has __attribute__ sentinel or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_SENTINEL 1 */ - -/* Whether your compiler has __attribute__ unused or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_UNUSED 1 */ - -/* Whether your compiler has __attribute__ warn unused result or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT 1 */ - -/* Whether your compiler has __attribute__ weak alias or not */ -/* #define HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS 1 */ - -/* Define to 1 if your `ffs' function is known to be broken. */ -/* #undef HWLOC_HAVE_BROKEN_FFS */ - -/* Define to 1 if you have the `cairo' library. */ -/* #undef HWLOC_HAVE_CAIRO */ - -/* Define to 1 if you have the `clz' function. */ -/* #undef HWLOC_HAVE_CLZ */ - -/* Define to 1 if you have the `clzl' function. */ -/* #undef HWLOC_HAVE_CLZL */ - -/* Define to 1 if you have cpuid */ -/* #undef HWLOC_HAVE_CPUID */ - -/* Define to 1 if the CPU_SET macro works */ -/* #undef HWLOC_HAVE_CPU_SET */ - -/* Define to 1 if the CPU_SET_S macro works */ -/* #undef HWLOC_HAVE_CPU_SET_S */ - -/* Define to 1 if you have the `cudart' SDK. */ -/* #undef HWLOC_HAVE_CUDART */ - -/* Define to 1 if function `clz' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_CLZ */ - -/* Define to 1 if function `clzl' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_CLZL */ - -/* Define to 1 if function `ffs' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_FFS */ - -/* Define to 1 if function `ffsl' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_FFSL */ - -/* Define to 1 if function `fls' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_FLS */ - -/* Define to 1 if function `flsl' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_FLSL */ - -/* Define to 1 if you have the `ffs' function. */ -/* #undef HWLOC_HAVE_FFS */ - -/* Define to 1 if you have the `ffsl' function. */ -/* #undef HWLOC_HAVE_FFSL */ - -/* Define to 1 if you have the `fls' function. */ -/* #undef HWLOC_HAVE_FLS */ - -/* Define to 1 if you have the `flsl' function. */ -/* #undef HWLOC_HAVE_FLSL */ - -/* Define to 1 if you have the GL module components. */ -/* #undef HWLOC_HAVE_GL */ - -/* Define to 1 if you have a library providing the termcap interface */ -/* #undef HWLOC_HAVE_LIBTERMCAP */ - -/* Define to 1 if you have the `libxml2' library. */ -/* #undef HWLOC_HAVE_LIBXML2 */ - -/* Define to 1 if building the Linux PCI component */ -/* #undef HWLOC_HAVE_LINUXPCI */ - -/* Define to 1 if mbind is available. */ -/* #undef HWLOC_HAVE_MBIND */ - -/* Define to 1 if migrate_pages is available. */ -/* #undef HWLOC_HAVE_MIGRATE_PAGES */ - -/* Define to 1 if you have the `NVML' library. */ -/* #undef HWLOC_HAVE_NVML */ - -/* Define to 1 if glibc provides the old prototype (without length) of - sched_setaffinity() */ -/* #undef HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - -/* Define to 1 if you have the `OpenCL' library. */ -/* #undef HWLOC_HAVE_OPENCL */ - -/* Define to 1 if the hwloc library should support dynamically-loaded plugins - */ -/* #undef HWLOC_HAVE_PLUGINS */ - -/* `Define to 1 if you have pthread_getthrds_np' */ -/* #undef HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ - -/* Define to 1 if pthread mutexes are available */ -/* #undef HWLOC_HAVE_PTHREAD_MUTEX */ - -/* Define to 1 if glibc provides a prototype of sched_setaffinity() */ -#define HWLOC_HAVE_SCHED_SETAFFINITY 1 - -/* Define to 1 if set_mempolicy is available. */ -/* #undef HWLOC_HAVE_SET_MEMPOLICY */ - -/* Define to 1 if you have the header file. */ -#define HWLOC_HAVE_STDINT_H 1 - -/* Define to 1 if you have the `windows.h' header. */ -#define HWLOC_HAVE_WINDOWS_H 1 - -/* Define to 1 if X11 headers including Xutil.h and keysym.h are available. */ -/* #undef HWLOC_HAVE_X11_KEYSYM */ - -/* Define to 1 if function `syscall' is available */ -/* #undef HWLOC_HAVE_SYSCALL */ - -/* Define to 1 on HP-UX */ -/* #undef HWLOC_HPUX_SYS */ - -/* Define to 1 on Irix */ -/* #undef HWLOC_IRIX_SYS */ - -/* Define to 1 on Linux */ -/* #undef HWLOC_LINUX_SYS */ - -/* Define to 1 on *NETBSD */ -/* #undef HWLOC_NETBSD_SYS */ - -/* Define to 1 on OSF */ -/* #undef HWLOC_OSF_SYS */ - -/* The size of `unsigned int', as computed by sizeof */ -#define HWLOC_SIZEOF_UNSIGNED_INT 4 - -/* The size of `unsigned long', as computed by sizeof */ -#define HWLOC_SIZEOF_UNSIGNED_LONG 4 - -/* Define to 1 on Solaris */ -/* #undef HWLOC_SOLARIS_SYS */ - -/* The hwloc symbol prefix */ -#define HWLOC_SYM_PREFIX hwloc_ - -/* The hwloc symbol prefix in all caps */ -#define HWLOC_SYM_PREFIX_CAPS HWLOC_ - -/* Whether we need to re-define all the hwloc public symbols or not */ -#define HWLOC_SYM_TRANSFORM 0 - -/* Define to 1 on unsupported systems */ -/* #undef HWLOC_UNSUPPORTED_SYS */ - -/* Define to 1 if ncurses works, preferred over curses */ -/* #undef HWLOC_USE_NCURSES */ - -/* Define to 1 on WINDOWS */ -#define HWLOC_WIN_SYS 1 - -/* Define to 1 on x86_32 */ -/* #undef HWLOC_X86_32_ARCH */ - -/* Define to 1 on x86_64 */ -#define HWLOC_X86_64_ARCH 1 - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#define LT_OBJDIR ".libs/" - -/* Name of package */ -#define PACKAGE "hwloc" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "http://www.open-mpi.org/projects/hwloc/" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "hwloc" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "hwloc" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "hwloc" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION HWLOC_VERSION - -/* The size of `unsigned int', as computed by sizeof. */ -#define SIZEOF_UNSIGNED_INT 4 - -/* The size of `unsigned long', as computed by sizeof. */ -#define SIZEOF_UNSIGNED_LONG 4 - -/* The size of `void *', as computed by sizeof. */ -#define SIZEOF_VOID_P 8 - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Enable extensions on HP-UX. */ -#ifndef _HPUX_SOURCE -# define _HPUX_SOURCE 1 -#endif - - -/* Enable extensions on AIX 3, Interix. */ -/* -#ifndef _ALL_SOURCE -# define _ALL_SOURCE 1 -#endif -*/ - -/* Enable GNU extensions on systems that have them. */ -/* -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif -*/ -/* Enable threading extensions on Solaris. */ -/* -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -*/ -/* Enable extensions on HP NonStop. */ -/* -#ifndef _TANDEM_SOURCE -# define _TANDEM_SOURCE 1 -#endif -*/ -/* Enable general extensions on Solaris. */ -/* -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif -*/ - - -/* Version number of package */ -#define HWLOC_VERSION "1.11.1" -#define VERSION HWLOC_VERSION - -/* Define to 1 if the X Window System is missing or not being used. */ -#define X_DISPLAY_MISSING 1 - -/* Define to 1 if on MINIX. */ -/* #undef _MINIX */ - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -/* #undef _POSIX_1_SOURCE */ - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -/* #undef _POSIX_SOURCE */ - -/* Define this to the process ID type */ -#define hwloc_pid_t HANDLE - -/* Define this to either strncasecmp or strncmp */ -#define hwloc_strncasecmp strncasecmp - -/* Define this to the thread ID type */ -#define hwloc_thread_t HANDLE - - -#endif /* HWLOC_CONFIGURE_H */ diff --git a/opal/mca/hwloc/hwloc1112/Makefile.am b/opal/mca/hwloc/hwloc1113/Makefile.am similarity index 85% rename from opal/mca/hwloc/hwloc1112/Makefile.am rename to opal/mca/hwloc/hwloc1113/Makefile.am index 5ab0b36f50..6348dd5635 100644 --- a/opal/mca/hwloc/hwloc1112/Makefile.am +++ b/opal/mca/hwloc/hwloc1113/Makefile.am @@ -27,16 +27,16 @@ EXTRA_DIST = \ SUBDIRS = hwloc # Headers and sources -headers = hwloc1112.h -sources = hwloc1112_component.c +headers = hwloc1113.h +sources = hwloc1113_component.c # We only ever build this component statically -noinst_LTLIBRARIES = libmca_hwloc_hwloc1112.la -libmca_hwloc_hwloc1112_la_SOURCES = $(headers) $(sources) -nodist_libmca_hwloc_hwloc1112_la_SOURCES = $(nodist_headers) -libmca_hwloc_hwloc1112_la_LDFLAGS = -module -avoid-version $(opal_hwloc_hwloc1112_LDFLAGS) -libmca_hwloc_hwloc1112_la_LIBADD = $(opal_hwloc_hwloc1112_LIBS) -libmca_hwloc_hwloc1112_la_DEPENDENCIES = \ +noinst_LTLIBRARIES = libmca_hwloc_hwloc1113.la +libmca_hwloc_hwloc1113_la_SOURCES = $(headers) $(sources) +nodist_libmca_hwloc_hwloc1113_la_SOURCES = $(nodist_headers) +libmca_hwloc_hwloc1113_la_LDFLAGS = -module -avoid-version $(opal_hwloc_hwloc1113_LDFLAGS) +libmca_hwloc_hwloc1113_la_LIBADD = $(opal_hwloc_hwloc1113_LIBS) +libmca_hwloc_hwloc1113_la_DEPENDENCIES = \ $(HWLOC_top_builddir)/src/libhwloc_embedded.la # Since the rest of the code base includes the underlying hwloc.h, we diff --git a/opal/mca/hwloc/hwloc1112/hwloc/README-ompi.txt b/opal/mca/hwloc/hwloc1113/README-ompi.txt similarity index 55% rename from opal/mca/hwloc/hwloc1112/hwloc/README-ompi.txt rename to opal/mca/hwloc/hwloc1113/README-ompi.txt index 745631bf93..1de58d8983 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/README-ompi.txt +++ b/opal/mca/hwloc/hwloc1113/README-ompi.txt @@ -1,5 +1,4 @@ -Cherry-picked commits after 1.11.2: +Cherry-picked commits after 1.11.3: -open-mpi/hwloc@d2d07b9a2268699e13e1644b4f2ef7a53ef7396c open-mpi/hwloc@9549fd59af04dca2e2340e17f0e685f8c552d818 open-mpi/hwloc@0ab7af5e90fc2b58be30b2126cc2a73f9f7ecfe9 diff --git a/opal/mca/hwloc/hwloc1113/configure.m4 b/opal/mca/hwloc/hwloc1113/configure.m4 new file mode 100644 index 0000000000..cb9c7a1fc2 --- /dev/null +++ b/opal/mca/hwloc/hwloc1113/configure.m4 @@ -0,0 +1,174 @@ +# -*- shell-script -*- +# +# Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2014-2015 Intel, Inc. All rights reserved. +# Copyright (c) 2015 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2016 Los Alamos National Security, LLC. All rights +# reserved. +# +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# +# Priority +# +AC_DEFUN([MCA_opal_hwloc_hwloc1113_PRIORITY], [90]) + +# +# Force this component to compile in static-only mode +# +AC_DEFUN([MCA_opal_hwloc_hwloc1113_COMPILE_MODE], [ + AC_MSG_CHECKING([for MCA component $2:$3 compile mode]) + $4="static" + AC_MSG_RESULT([$$4]) +]) + +# Include hwloc m4 files +m4_include(opal/mca/hwloc/hwloc1113/hwloc/config/hwloc.m4) +m4_include(opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_pkg.m4) +m4_include(opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_check_attributes.m4) +m4_include(opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_check_visibility.m4) +m4_include(opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_check_vendor.m4) +m4_include(opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_components.m4) + +# MCA_hwloc_hwloc1113_POST_CONFIG() +# --------------------------------- +AC_DEFUN([MCA_opal_hwloc_hwloc1113_POST_CONFIG],[ + OPAL_VAR_SCOPE_PUSH([opal_hwloc_hwloc1113_basedir]) + + # If we won, then do all the rest of the setup + AS_IF([test "$1" = "1" && test "$opal_hwloc_hwloc1113_support" = "yes"], + [ + # Set this variable so that the framework m4 knows what + # file to include in opal/mca/hwloc/hwloc.h + opal_hwloc_hwloc1113_basedir=opal/mca/hwloc/hwloc1113 + opal_hwloc_base_include="$opal_hwloc_hwloc1113_basedir/hwloc1113.h" + + # Add some stuff to CPPFLAGS so that the rest of the source + # tree can be built + file=$opal_hwloc_hwloc1113_basedir/hwloc + CPPFLAGS="$CPPFLAGS -I$OPAL_TOP_SRCDIR/$file/include" + AS_IF([test "$OPAL_TOP_BUILDDIR" != "$OPAL_TOP_SRCDIR"], + [CPPFLAGS="$CPPFLAGS -I$OPAL_TOP_BUILDDIR/$file/include"]) + unset file + ]) + OPAL_VAR_SCOPE_POP + + # This must be run unconditionally + HWLOC_DO_AM_CONDITIONALS +])dnl + + +# MCA_hwloc_hwloc1113_CONFIG([action-if-found], [action-if-not-found]) +# -------------------------------------------------------------------- +AC_DEFUN([MCA_opal_hwloc_hwloc1113_CONFIG],[ + # Hwloc needs to know if we have Verbs support + AC_REQUIRE([OPAL_CHECK_VERBS_DIR]) + + AC_CONFIG_FILES([opal/mca/hwloc/hwloc1113/Makefile]) + + OPAL_VAR_SCOPE_PUSH([HWLOC_VERSION opal_hwloc_hwloc1113_save_CPPFLAGS opal_hwloc_hwloc1113_save_LDFLAGS opal_hwloc_hwloc1113_save_LIBS opal_hwloc_hwloc1113_save_cairo opal_hwloc_hwloc1113_save_xml opal_hwloc_hwloc1113_basedir opal_hwloc_hwloc1113_file opal_hwloc_hwloc1113_save_cflags CPPFLAGS_save LIBS_save]) + + # default to this component not providing support + opal_hwloc_hwloc1113_basedir=opal/mca/hwloc/hwloc1113 + opal_hwloc_hwloc1113_support=no + + if test "$with_hwloc" = "internal" || test -z "$with_hwloc" || test "$with_hwloc" = "yes"; then + opal_hwloc_hwloc1113_save_CPPFLAGS=$CPPFLAGS + opal_hwloc_hwloc1113_save_LDFLAGS=$LDFLAGS + opal_hwloc_hwloc1113_save_LIBS=$LIBS + + # Run the hwloc configuration - set the prefix to minimize + # the chance that someone will use the internal symbols + HWLOC_SET_SYMBOL_PREFIX([opal_hwloc1113_]) + + # save XML or graphical options + opal_hwloc_hwloc1113_save_cairo=$enable_cairo + opal_hwloc_hwloc1113_save_xml=$enable_xml + opal_hwloc_hwloc1113_save_static=$enable_static + opal_hwloc_hwloc1113_save_shared=$enable_shared + opal_hwloc_hwloc1113_save_plugins=$enable_plugins + + # never enable hwloc's graphical option + enable_cairo=no + + # never enable hwloc's plugin system + enable_plugins=no + enable_static=yes + enable_shared=no + + # Override -- disable hwloc's libxml2 support, but enable the + # native hwloc XML support + enable_libxml2=no + enable_xml=yes + + # hwloc checks for compiler visibility, and its needs to do + # this without "picky" flags. + opal_hwloc_hwloc1113_save_cflags=$CFLAGS + CFLAGS=$OPAL_CFLAGS_BEFORE_PICKY + HWLOC_SETUP_CORE([opal/mca/hwloc/hwloc1113/hwloc], + [AC_MSG_CHECKING([whether hwloc configure succeeded]) + AC_MSG_RESULT([yes]) + HWLOC_VERSION="internal v`$srcdir/$opal_hwloc_hwloc1113_basedir/hwloc/config/hwloc_get_version.sh $srcdir/$opal_hwloc_hwloc1113_basedir/hwloc/VERSION`" + + # Build flags for our Makefile.am + opal_hwloc_hwloc1113_LDFLAGS='$(HWLOC_EMBEDDED_LDFLAGS)' + opal_hwloc_hwloc1113_LIBS='$(OPAL_TOP_BUILDDIR)/'"$opal_hwloc_hwloc1113_basedir"'/hwloc/src/libhwloc_embedded.la $(HWLOC_EMBEDDED_LIBS)' + opal_hwloc_hwloc1113_support=yes + + AC_DEFINE_UNQUOTED([HWLOC_HWLOC1113_HWLOC_VERSION], + ["$HWLOC_VERSION"], + [Version of hwloc]) + + # Do we have verbs support? + CPPFLAGS_save=$CPPFLAGS + AS_IF([test "$opal_want_verbs" = "yes"], + [CPPFLAGS="-I$opal_verbs_dir/include $CPPFLAGS"]) + AC_CHECK_HEADERS([infiniband/verbs.h]) + CPPFLAGS=$CPPFLAGS_save + ], + [AC_MSG_CHECKING([whether hwloc configure succeeded]) + AC_MSG_RESULT([no]) + opal_hwloc_hwloc1113_support=no]) + CFLAGS=$opal_hwloc_hwloc1113_save_cflags + + # Restore some env variables, if necessary + AS_IF([test -n "$opal_hwloc_hwloc1113_save_cairo"], + [enable_cairo=$opal_hwloc_hwloc1113_save_cairo]) + AS_IF([test -n "$opal_hwloc_hwloc1113_save_xml"], + [enable_xml=$opal_hwloc_hwloc1113_save_xml]) + AS_IF([test -n "$opal_hwloc_hwloc1113_save_static"], + [enable_static=$opal_hwloc_hwloc1113_save_static]) + AS_IF([test -n "$opal_hwloc_hwloc1113_save_shared"], + [enable_shared=$opal_hwloc_hwloc1113_save_shared]) + AS_IF([test -n "$opal_hwloc_hwloc1113_save_plugins"], + [enable_plugins=$opal_hwloc_hwloc1113_save_shared]) + + CPPFLAGS=$opal_hwloc_hwloc1113_save_CPPFLAGS + LDFLAGS=$opal_hwloc_hwloc1113_save_LDFLAGS + LIBS=$opal_hwloc_hwloc1113_save_LIBS + + AC_SUBST([opal_hwloc_hwloc1113_CFLAGS]) + AC_SUBST([opal_hwloc_hwloc1113_CPPFLAGS]) + AC_SUBST([opal_hwloc_hwloc1113_LDFLAGS]) + AC_SUBST([opal_hwloc_hwloc1113_LIBS]) + + # Finally, add some flags to the wrapper compiler so that our + # headers can be found. + hwloc_hwloc1113_WRAPPER_EXTRA_LDFLAGS="$HWLOC_EMBEDDED_LDFLAGS" + hwloc_hwloc1113_WRAPPER_EXTRA_LIBS="$HWLOC_EMBEDDED_LIBS" + hwloc_hwloc1113_WRAPPER_EXTRA_CPPFLAGS='-I${pkgincludedir}/'"$opal_hwloc_hwloc1113_basedir/hwloc/include" + fi + + # Done! + AS_IF([test "$opal_hwloc_hwloc1113_support" = "yes"], + [$1], + [$2]) + + OPAL_VAR_SCOPE_POP +])dnl diff --git a/opal/mca/hwloc/hwloc1112/hwloc/AUTHORS b/opal/mca/hwloc/hwloc1113/hwloc/AUTHORS similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/AUTHORS rename to opal/mca/hwloc/hwloc1113/hwloc/AUTHORS diff --git a/opal/mca/hwloc/hwloc1112/hwloc/COPYING b/opal/mca/hwloc/hwloc1113/hwloc/COPYING similarity index 55% rename from opal/mca/hwloc/hwloc1112/hwloc/COPYING rename to opal/mca/hwloc/hwloc1113/hwloc/COPYING index 694a7bd774..485798f705 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/COPYING +++ b/opal/mca/hwloc/hwloc1113/hwloc/COPYING @@ -1,8 +1,18 @@ -Copyright © 2009 CNRS -Copyright © 2009 inria. All rights reserved. -Copyright © 2009 Université Bordeaux -Copyright © 2009 Cisco Systems, Inc. All rights reserved. -Copyright © 2012 Blue Brain Project, EPFL. All rights reserved. +Copyright © 2004-2006 The Trustees of Indiana University and Indiana University Research and Technology Corporation. All rights reserved. +Copyright © 2004-2005 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. +Copyright © 2004-2005 High Performance Computing Center Stuttgart, University of Stuttgart. All rights reserved. +Copyright © 2004-2005 The Regents of the University of California. All rights reserved. +Copyright © 2009 CNRS +Copyright © 2009-2016 Inria. All rights reserved. +Copyright © 2009-2015 Université Bordeaux +Copyright © 2009-2015 Cisco Systems, Inc. All rights reserved. +Copyright © 2009-2012 Oracle and/or its affiliates. All rights reserved. +Copyright © 2010 IBM +Copyright © 2010 Jirka Hladky +Copyright © 2012 Aleksej Saushev, The NetBSD Foundation +Copyright © 2012 Blue Brain Project, EPFL. All rights reserved. +Copyright © 2015 Research Organization for Information Science and Technology (RIST). All rights reserved. +Copyright © 2015-2016 Intel, Inc. All rights reserved. See COPYING in top-level directory. Redistribution and use in source and binary forms, with or without diff --git a/opal/mca/hwloc/hwloc1112/hwloc/Makefile.am b/opal/mca/hwloc/hwloc1113/hwloc/Makefile.am similarity index 95% rename from opal/mca/hwloc/hwloc1112/hwloc/Makefile.am rename to opal/mca/hwloc/hwloc1113/hwloc/Makefile.am index 69ae667548..e046a07de8 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/Makefile.am +++ b/opal/mca/hwloc/hwloc1113/hwloc/Makefile.am @@ -1,4 +1,4 @@ -# Copyright © 2009-2015 Inria. All rights reserved. +# Copyright © 2009-2016 Inria. All rights reserved. # Copyright © 2009 Université Bordeaux # Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. # See COPYING in top-level directory. @@ -9,7 +9,7 @@ ACLOCAL_AMFLAGS = -I ./config SUBDIRS = src include if HWLOC_BUILD_STANDALONE -SUBDIRS += tests utils +SUBDIRS += tests utils contrib/systemd # We need doc/ if HWLOC_BUILD_DOXYGEN, or during make install if HWLOC_INSTALL_DOXYGEN. # There's no INSTALL_SUBDIRS, so always enter doc/ and check HWLOC_BUILD/INSTALL_DOXYGEN there SUBDIRS += doc @@ -21,11 +21,9 @@ DIST_SUBDIRS = $(SUBDIRS) # Only install the pkg file if we're building in standalone mode (and not on Windows) if HWLOC_BUILD_STANDALONE -if !HWLOC_HAVE_WINDOWS pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = hwloc.pc endif -endif # Only install the valgrind suppressions file if we're building in standalone mode if HWLOC_BUILD_STANDALONE diff --git a/opal/mca/hwloc/hwloc1112/hwloc/NEWS b/opal/mca/hwloc/hwloc1113/hwloc/NEWS similarity index 95% rename from opal/mca/hwloc/hwloc1112/hwloc/NEWS rename to opal/mca/hwloc/hwloc1113/hwloc/NEWS index d81dfddf8a..ad43c293d2 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/NEWS +++ b/opal/mca/hwloc/hwloc1113/hwloc/NEWS @@ -25,8 +25,55 @@ Version 1.11.4 Version 1.11.3 -------------- -* Fix /proc/mounts parsing on Linux by using mntent.h. - Thanks to Nathan Hjelm for reporting the issue. +* Bug fixes + + Fix a memory leak on Linux S/390 hosts with books. + + Fix /proc/mounts parsing on Linux by using mntent.h. + Thanks to Nathan Hjelm for reporting the issue. + + Fix a x86 infinite loop on VMware due to the x2APIC feature being + advertised without actually being fully supported. + Thanks to Jianjun Wen for reporting the problem and testing the patch. + + Fix the return value of hwloc_alloc() on mmap() failure. + Thanks to Hugo Brunie for reporting the issue. + + Fix the return value of command-line tools in some error cases. + + Do not break individual thread bindings during x86 backend discovery in a + multithreaded process. Thanks to Farouk Mansouri for the report. + + Fix hwloc-bind --membind for CPU-less NUMA nodes. + + Fix some corner cases in the XML export/import of application userdata. +* API Improvements + + Add HWLOC_MEMBIND_BYNODESET flag so that membind() functions accept + either cpusets or nodesets. + + Add hwloc_get_area_memlocation() to check where pages are actually + allocated. Only implemented on Linux for now. + - There's no _nodeset() variant, but the new flag HWLOC_MEMBIND_BYNODESET + is supported. + + Make hwloc_obj_type_sscanf() parse back everything that may be outputted + by hwloc_obj_type_snprintf(). +* Detection Improvements + + Allow the x86 backend to add missing cache levels, so that it completes + what the Solaris backend lacks. + Thanks to Ryan Zezeski for reporting the issue. + + Do not filter-out FibreChannel PCI adapters by default anymore. + Thanks to Matt Muggeridge for the report. + + Add support for CUDA compute capability 6.x. +* Tools + + Add --support to hwloc-info to list supported features, just like with + hwloc_topology_get_support(). + - Also add --objects and --topology to explicitly switch between the + default modes. + + Add --tid to let hwloc-bind operate on individual threads on Linux. + + Add --nodeset to let hwloc-bind report memory binding as NUMA node sets. + + hwloc-annotate and lstopo don't drop application userdata from XMLs anymore. + - Add --cu to hwloc-annotate to drop these application userdata. + + Make the hwloc-dump-hwdata dump directory configurable through configure + options such as --runstatedir or --localstatedir. +* Misc Improvements + + Add systemd service template contrib/systemd/hwloc-dump-hwdata.service + for launching hwloc-dump-hwdata at boot on Linux. + Thanks to Grzegorz Andrejczuk. + + Add HWLOC_PLUGINS_BLACKLIST environment variable to prevent some plugins + from being loaded. Thanks to Alexandre Denis for the suggestion. + + Small improvements for various Windows build systems, + thanks to Jonathan L Peyton and Marco Atzeri. Version 1.11.2 diff --git a/opal/mca/hwloc/hwloc1113/hwloc/README b/opal/mca/hwloc/hwloc1113/hwloc/README new file mode 100644 index 0000000000..07abc25a14 --- /dev/null +++ b/opal/mca/hwloc/hwloc1113/hwloc/README @@ -0,0 +1,83 @@ +Introduction + +hwloc provides command line tools and a C API to obtain the hierarchical map of +key computing elements, such as: NUMA memory nodes, shared caches, processor +packages, processor cores, processing units (logical processors or "threads") +and even I/O devices. hwloc also gathers various attributes such as cache and +memory information, and is portable across a variety of different operating +systems and platforms. Additionally it may assemble the topologies of multiple +machines into a single one so as to let applications consult the topology of an +entire fabric or cluster at once. + +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 platforms. + +Note that the hwloc project represents the merger of the libtopology project +from inria and the Portable Linux Processor Affinity (PLPA) sub-project from +Open MPI. Both of these prior projects are now deprecated. The first hwloc +release was essentially a "re-branding" of the libtopology code base, but with +both a few genuinely new features and a few PLPA-like features added in. Prior +releases of hwloc included documentation about switching from PLPA to hwloc; +this documentation has been dropped on the assumption that everyone who was +using PLPA has already switched to hwloc. + +hwloc supports the following operating systems: + + * Linux (including old kernels not having sysfs topology information, with + knowledge of cpusets, offline CPUs, ScaleMP vSMP and Kerrighed support) on + all supported hardware, including Intel Xeon Phi (KNL and KNC, either + standalone or as a coprocessor) and NumaScale NumaConnect. + * Solaris + * AIX + * Darwin / OS X + * FreeBSD and its variants (such as kFreeBSD/GNU) + * NetBSD + * OSF/1 (a.k.a., Tru64) + * HP-UX + * Microsoft Windows + * IBM BlueGene/Q Compute Node Kernel (CNK) + +Since it uses standard Operating System information, hwloc's support is mostly +independant from the processor type (x86, powerpc, ...) and just relies on the +Operating System support. The only exception to this is kFreeBSD, which does +not support topology information, and hwloc thus uses an x86-only CPUID-based +backend (which can be used for other OSes too, see the Components and plugins +section). + +To check whether hwloc works on a particular machine, just try to build it and +run lstopo or lstopo-no-graphics. If some things do not look right (e.g. bogus +or missing cache information), see Questions and Bugs below. + +hwloc only reports the number of processors on unsupported operating systems; +no topology information is available. + +For development and debugging purposes, hwloc also offers the ability to work +on "fake" topologies: + + * Symmetrical tree of resources generated from a list of level arities + * Remote machine simulation through the gathering of Linux sysfs topology + files + +hwloc can display the topology in a human-readable format, either in graphical +mode (X11), or by exporting in one of several different formats, including: +plain text, PDF, PNG, and FIG (see CLI Examples below). Note that some of the +export formats require additional support libraries. + +hwloc offers a programming interface for manipulating topologies and objects. +It also brings a powerful CPU bitmap API that is used to describe topology +objects location on physical/logical processors. See the Programming Interface +below. It may also be used to binding applications onto certain cores or memory +nodes. Several utility programs are also provided to ease command-line +manipulation of topology objects, binding of processes, and so on. + +Perl bindings are available from Bernd Kallies on CPAN. + +Python bindings are available from Guy Streeter: + + * Fedora RPM and tarball. + * git tree (html). + + + +See https://www.open-mpi.org/projects/hwloc/doc/ for more hwloc documentation. diff --git a/opal/mca/hwloc/hwloc1112/hwloc/VERSION b/opal/mca/hwloc/hwloc1113/hwloc/VERSION similarity index 87% rename from opal/mca/hwloc/hwloc1112/hwloc/VERSION rename to opal/mca/hwloc/hwloc1113/hwloc/VERSION index c809f10a05..d840fbcc0a 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/VERSION +++ b/opal/mca/hwloc/hwloc1113/hwloc/VERSION @@ -5,9 +5,11 @@ # major, minor, and release are generally combined in the form # ... If release is zero, then it is omitted. +# Please update HWLOC_VERSION in contrib/windows/private_config.h too. + major=1 minor=11 -release=2 +release=3 # greek is used for alpha or beta release tags. If it is non-empty, # it will be appended to the version number. It does not have to be @@ -20,7 +22,7 @@ greek= # The date when this release was created -date="Dec 17, 2015" +date="Apr 26, 2016" # If snapshot=1, then use the value from snapshot_version as the # entire hwloc version (i.e., ignore major, minor, release, and @@ -39,4 +41,6 @@ snapshot_version=${major}.${minor}.${release}${greek}-git # 2. Version numbers are described in the Libtool current:revision:age # format. -libhwloc_so_version=11:8:6 +libhwloc_so_version=12:0:7 + +# Please also update the lines in contrib/windows/libhwloc.vcxproj diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/distscript.sh b/opal/mca/hwloc/hwloc1113/hwloc/config/distscript.sh similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/config/distscript.sh rename to opal/mca/hwloc/hwloc1113/hwloc/config/distscript.sh diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc.m4 b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc.m4 similarity index 96% rename from opal/mca/hwloc/hwloc1112/hwloc/config/hwloc.m4 rename to opal/mca/hwloc/hwloc1113/hwloc/config/hwloc.m4 index 24e1beac1b..13eb7dd1cc 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc.m4 +++ b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc.m4 @@ -1,7 +1,7 @@ dnl -*- Autoconf -*- dnl -dnl Copyright © 2009-2015 Inria. All rights reserved. -dnl Copyright © 2009-2012, 2015 Université Bordeaux +dnl Copyright © 2009-2016 Inria. All rights reserved. +dnl Copyright © 2009-2012, 2015-2016 Université Bordeaux dnl Copyright © 2004-2005 The Trustees of Indiana University and Indiana dnl University Research and Technology dnl Corporation. All rights reserved. @@ -367,7 +367,7 @@ EOF]) AC_CHECK_HEADERS([dirent.h]) AC_CHECK_HEADERS([strings.h]) AC_CHECK_HEADERS([ctype.h]) - + AC_CHECK_FUNCS([strncasecmp], [ _HWLOC_CHECK_DECL([strncasecmp], [ AC_DEFINE([HWLOC_HAVE_DECL_STRNCASECMP], [1], [Define to 1 if function `strncasecmp' is declared by system headers]) @@ -405,6 +405,7 @@ EOF]) AC_CHECK_LIB([gdi32], [main], [HWLOC_LIBS="-lgdi32 $HWLOC_LIBS" AC_DEFINE([HAVE_LIBGDI32], 1, [Define to 1 if we have -lgdi32])]) + AC_CHECK_LIB([user32], [PostQuitMessage], [hwloc_have_user32="yes"]) AC_CHECK_HEADER([windows.h], [ AC_DEFINE([HWLOC_HAVE_WINDOWS_H], [1], [Define to 1 if you have the `windows.h' header.]) @@ -458,7 +459,16 @@ EOF]) #endif ]) - AC_CHECK_DECLS([strtoull], [], [], [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([strtoull], [], [AC_CHECK_FUNCS([strtoull])], [AC_INCLUDES_DEFAULT]) + + # Needed for Windows in private/misc.h + AC_CHECK_TYPES([ssize_t]) + AC_CHECK_DECLS([snprintf], [], [], [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([strcasecmp], [], [], [AC_INCLUDES_DEFAULT]) + # strdup and putenv are declared in windows headers but marked deprecated + AC_CHECK_DECLS([_strdup], [], [], [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([_putenv], [], [], [AC_INCLUDES_DEFAULT]) + # Could add mkdir and access for hwloc-gather-cpuid.c on Windows # Do a full link test instead of just using AC_CHECK_FUNCS, which # just checks to see if the symbol exists or not. For example, @@ -488,7 +498,9 @@ EOF]) # program_invocation_name and __progname may be available but not exported in headers AC_MSG_CHECKING([for program_invocation_name]) AC_TRY_LINK([ - #define _GNU_SOURCE + #ifndef _GNU_SOURCE + # define _GNU_SOURCE + #endif #include #include extern char *program_invocation_name; @@ -536,7 +548,9 @@ EOF]) CFLAGS="$CFLAGS $HWLOC_STRICT_ARGS_CFLAGS" AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ - #define _GNU_SOURCE + #ifndef _GNU_SOURCE + # define _GNU_SOURCE + #endif #include static unsigned long mask; ]], [[ sched_setaffinity(0, (void*) &mask); ]])], @@ -545,7 +559,9 @@ EOF]) [AC_MSG_RESULT([no])]) CFLAGS=$hwloc_save_CFLAGS ], , [[ -#define _GNU_SOURCE +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif #include ]]) @@ -655,6 +671,9 @@ EOF]) AC_CHECK_HEADERS([sys/utsname.h]) AC_CHECK_FUNCS([uname]) + AC_CHECK_HEADERS([valgrind/valgrind.h]) + AC_CHECK_DECLS([RUNNING_ON_VALGRIND],,[:],[[#include ]]) + AC_CHECK_HEADERS([pthread_np.h]) AC_CHECK_DECLS([pthread_setaffinity_np],,[:],[[ #include @@ -707,6 +726,9 @@ EOF]) enable_migrate_pages=yes AC_DEFINE([HWLOC_HAVE_MIGRATE_PAGES], [1], [Define to 1 if migrate_pages is available.]) ]) + AC_CHECK_LIB([numa], [move_pages], [ + AC_DEFINE([HWLOC_HAVE_MOVE_PAGES], [1], [Define to 1 if move_pages is available.]) + ]) LIBS="$tmp_save_LIBS" fi @@ -1195,6 +1217,7 @@ AC_DEFUN([HWLOC_DO_AM_CONDITIONALS],[ AM_CONDITIONAL([HWLOC_HAVE_SET_MEMPOLICY], [test "x$enable_set_mempolicy" != "xno"]) AM_CONDITIONAL([HWLOC_HAVE_MBIND], [test "x$enable_mbind" != "xno"]) AM_CONDITIONAL([HWLOC_HAVE_BUNZIPP], [test "x$BUNZIPP" != "xfalse"]) + AM_CONDITIONAL([HWLOC_HAVE_USER32], [test "x$hwloc_have_user32" = "xyes"]) AM_CONDITIONAL([HWLOC_BUILD_DOXYGEN], [test "x$hwloc_generate_doxs" = "xyes"]) @@ -1264,19 +1287,22 @@ AC_DEFUN([_HWLOC_CHECK_DIFF_W], [ dnl HWLOC_CHECK_DECL dnl -dnl Check declaration of given function by trying to call it with an insane -dnl number of arguments (10). Success means the compiler couldn't really check. +dnl Check that the declaration of the given function has a complete prototype +dnl with argument list by trying to call it with an insane dnl number of +dnl arguments (10). Success means the compiler couldn't really check. AC_DEFUN([_HWLOC_CHECK_DECL], [ - AC_MSG_CHECKING([whether function $1 is declared]) - AC_REQUIRE([AC_PROG_CC]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [AC_INCLUDES_DEFAULT([$4]) - void * $1;], - )], - [AC_MSG_RESULT([no]) - $3], - [AC_MSG_RESULT([yes]) - $2] + AC_CHECK_DECL([$1], [ + AC_MSG_CHECKING([whether function $1 has a complete prototype]) + AC_REQUIRE([AC_PROG_CC]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [AC_INCLUDES_DEFAULT([$4])] + [$1(1,2,3,4,5,6,7,8,9,10);], + )], + [AC_MSG_RESULT([no]) + $3], + [AC_MSG_RESULT([yes]) + $2] + )], [$3], $4 ) ]) diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_check_attributes.m4 b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_check_attributes.m4 similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_check_attributes.m4 rename to opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_check_attributes.m4 diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_check_vendor.m4 b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_check_vendor.m4 similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_check_vendor.m4 rename to opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_check_vendor.m4 diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_check_visibility.m4 b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_check_visibility.m4 similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_check_visibility.m4 rename to opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_check_visibility.m4 diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_components.m4 b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_components.m4 similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_components.m4 rename to opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_components.m4 diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_get_version.sh b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_get_version.sh similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_get_version.sh rename to opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_get_version.sh diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_internal.m4 b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_internal.m4 similarity index 97% rename from opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_internal.m4 rename to opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_internal.m4 index 9be621b87a..20fb77bca4 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_internal.m4 +++ b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_internal.m4 @@ -1,6 +1,6 @@ dnl -*- Autoconf -*- dnl -dnl Copyright © 2009-2014 Inria. All rights reserved. +dnl Copyright © 2009-2016 Inria. All rights reserved. dnl Copyright © 2009, 2011 Université Bordeaux dnl Copyright © 2004-2005 The Trustees of Indiana University and Indiana dnl University Research and Technology @@ -9,7 +9,6 @@ dnl Copyright © 2004-2005 The Regents of the University of California. dnl All rights reserved. dnl Copyright © 2004-2008 High Performance Computing Center Stuttgart, dnl University of Stuttgart. All rights reserved. -dnl Copyright © 2010-2015 Inria. All rights reserved. dnl Copyright © 2006-2014 Cisco Systems, Inc. All rights reserved. dnl dnl See COPYING in top-level directory. @@ -247,6 +246,14 @@ EOF AC_REQUIRE([AC_PROG_SED]) + # runstatedir only supported in autoconf >= 2.70 and in some backports + if test "x${runstatedir}" != "x"; then + HWLOC_runstatedir=${runstatedir} + else + HWLOC_runstatedir='${localstatedir}/run' + fi + AC_SUBST([HWLOC_runstatedir]) + # Cairo support hwloc_cairo_happy=no if test "x$enable_cairo" != "xno"; then @@ -307,6 +314,8 @@ EOF LIBS="$hwloc_old_LIBS" unset hwloc_old_LIBS + AC_PATH_TOOL(RMPATH, rm) + _HWLOC_CHECK_DIFF_U _HWLOC_CHECK_DIFF_W @@ -394,7 +403,8 @@ int foo(void) { hwloc_config_prefix[utils/hwloc/test-hwloc-distrib.sh] hwloc_config_prefix[utils/hwloc/test-hwloc-info.sh] hwloc_config_prefix[utils/hwloc/test-fake-plugin.sh] - hwloc_config_prefix[utils/lstopo/test-hwloc-ls.sh]) + hwloc_config_prefix[utils/lstopo/test-hwloc-ls.sh] + hwloc_config_prefix[contrib/systemd/Makefile]) AC_CONFIG_COMMANDS([chmoding-scripts], [chmod +x ]hwloc_config_prefix[tests/linux/test-topology.sh ]hwloc_config_prefix[tests/xml/test-topology.sh ]hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh ]hwloc_config_prefix[tests/wrapper.sh ]hwloc_config_prefix[utils/hwloc/hwloc-assembler-remote ]hwloc_config_prefix[utils/hwloc/hwloc-compress-dir ]hwloc_config_prefix[utils/hwloc/hwloc-gather-topology ]hwloc_config_prefix[utils/hwloc/test-hwloc-annotate.sh ]hwloc_config_prefix[utils/hwloc/test-hwloc-assembler.sh ]hwloc_config_prefix[utils/hwloc/test-hwloc-calc.sh ]hwloc_config_prefix[utils/hwloc/test-hwloc-compress-dir.sh ]hwloc_config_prefix[utils/hwloc/test-hwloc-diffpatch.sh ]hwloc_config_prefix[utils/hwloc/test-hwloc-distances.sh ]hwloc_config_prefix[utils/hwloc/test-hwloc-distrib.sh ]hwloc_config_prefix[utils/hwloc/test-hwloc-info.sh ]hwloc_config_prefix[utils/hwloc/test-fake-plugin.sh ]hwloc_config_prefix[utils/lstopo/test-hwloc-ls.sh]) diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_pkg.m4 b/opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_pkg.m4 similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/config/hwloc_pkg.m4 rename to opal/mca/hwloc/hwloc1113/hwloc/config/hwloc_pkg.m4 diff --git a/opal/mca/hwloc/hwloc1112/hwloc/config/test-driver b/opal/mca/hwloc/hwloc1113/hwloc/config/test-driver similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/config/test-driver rename to opal/mca/hwloc/hwloc1113/hwloc/config/test-driver diff --git a/opal/mca/hwloc/hwloc1112/hwloc/configure.ac b/opal/mca/hwloc/hwloc1113/hwloc/configure.ac similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/configure.ac rename to opal/mca/hwloc/hwloc1113/hwloc/configure.ac diff --git a/opal/mca/hwloc/hwloc1112/hwloc/contrib/hwloc-valgrind.supp b/opal/mca/hwloc/hwloc1113/hwloc/contrib/hwloc-valgrind.supp similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/contrib/hwloc-valgrind.supp rename to opal/mca/hwloc/hwloc1113/hwloc/contrib/hwloc-valgrind.supp diff --git a/opal/mca/hwloc/hwloc1112/hwloc/doc/README.txt b/opal/mca/hwloc/hwloc1113/hwloc/contrib/systemd/README.txt similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/doc/README.txt rename to opal/mca/hwloc/hwloc1113/hwloc/contrib/systemd/README.txt diff --git a/opal/mca/hwloc/hwloc1112/hwloc/tests/README.txt b/opal/mca/hwloc/hwloc1113/hwloc/doc/README.txt similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/tests/README.txt rename to opal/mca/hwloc/hwloc1113/hwloc/doc/README.txt diff --git a/opal/mca/hwloc/hwloc1112/hwloc/hwloc.pc.in b/opal/mca/hwloc/hwloc1113/hwloc/hwloc.pc.in similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/hwloc.pc.in rename to opal/mca/hwloc/hwloc1113/hwloc/hwloc.pc.in diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/Makefile.am b/opal/mca/hwloc/hwloc1113/hwloc/include/Makefile.am similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/Makefile.am rename to opal/mca/hwloc/hwloc1113/hwloc/include/Makefile.am diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc.h similarity index 92% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc.h index deb5141fc7..1671a407ca 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc.h +++ b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc.h @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2012 Université Bordeaux * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -277,7 +277,8 @@ typedef enum hwloc_obj_osdev_type_e { HWLOC_OBJ_OSDEV_NETWORK, /**< \brief Operating system network device. * For instance the "eth0" interface on Linux. */ HWLOC_OBJ_OSDEV_OPENFABRICS, /**< \brief Operating system openfabrics device. - * For instance the "mlx4_0" InfiniBand HCA device on Linux. */ + * For instance the "mlx4_0" InfiniBand HCA, + * or "hfi1_0" Omni-Path interface on Linux. */ HWLOC_OBJ_OSDEV_DMA, /**< \brief Operating system dma engine device. * For instance the "dma0chan0" DMA channel on Linux. */ HWLOC_OBJ_OSDEV_COPROC /**< \brief Operating system co-processor device. @@ -344,11 +345,15 @@ struct hwloc_obj_memory_s { struct hwloc_obj { /* physical information */ hwloc_obj_type_t type; /**< \brief Type of object */ + unsigned os_index; /**< \brief OS-provided physical index number. * It is not guaranteed unique across the entire machine, * except for PUs and NUMA nodes. */ - char *name; /**< \brief Object description if any */ + char *name; /**< \brief Object-specific name if any. + * Mostly used for identifying OS devices and Misc objects where + * a name string is more useful than numerical indexes. + */ struct hwloc_obj_memory_s memory; /**< \brief Memory attributes */ @@ -435,10 +440,10 @@ struct hwloc_obj { hwloc_nodeset_t nodeset; /**< \brief NUMA nodes covered by this object or containing this object * - * This is the set of NUMA nodes for which there are NODE objects in the + * This is the set of NUMA nodes for which there are NUMA node objects in the * topology under or above this object, i.e. which are known to be physically * contained in this object or containing it and known how (the children path - * between this object and the NODE objects). + * between this object and the NUMA node objects). * * In the end, these nodes are those that are close to the current object. * @@ -455,7 +460,7 @@ struct hwloc_obj { * This includes not only the same as the nodeset field, but also the NUMA * nodes for which topology information is unknown or incomplete, and the nodes * that are ignored when the ::HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM flag is not set. - * Thus no corresponding NODE object may be found in the topology, because the + * Thus no corresponding NUMA node object may be found in the topology, because the * precise position is undefined. It is however known that it would be * somewhere under this object. * @@ -579,7 +584,10 @@ struct hwloc_distances_s { */ }; -/** \brief Object info */ +/** \brief Object info + * + * \sa hwlocality_info_attr + */ struct hwloc_obj_info_s { char *name; /**< \brief Info name */ char *value; /**< \brief Info value */ @@ -639,6 +647,9 @@ HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology); * are duplicated into a new one. * * This is useful for keeping a backup while modifying a topology. + * + * \note Object userdata is not duplicated since hwloc does not know what it point to. + * The objects of both old and new topologies will point to the same userdata. */ HWLOC_DECLSPEC int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology); @@ -963,6 +974,7 @@ HWLOC_DECLSPEC int hwloc_topology_set_custom(hwloc_topology_t topology); /** \brief Provide a distance matrix. * * Provide the matrix of distances between a set of objects of the given type. + * \p nbobjs must be at least 2. * The set may or may not contain all the existing objects of this type. * The objects are specified by their OS/physical index in the \p os_index * array. The \p distances matrix follows the same order. @@ -996,7 +1008,11 @@ struct hwloc_topology_discovery_support { unsigned char pu; }; -/** \brief Flags describing actual PU binding support for this topology. */ +/** \brief Flags describing actual PU binding support for this topology. + * + * A flag may be set even if the feature isn't supported in all cases + * (e.g. binding to random sets of non-contiguous objects). + */ struct hwloc_topology_cpubind_support { /** Binding the whole current process is supported. */ unsigned char set_thisproc_cpubind; @@ -1022,7 +1038,11 @@ struct hwloc_topology_cpubind_support { unsigned char get_thisthread_last_cpu_location; }; -/** \brief Flags describing actual memory binding support for this topology. */ +/** \brief Flags describing actual memory binding support for this topology. + * + * A flag may be set even if the feature isn't supported in all cases + * (e.g. binding to random sets of non-contiguous objects). + */ struct hwloc_topology_membind_support { /** Binding the whole current process is supported. */ unsigned char set_thisproc_membind; @@ -1052,9 +1072,10 @@ struct hwloc_topology_membind_support { unsigned char replicate_membind; /** Next-touch migration policy is supported. */ unsigned char nexttouch_membind; - /** Migration flags is supported. */ unsigned char migrate_membind; + /** Getting the last NUMA nodes where a memory area was allocated is supported */ + unsigned char get_area_memlocation; }; /** \brief Set of flags describing actual support for this topology. @@ -1069,7 +1090,15 @@ struct hwloc_topology_support { struct hwloc_topology_membind_support *membind; }; -/** \brief Retrieve the topology support. */ +/** \brief Retrieve the topology support. + * + * Each flag indicates whether a feature is supported. + * If set to 0, the feature is not supported. + * If set to 1, the feature is supported, but the corresponding + * call may still fail in some corner cases. + * + * These features are also listed by hwloc-info \--support + */ HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology); /** \brief Set the topology-specific userdata pointer. @@ -1227,48 +1256,26 @@ hwloc_get_next_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, -/** \defgroup hwlocality_object_strings Manipulating Object Type, Sets and Attributes as Strings +/** \defgroup hwlocality_object_strings Converting between Object Types, Sets and Attributes, and Strings * @{ */ -/** \brief Return a stringified topology object type */ -HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const; - -/** \brief Return an object type and attributes from a type string. +/** \brief Return a constant stringified object type. * - * Convert strings such as "Package" or "Cache" into the corresponding types. - * Matching is case-insensitive, and only the first letters are actually - * required to match. + * This function is the basic way to convert a generic type into a string. * - * Types that have specific attributes, for instance caches and groups, - * may be returned in \p depthattrp and \p typeattrp. They are ignored - * when these pointers are \c NULL. - * - * For instance "L2i" or "L2iCache" would return - * type HWLOC_OBJ_CACHE in \p typep, 2 in \p depthattrp, - * and HWLOC_OBJ_CACHE_TYPE_INSTRUCTION in \p typeattrp - * (this last pointer should point to a hwloc_obj_cache_type_t). - * "Group3" would return type HWLOC_OBJ_GROUP type and 3 in \p depthattrp. - * Attributes that are not specified in the string (for instance "Group" - * without a depth, or "L2Cache" without a cache type) are set to -1. - * - * \p typeattrp is only filled if the size specified in \p typeattrsize - * is large enough. It is currently only used for caches, and the required - * size is at least the size of hwloc_obj_cache_type_t. - * - * \return 0 if a type was correctly identified, otherwise -1. - * - * \note This is an extended version of the now deprecated hwloc_obj_type_of_string() + * hwloc_obj_type_snprintf() may return a more precise output for a specific + * object, but it requires the caller to provide the output buffer. */ -HWLOC_DECLSPEC int hwloc_obj_type_sscanf(const char *string, - hwloc_obj_type_t *typep, - int *depthattrp, - void *typeattrp, size_t typeattrsize); +HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const; /** \brief Stringify the type of a given topology object into a human-readable form. * - * It differs from hwloc_obj_type_string() because it prints type attributes such - * as cache depth and type. + * Contrary to hwloc_obj_type_string(), this function includes object-specific + * attributes (such as the Group depth, the Bridge type, or OS device type) + * in the output, and it requires the caller to provide the output buffer. + * + * The output is guaranteed to be the same for all objects of a same topology level. * * If \p size is 0, \p string may safely be \c NULL. * @@ -1301,6 +1308,49 @@ HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_ */ HWLOC_DECLSPEC int hwloc_obj_cpuset_snprintf(char * __hwloc_restrict str, size_t size, size_t nobj, const hwloc_obj_t * __hwloc_restrict objs); +/** \brief Return an object type and attributes from a type string. + * + * Convert strings such as "Package" or "Cache" into the corresponding types. + * Matching is case-insensitive, and only the first letters are actually + * required to match. + * + * This function is guaranteed to match any string returned by hwloc_obj_type_string() + * or hwloc_obj_type_snprintf(). + * + * Types that have specific attributes, for instance caches and groups, + * may be returned in \p depthattrp and \p typeattrp. They are ignored + * when these pointers are \c NULL. + * + * For instance "L2i" or "L2iCache" would return + * type HWLOC_OBJ_CACHE in \p typep, 2 in \p depthattrp, + * and HWLOC_OBJ_CACHE_TYPE_INSTRUCTION in \p typeattrp + * (this last pointer should point to a hwloc_obj_cache_type_t). + * "Group3" would return type HWLOC_OBJ_GROUP type and 3 in \p depthattrp. + * Attributes that are not specified in the string (for instance "Group" + * without a depth, or "L2Cache" without a cache type) are set to -1. + * + * \p typeattrp is only filled if the size specified in \p typeattrsize + * is large enough. It is currently only used for caches, and the required + * size is at least the size of hwloc_obj_cache_type_t. + * + * \return 0 if a type was correctly identified, otherwise -1. + * + * \note This is an extended version of the now deprecated hwloc_obj_type_of_string() + */ +HWLOC_DECLSPEC int hwloc_obj_type_sscanf(const char *string, + hwloc_obj_type_t *typep, + int *depthattrp, + void *typeattrp, size_t typeattrsize); + +/** @} */ + + + +/** \defgroup hwlocality_info_attr Consulting and Adding Key-Value Info Attributes + * + * @{ + */ + /** \brief Search the given key name in object infos and return the corresponding value. * * If multiple keys match the given name, only the first one is returned. @@ -1377,7 +1427,7 @@ HWLOC_DECLSPEC void hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const * \note On some operating systems, CPU binding may have effects on memory binding, see * ::HWLOC_CPUBIND_NOMEMBIND * - * \note Running lstopo --top or hwloc-ps can be a very convenient tool to check + * \note Running lstopo \--top or hwloc-ps can be a very convenient tool to check * how binding actually happened. * @{ */ @@ -1568,7 +1618,7 @@ HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, h * (e.g., some systems only allow binding memory on a per-thread * basis, whereas other systems only allow binding memory for all * threads in a process). - * \p errno will be set to EXDEV when the requested cpuset can not be enforced + * \p errno will be set to EXDEV when the requested set can not be enforced * (e.g., some systems only allow binding memory to a single NUMA node). * * If ::HWLOC_MEMBIND_STRICT was not passed, the function may fail as well, @@ -1592,13 +1642,18 @@ HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, h * \endcode * * Each hwloc memory binding function is available in two forms: one - * that takes a CPU set argument and another that takes a NUMA memory - * node set argument (see \ref hwlocality_object_sets and \ref - * hwlocality_bitmap for a discussion of CPU sets and NUMA memory node - * sets). The names of the latter form end with _nodeset. It is also - * possible to convert between CPU set and node set using + * that takes a bitmap argument (a CPU set by default, or a NUMA memory + * node set if the flag ::HWLOC_MEMBIND_BYNODESET is specified), + * and another one (whose name ends with _nodeset) that always takes + * a NUMA memory node set. + * See \ref hwlocality_object_sets and \ref hwlocality_bitmap for a + * discussion of CPU sets and NUMA memory node sets. + * It is also possible to convert between CPU set and node set using * hwloc_cpuset_to_nodeset() or hwloc_cpuset_from_nodeset(). * + * Memory binding by CPU set cannot work for CPU-less NUMA memory nodes. + * Binding by nodeset should therefore be preferred whenever possible. + * * \sa Some example codes are available under doc/examples/ in the source tree. * * \note On some operating systems, memory binding affects the CPU @@ -1622,6 +1677,10 @@ typedef enum { * Depending on the operating system, this may correspond to * ::HWLOC_MEMBIND_FIRSTTOUCH (Linux), * or ::HWLOC_MEMBIND_BIND (AIX, HP-UX, OSF, Solaris, Windows). + * This policy is never returned by get membind functions when running + * on normal machines. + * It is only returned when binding hooks are empty because the topology + * was loaded from XML, or HWLOC_THISSYSTEM=0, etc. * \hideinitializer */ HWLOC_MEMBIND_DEFAULT = 0, @@ -1630,7 +1689,7 @@ typedef enum { * each page in the allocation is bound only when it is first * touched. Pages are individually bound to the local NUMA node of * the first thread that touches it. If there is not enough memory - * on the node, allocation may be done in the specified cpuset + * on the node, allocation may be done in the specified nodes * before allocating on other nodes. * \hideinitializer */ HWLOC_MEMBIND_FIRSTTOUCH = 1, @@ -1725,11 +1784,22 @@ typedef enum { * may fail with errno set to ENOSYS when used with NOCPUBIND. * \hideinitializer */ - HWLOC_MEMBIND_NOCPUBIND = (1<<4) + HWLOC_MEMBIND_NOCPUBIND = (1<<4), + + /** \brief Consider the bitmap argument as a nodeset. + * + * Functions whose name ends with _nodeset() take a nodeset argument. + * Other functions take a bitmap argument that is considered a nodeset + * if this flag is given, or a cpuset otherwise. + * + * Memory binding by CPU set cannot work for CPU-less NUMA memory nodes. + * Binding by nodeset should therefore be preferred whenever possible. + */ + HWLOC_MEMBIND_BYNODESET = (1<<5) } hwloc_membind_flags_t; /** \brief Set the default memory binding policy of the current - * process or thread to prefer the NUMA node(s) specified by physical \p nodeset + * process or thread to prefer the NUMA node(s) specified by \p nodeset * * If neither ::HWLOC_MEMBIND_PROCESS nor ::HWLOC_MEMBIND_THREAD is * specified, the current process is assumed to be single-threaded. @@ -1743,8 +1813,7 @@ typedef enum { HWLOC_DECLSPEC int hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); /** \brief Set the default memory binding policy of the current - * process or thread to prefer the NUMA node(s) near the specified physical \p - * cpuset + * process or thread to prefer the NUMA node(s) specified by \p set * * If neither ::HWLOC_MEMBIND_PROCESS nor ::HWLOC_MEMBIND_THREAD is * specified, the current process is assumed to be single-threaded. @@ -1752,10 +1821,13 @@ HWLOC_DECLSPEC int hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_co * process-based OS functions or thread-based OS functions, depending * on which are available. * + * If ::HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. + * Otherwise it's a cpuset. + * * \return -1 with errno set to ENOSYS if the action is not supported * \return -1 with errno set to EXDEV if the binding cannot be enforced */ -HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags); +HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags); /** \brief Query the default memory binding policy and physical locality of the * current process or thread. @@ -1785,9 +1857,10 @@ HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_cpus * * Otherwise, if ::HWLOC_MEMBIND_PROCESS is specified (and * ::HWLOC_MEMBIND_STRICT is \em not specified), \p nodeset is set to - * the logical OR of all threads' default nodeset. If all threads' - * default policies are the same, \p policy is set to that policy. If - * they are different, \p policy is set to ::HWLOC_MEMBIND_MIXED. + * the logical OR of all threads' default nodeset. + * If all threads' default policies are the same, \p policy is set to + * that policy. If they are different, \p policy is set to + * ::HWLOC_MEMBIND_MIXED. * * In the ::HWLOC_MEMBIND_THREAD case (or when neither * ::HWLOC_MEMBIND_PROCESS or ::HWLOC_MEMBIND_THREAD is specified), there @@ -1800,10 +1873,9 @@ HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_cpus HWLOC_DECLSPEC int hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); /** \brief Query the default memory binding policy and physical locality of the - * current process or thread (the locality is returned in \p cpuset as - * CPUs near the locality's actual NUMA node(s)). + * current process or thread. * - * This function has two output parameters: \p cpuset and \p policy. + * This function has two output parameters: \p set and \p policy. * The values returned in these parameters depend on both the \p flags * passed in and the current memory binding policies and nodesets in * the queried target. @@ -1823,31 +1895,31 @@ HWLOC_DECLSPEC int hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_no * is also specified. In this case, hwloc will check the default * memory policies and nodesets for all threads in the process. If * they are not identical, -1 is returned and errno is set to EXDEV. - * If they are identical, the policy is returned in \p policy. \p - * cpuset is set to the union of CPUs near the NUMA node(s) in the - * nodeset. + * If they are identical, the values are returned in \p set and \p + * policy. * * Otherwise, if ::HWLOC_MEMBIND_PROCESS is specified (and - * ::HWLOC_MEMBIND_STRICT is \em not specified), the default nodeset - * from each thread is logically OR'ed together. \p cpuset is set to - * the union of CPUs near the NUMA node(s) in the resulting nodeset. + * ::HWLOC_MEMBIND_STRICT is \em not specified), the default set + * from each thread is logically OR'ed together. * If all threads' default policies are the same, \p policy is set to * that policy. If they are different, \p policy is set to * ::HWLOC_MEMBIND_MIXED. * * In the ::HWLOC_MEMBIND_THREAD case (or when neither * ::HWLOC_MEMBIND_PROCESS or ::HWLOC_MEMBIND_THREAD is specified), there - * is only one nodeset and policy. The policy is returned in \p - * policy; \p cpuset is set to the union of CPUs near the NUMA node(s) - * in the \p nodeset. + * is only one set and policy; they are returned in \p set and + * \p policy, respectively. + * + * If ::HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. + * Otherwise it's a cpuset. * * If any other flags are specified, -1 is returned and errno is set * to EINVAL. */ -HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags); +HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags); /** \brief Set the default memory binding policy of the specified - * process to prefer the NUMA node(s) specified by physical \p nodeset + * process to prefer the NUMA node(s) specified by \p nodeset * * \return -1 with errno set to ENOSYS if the action is not supported * \return -1 with errno set to EXDEV if the binding cannot be enforced @@ -1858,7 +1930,10 @@ HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_cpuset_t c HWLOC_DECLSPEC int hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); /** \brief Set the default memory binding policy of the specified - * process to prefer the NUMA node(s) near the specified physical \p cpuset + * process to prefer the NUMA node(s) specified by \p set + * + * If ::HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. + * Otherwise it's a cpuset. * * \return -1 with errno set to ENOSYS if the action is not supported * \return -1 with errno set to EXDEV if the binding cannot be enforced @@ -1866,7 +1941,7 @@ HWLOC_DECLSPEC int hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwl * \note \p hwloc_pid_t is \p pid_t on Unix platforms, * and \p HANDLE on native Windows platforms. */ -HWLOC_DECLSPEC int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags); +HWLOC_DECLSPEC int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags); /** \brief Query the default memory binding policy and physical locality of the * specified process. @@ -1907,10 +1982,9 @@ HWLOC_DECLSPEC int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t HWLOC_DECLSPEC int hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); /** \brief Query the default memory binding policy and physical locality of the - * specified process (the locality is returned in \p cpuset as CPUs - * near the locality's actual NUMA node(s)). + * specified process. * - * This function has two output parameters: \p cpuset and \p policy. + * This function has two output parameters: \p set and \p policy. * The values returned in these parameters depend on both the \p flags * passed in and the current memory binding policies and nodesets in * the queried target. @@ -1929,39 +2003,45 @@ HWLOC_DECLSPEC int hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwl * If ::HWLOC_MEMBIND_STRICT is specified, hwloc will check the default * memory policies and nodesets for all threads in the specified * process. If they are not identical, -1 is returned and errno is - * set to EXDEV. If they are identical, the policy is returned in \p - * policy. \p cpuset is set to the union of CPUs near the NUMA - * node(s) in the nodeset. + * set to EXDEV. If they are identical, the values are returned in \p + * set and \p policy. * - * Otherwise, the default nodeset from each thread is logically OR'ed - * together. \p cpuset is set to the union of CPUs near the NUMA - * node(s) in the resulting nodeset. If all threads' default policies + * Otherwise, \p set is set to the logical OR of all threads' + * default set. If all threads' default policies * are the same, \p policy is set to that policy. If they are * different, \p policy is set to ::HWLOC_MEMBIND_MIXED. * + * If ::HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. + * Otherwise it's a cpuset. + * * If any other flags are specified, -1 is returned and errno is set * to EINVAL. * * \note \p hwloc_pid_t is \p pid_t on Unix platforms, * and \p HANDLE on native Windows platforms. */ -HWLOC_DECLSPEC int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags); +HWLOC_DECLSPEC int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags); /** \brief Bind the already-allocated memory identified by (addr, len) - * to the NUMA node(s) in physical \p nodeset. + * to the NUMA node(s) specified by \p nodeset. * + * \return 0 if \p len is 0. * \return -1 with errno set to ENOSYS if the action is not supported * \return -1 with errno set to EXDEV if the binding cannot be enforced */ HWLOC_DECLSPEC int hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); /** \brief Bind the already-allocated memory identified by (addr, len) - * to the NUMA node(s) near physical \p cpuset. + * to the NUMA node(s) specified by \p set. * + * If ::HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. + * Otherwise it's a cpuset. + * + * \return 0 if \p len is 0. * \return -1 with errno set to ENOSYS if the action is not supported * \return -1 with errno set to EXDEV if the binding cannot be enforced */ -HWLOC_DECLSPEC int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags); +HWLOC_DECLSPEC int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags); /** \brief Query the physical NUMA node(s) and binding policy of the memory * identified by (\p addr, \p len ). @@ -1982,6 +2062,8 @@ HWLOC_DECLSPEC int hwloc_set_area_membind(hwloc_topology_t topology, const void * If all pages in the target have the same policy, it is returned in * \p policy. Otherwise, \p policy is set to ::HWLOC_MEMBIND_MIXED. * + * If \p len is 0, -1 is returned and errno is set to EINVAL. + * * If any other flags are specified, -1 is returned and errno is set * to EINVAL. */ @@ -1990,7 +2072,7 @@ HWLOC_DECLSPEC int hwloc_get_area_membind_nodeset(hwloc_topology_t topology, con /** \brief Query the CPUs near the physical NUMA node(s) and binding policy of * the memory identified by (\p addr, \p len ). * - * This function has two output parameters: \p cpuset and \p policy. + * This function has two output parameters: \p set and \p policy. * The values returned in these parameters depend on both the \p flags * passed in and the memory binding policies and nodesets of the pages * in the address range. @@ -1998,20 +2080,46 @@ HWLOC_DECLSPEC int hwloc_get_area_membind_nodeset(hwloc_topology_t topology, con * If ::HWLOC_MEMBIND_STRICT is specified, the target pages are first * checked to see if they all have the same memory binding policy and * nodeset. If they do not, -1 is returned and errno is set to EXDEV. - * If they are identical across all pages, the policy is returned in - * \p policy. \p cpuset is set to the union of CPUs near the NUMA - * node(s) in the nodeset. + * If they are identical across all pages, the set and policy are + * returned in \p set and \p policy, respectively. * * If ::HWLOC_MEMBIND_STRICT is not specified, the union of all NUMA - * node(s) containing pages in the address range is calculated. \p - * cpuset is then set to the CPUs near the NUMA node(s) in this union. + * node(s) containing pages in the address range is calculated. * If all pages in the target have the same policy, it is returned in * \p policy. Otherwise, \p policy is set to ::HWLOC_MEMBIND_MIXED. * + * If ::HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. + * Otherwise it's a cpuset. + * + * If \p len is 0, -1 is returned and errno is set to EINVAL. + * * If any other flags are specified, -1 is returned and errno is set * to EINVAL. */ -HWLOC_DECLSPEC int hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags); +HWLOC_DECLSPEC int hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags); + +/** \brief Get the NUMA nodes where memory identified by (\p addr, \p len ) is physically allocated. + * + * Fills \p set according to the NUMA nodes where the memory area pages + * are physically allocated. If no page is actually allocated yet, + * \p set may be empty. + * + * If pages spread to multiple nodes, it is not specified whether they spread + * equitably, or whether most of them are on a single node, etc. + * + * The operating system may move memory pages from one processor + * to another at any time according to their binding, + * so this function may return something that is already + * outdated. + * + * If ::HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. + * Otherwise it's a cpuset. + * + * If \p len is 0, \p set is emptied. + * + * Flags are currently unused. + */ +HWLOC_DECLSPEC int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags); /** \brief Allocate some memory * @@ -2022,7 +2130,7 @@ HWLOC_DECLSPEC int hwloc_get_area_membind(hwloc_topology_t topology, const void */ HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len); -/** \brief Allocate some memory on the given physical nodeset \p nodeset +/** \brief Allocate some memory on NUMA memory nodes specified by \p nodeset * * \return NULL with errno set to ENOSYS if the action is not supported * and ::HWLOC_MEMBIND_STRICT is given @@ -2035,7 +2143,7 @@ HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len); */ HWLOC_DECLSPEC void *hwloc_alloc_membind_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc; -/** \brief Allocate some memory on memory nodes near the given physical cpuset \p cpuset +/** \brief Allocate some memory on NUMA memory nodes specified by \p set * * \return NULL with errno set to ENOSYS if the action is not supported * and ::HWLOC_MEMBIND_STRICT is given @@ -2044,11 +2152,14 @@ HWLOC_DECLSPEC void *hwloc_alloc_membind_nodeset(hwloc_topology_t topology, size * \return NULL with errno set to ENOMEM if the memory allocation failed * even before trying to bind. * + * If ::HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. + * Otherwise it's a cpuset. + * * \note The allocated memory should be freed with hwloc_free(). */ -HWLOC_DECLSPEC void *hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc; +HWLOC_DECLSPEC void *hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc; -/** \brief Allocate some memory on the given nodeset \p nodeset +/** \brief Allocate some memory on NUMA memory nodes specified by \p nodeset * * This is similar to hwloc_alloc_membind() except that it is allowed to change * the current memory binding policy, thus providing more binding support, at @@ -2057,12 +2168,17 @@ HWLOC_DECLSPEC void *hwloc_alloc_membind(hwloc_topology_t topology, size_t len, static __hwloc_inline void * hwloc_alloc_membind_policy_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc; -/** \brief Allocate some memory on the memory nodes near given cpuset \p cpuset +/** \brief Allocate some memory on NUMA memory nodes specified by \p set * - * This is similar to hwloc_alloc_membind_policy_nodeset(), but for a given cpuset. + * This is similar to hwloc_alloc_membind_nodeset() except that it is allowed to change + * the current memory binding policy, thus providing more binding support, at + * the expense of changing the current state. + * + * If ::HWLOC_MEMBIND_BYNODESET is specified, set is considered a nodeset. + * Otherwise it's a cpuset. */ static __hwloc_inline void * -hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc; +hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc; /** \brief Free memory that was previously allocated by hwloc_alloc() * or hwloc_alloc_membind(). diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/autogen/config.h.in b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/autogen/config.h.in similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/autogen/config.h.in rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/autogen/config.h.in diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/bitmap.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/bitmap.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/bitmap.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/bitmap.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/cuda.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/cuda.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/cuda.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/cuda.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/cudart.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/cudart.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/cudart.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/cudart.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/deprecated.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/deprecated.h similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/deprecated.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/deprecated.h index 2a58120278..ac42c13de0 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/deprecated.h +++ b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/deprecated.h @@ -99,4 +99,4 @@ hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_root #endif -#endif /* HWLOC_INLINES_H */ +#endif /* HWLOC_DEPRECATED_H */ diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/diff.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/diff.h similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/diff.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/diff.h index 8b2fe92c32..01e3678083 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/diff.h +++ b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/diff.h @@ -1,5 +1,5 @@ /* - * Copyright © 2013-2015 Inria. All rights reserved. + * Copyright © 2013-2016 Inria. All rights reserved. * See COPYING in top-level directory. */ @@ -296,4 +296,4 @@ HWLOC_DECLSPEC int hwloc_topology_diff_export_xmlbuffer(hwloc_topology_t topolog #endif -#endif /* HWLOC_HELPER_H */ +#endif /* HWLOC_DIFF_H */ diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/gl.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/gl.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/gl.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/gl.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/glibc-sched.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/glibc-sched.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/glibc-sched.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/glibc-sched.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/helper.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/helper.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/helper.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/helper.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/inlines.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/inlines.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/inlines.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/inlines.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/intel-mic.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/intel-mic.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/intel-mic.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/intel-mic.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/linux-libnuma.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/linux-libnuma.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/linux-libnuma.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/linux-libnuma.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/linux.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/linux.h similarity index 95% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/linux.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/linux.h index 565bfeec2a..3990546515 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/linux.h +++ b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/linux.h @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2011 Université Bordeaux * See COPYING in top-level directory. */ @@ -74,4 +74,4 @@ HWLOC_DECLSPEC int hwloc_linux_get_tid_last_cpu_location(hwloc_topology_t topolo #endif -#endif /* HWLOC_GLIBC_SCHED_H */ +#endif /* HWLOC_LINUX_H */ diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/myriexpress.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/myriexpress.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/myriexpress.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/myriexpress.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/nvml.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/nvml.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/nvml.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/nvml.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/opencl.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/opencl.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/opencl.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/opencl.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/openfabrics-verbs.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/openfabrics-verbs.h similarity index 92% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/openfabrics-verbs.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/openfabrics-verbs.h index c6b853374b..1762f733b0 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/openfabrics-verbs.h +++ b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/openfabrics-verbs.h @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2013 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2010 Université Bordeaux * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -12,7 +12,7 @@ * * Applications that use both hwloc and OpenFabrics verbs may want to * include this file so as to get topology information for OpenFabrics - * hardware. + * hardware (InfiniBand, etc). * */ @@ -36,7 +36,7 @@ extern "C" { /** \defgroup hwlocality_openfabrics Interoperability with OpenFabrics * * This interface offers ways to retrieve topology information about - * OpenFabrics devices. + * OpenFabrics devices (InfiniBand, Omni-Path, usNIC, etc). * * @{ */ @@ -45,7 +45,7 @@ extern "C" { * close to device \p ibdev. * * Return the CPU set describing the locality of the OpenFabrics - * device \p ibdev. + * device \p ibdev (InfiniBand, etc). * * Topology \p topology and device \p ibdev must match the local machine. * I/O devices detection is not needed in the topology. @@ -95,8 +95,10 @@ hwloc_ibv_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused, /** \brief Get the hwloc OS device object corresponding to the OpenFabrics * device named \p ibname. * - * Return the OS device object describing the OpenFabrics device whose - * name is \p ibname. Returns NULL if there is none. + * Return the OS device object describing the OpenFabrics device + * (InfiniBand, Omni-Path, usNIC, etc) whose name is \p ibname + * (mlx5_0, hfi1_0, usnic_0, qib0, etc). + * Returns NULL if there is none. * The name \p ibname is usually obtained from ibv_get_device_name(). * * The topology \p topology does not necessarily have to match the current @@ -122,8 +124,8 @@ hwloc_ibv_get_device_osdev_by_name(hwloc_topology_t topology, /** \brief Get the hwloc OS device object corresponding to the OpenFabrics * device \p ibdev. * - * Return the OS device object describing the OpenFabrics device \p ibdev. - * Returns NULL if there is none. + * Return the OS device object describing the OpenFabrics device \p ibdev + * (InfiniBand, etc). Returns NULL if there is none. * * Topology \p topology and device \p ibdev must match the local machine. * I/O devices detection must be enabled in the topology. diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/plugins.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/plugins.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/plugins.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/plugins.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/rename.h b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/rename.h similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/rename.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/rename.h index 27a6f9d12c..9555a73102 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/include/hwloc/rename.h +++ b/opal/mca/hwloc/hwloc1113/hwloc/include/hwloc/rename.h @@ -1,6 +1,6 @@ /* * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * Copyright © 2010-2015 Inria. All rights reserved. + * Copyright © 2010-2016 Inria. All rights reserved. * See COPYING in top-level directory. */ @@ -184,10 +184,11 @@ extern "C" { #define hwloc_get_obj_by_type HWLOC_NAME(get_obj_by_type ) #define hwloc_obj_type_string HWLOC_NAME(obj_type_string ) -#define hwloc_obj_type_sscanf HWLOC_NAME(obj_type_sscanf) #define hwloc_obj_type_snprintf HWLOC_NAME(obj_type_snprintf ) #define hwloc_obj_attr_snprintf HWLOC_NAME(obj_attr_snprintf ) #define hwloc_obj_cpuset_snprintf HWLOC_NAME(obj_cpuset_snprintf) +#define hwloc_obj_type_sscanf HWLOC_NAME(obj_type_sscanf) + #define hwloc_obj_get_info_by_name HWLOC_NAME(obj_get_info_by_name) #define hwloc_obj_add_info HWLOC_NAME(obj_add_info) @@ -223,6 +224,7 @@ extern "C" { #define HWLOC_MEMBIND_STRICT HWLOC_NAME_CAPS(MEMBIND_STRICT) #define HWLOC_MEMBIND_MIGRATE HWLOC_NAME_CAPS(MEMBIND_MIGRATE) #define HWLOC_MEMBIND_NOCPUBIND HWLOC_NAME_CAPS(MEMBIND_NOCPUBIND) +#define HWLOC_MEMBIND_BYNODESET HWLOC_NAME_CAPS(MEMBIND_BYNODESET) #define hwloc_membind_flags_t HWLOC_NAME(membind_flags_t) @@ -238,6 +240,7 @@ extern "C" { #define hwloc_set_area_membind HWLOC_NAME(set_area_membind) #define hwloc_get_area_membind_nodeset HWLOC_NAME(get_area_membind_nodeset) #define hwloc_get_area_membind HWLOC_NAME(get_area_membind) +#define hwloc_get_area_memlocation HWLOC_NAME(get_area_memlocation) #define hwloc_alloc_membind_nodeset HWLOC_NAME(alloc_membind_nodeset) #define hwloc_alloc_membind HWLOC_NAME(alloc_membind) #define hwloc_alloc HWLOC_NAME(alloc) diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/private/autogen/config.h.in b/opal/mca/hwloc/hwloc1113/hwloc/include/private/autogen/config.h.in similarity index 95% rename from opal/mca/hwloc/hwloc1112/hwloc/include/private/autogen/config.h.in rename to opal/mca/hwloc/hwloc1113/hwloc/include/private/autogen/config.h.in index d02c357936..1d8b4fcc5c 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/include/private/autogen/config.h.in +++ b/opal/mca/hwloc/hwloc1113/hwloc/include/private/autogen/config.h.in @@ -91,10 +91,26 @@ 0 if you don't. */ #undef HAVE_DECL_PTHREAD_SETAFFINITY_NP +/* Define to 1 if you have the declaration of `RUNNING_ON_VALGRIND', and to 0 + if you don't. */ +#undef HAVE_DECL_RUNNING_ON_VALGRIND + +/* Define to 1 if you have the declaration of `snprintf', and to 0 if you + don't. */ +#undef HAVE_DECL_SNPRINTF + +/* Define to 1 if you have the declaration of `strcasecmp', and to 0 if you + don't. */ +#undef HAVE_DECL_STRCASECMP + /* Define to 1 if you have the declaration of `strtoull', and to 0 if you don't. */ #undef HAVE_DECL_STRTOULL +/* Define to 1 if you have the declaration of `_putenv', and to 0 if you + don't. */ +#undef HAVE_DECL__PUTENV + /* Define to 1 if you have the declaration of `_SC_LARGE_PAGESIZE', and to 0 if you don't. */ #undef HAVE_DECL__SC_LARGE_PAGESIZE @@ -123,6 +139,10 @@ don't. */ #undef HAVE_DECL__SC_PAGE_SIZE +/* Define to 1 if you have the declaration of `_strdup', and to 0 if you + don't. */ +#undef HAVE_DECL__STRDUP + /* Define to 1 if you have the header file. */ #undef HAVE_DIRENT_H @@ -271,6 +291,9 @@ /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE +/* Define to 1 if the system has the type `ssize_t'. */ +#undef HAVE_SSIZE_T + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H @@ -289,6 +312,9 @@ /* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP +/* Define to 1 if you have the `strtoull' function. */ +#undef HAVE_STRTOULL + /* Define to '1' if sysctl is present and usable */ #undef HAVE_SYSCTL @@ -336,6 +362,9 @@ /* Define to 1 if you have the `uselocale' function. */ #undef HAVE_USELOCALE +/* Define to 1 if you have the header file. */ +#undef HAVE_VALGRIND_VALGRIND_H + /* Define to 1 if the system has the type `wchar_t'. */ #undef HAVE_WCHAR_T @@ -501,6 +530,9 @@ /* Define to 1 if migrate_pages is available. */ #undef HWLOC_HAVE_MIGRATE_PAGES +/* Define to 1 if move_pages is available. */ +#undef HWLOC_HAVE_MOVE_PAGES + /* Define to 1 if you have the `NVML' library. */ #undef HWLOC_HAVE_NVML diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/private/components.h b/opal/mca/hwloc/hwloc1113/hwloc/include/private/components.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/private/components.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/private/components.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/private/cpuid-x86.h b/opal/mca/hwloc/hwloc1113/hwloc/include/private/cpuid-x86.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/private/cpuid-x86.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/private/cpuid-x86.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/private/debug.h b/opal/mca/hwloc/hwloc1113/hwloc/include/private/debug.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/private/debug.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/private/debug.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/private/misc.h b/opal/mca/hwloc/hwloc1113/hwloc/include/private/misc.h similarity index 92% rename from opal/mca/hwloc/hwloc1112/hwloc/include/private/misc.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/private/misc.h index d0e6a465f6..dbfc2d8e8a 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/include/private/misc.h +++ b/opal/mca/hwloc/hwloc1113/hwloc/include/private/misc.h @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2014 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2012 Université Bordeaux * Copyright © 2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -360,7 +360,7 @@ hwloc_weight_long(unsigned long w) #endif /* HWLOC_BITS_PER_LONG == 64 */ } -#if !HAVE_DECL_STRTOULL +#if !HAVE_DECL_STRTOULL && defined(HAVE_STRTOULL) unsigned long long int strtoull(const char *nptr, char **endptr, int base); #endif @@ -379,4 +379,31 @@ static __hwloc_inline int hwloc_strncasecmp(const char *s1, const char *s2, size #endif } +#ifdef HWLOC_WIN_SYS +# ifndef HAVE_SSIZE_T +typedef SSIZE_T ssize_t; +# endif +# if !HAVE_DECL_STRTOULL && !defined(HAVE_STRTOULL) +# define strtoull _strtoui64 +# endif +# ifndef S_ISREG +# define S_ISREG(m) ((m) & S_IFREG) +# endif +# ifndef S_ISDIR +# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +# endif +# if !HAVE_DECL_STRCASECMP +# define strcasecmp _stricmp +# endif +# if !HAVE_DECL_SNPRINTF +# define snprintf _snprintf +# endif +# if HAVE_DECL__STRDUP +# define strdup _strdup +# endif +# if HAVE_DECL__PUTENV +# define putenv _putenv +# endif +#endif + #endif /* HWLOC_PRIVATE_MISC_H */ diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/private/private.h b/opal/mca/hwloc/hwloc1113/hwloc/include/private/private.h similarity index 98% rename from opal/mca/hwloc/hwloc1112/hwloc/include/private/private.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/private/private.h index dafc26670a..24ded2893a 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/include/private/private.h +++ b/opal/mca/hwloc/hwloc1113/hwloc/include/private/private.h @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2012 Université Bordeaux * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. * @@ -94,6 +94,7 @@ struct hwloc_topology { int (*get_proc_membind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); int (*set_area_membind)(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); int (*get_area_membind)(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); + int (*get_area_memlocation)(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, int flags); /* This has to return the same kind of pointer as alloc_membind, so that free_membind can be used on it */ void *(*alloc)(hwloc_topology_t topology, size_t len); /* alloc_membind has to always succeed if !(flags & HWLOC_MEMBIND_STRICT). @@ -106,6 +107,7 @@ struct hwloc_topology { void (*userdata_export_cb)(void *reserved, struct hwloc_topology *topology, struct hwloc_obj *obj); void (*userdata_import_cb)(struct hwloc_topology *topology, struct hwloc_obj *obj, const char *name, const void *buffer, size_t length); + int userdata_not_decoded; struct hwloc_os_distances_s { hwloc_obj_type_t type; diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/private/solaris-chiptype.h b/opal/mca/hwloc/hwloc1113/hwloc/include/private/solaris-chiptype.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/private/solaris-chiptype.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/private/solaris-chiptype.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/include/private/xml.h b/opal/mca/hwloc/hwloc1113/hwloc/include/private/xml.h similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/include/private/xml.h rename to opal/mca/hwloc/hwloc1113/hwloc/include/private/xml.h diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/Makefile.am b/opal/mca/hwloc/hwloc1113/hwloc/src/Makefile.am similarity index 95% rename from opal/mca/hwloc/hwloc1112/hwloc/src/Makefile.am rename to opal/mca/hwloc/hwloc1113/hwloc/src/Makefile.am index a241d703f3..fa7dd89174 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/Makefile.am +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/Makefile.am @@ -1,4 +1,4 @@ -# Copyright © 2009-2014 Inria. All rights reserved. +# Copyright © 2009-2016 Inria. All rights reserved. # Copyright © 2009-2012 Université Bordeaux # Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. # Copyright © 2011-2012 Oracle and/or its affiliates. All rights reserved. @@ -22,7 +22,8 @@ endif pluginsdir = @HWLOC_PLUGINS_DIR@ plugins_LTLIBRARIES = plugins_ldflags = -module -avoid-version -lltdl -AM_CPPFLAGS += -DHWLOC_PLUGINS_PATH=\"$(HWLOC_PLUGINS_PATH)\" +# Beware that files are not rebuilt automatically when reconfiguring with different paths in these flags. +AM_CPPFLAGS += -DHWLOC_PLUGINS_PATH=\"$(HWLOC_PLUGINS_PATH)\" -DRUNSTATEDIR=\"$(HWLOC_runstatedir)\" # Sources and ldflags diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/base64.c b/opal/mca/hwloc/hwloc1113/hwloc/src/base64.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/base64.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/base64.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/bind.c b/opal/mca/hwloc/hwloc1113/hwloc/src/bind.c similarity index 82% rename from opal/mca/hwloc/hwloc1112/hwloc/src/bind.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/bind.c index afef5e8f0d..fe2da153ac 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/bind.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/bind.c @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2011 inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2010, 2012 Université Bordeaux * Copyright © 2011-2015 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -196,6 +196,8 @@ hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwl return -1; } +#define HWLOC_MEMBIND_ALLFLAGS (HWLOC_MEMBIND_PROCESS|HWLOC_MEMBIND_THREAD|HWLOC_MEMBIND_STRICT|HWLOC_MEMBIND_MIGRATE|HWLOC_MEMBIND_NOCPUBIND|HWLOC_MEMBIND_BYNODESET) + static hwloc_const_nodeset_t hwloc_fix_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset) { @@ -299,17 +301,20 @@ hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodes } int -hwloc_set_membind(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags) +hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) { - hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); int ret; - if (hwloc_fix_membind_cpuset(topology, nodeset, set)) - ret = -1; - else - ret = hwloc_set_membind_nodeset(topology, nodeset, policy, flags); - - hwloc_bitmap_free(nodeset); + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_set_membind_nodeset(topology, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + if (hwloc_fix_membind_cpuset(topology, nodeset, set)) + ret = -1; + else + ret = hwloc_set_membind_nodeset(topology, nodeset, policy, flags); + hwloc_bitmap_free(nodeset); + } return ret; } @@ -338,18 +343,20 @@ hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hw } int -hwloc_get_membind(hwloc_topology_t topology, hwloc_cpuset_t set, hwloc_membind_policy_t * policy, int flags) +hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags) { - hwloc_nodeset_t nodeset; int ret; - nodeset = hwloc_bitmap_alloc(); - ret = hwloc_get_membind_nodeset(topology, nodeset, policy, flags); + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_get_membind_nodeset(topology, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + ret = hwloc_get_membind_nodeset(topology, nodeset, policy, flags); + if (!ret) + hwloc_cpuset_from_nodeset(topology, set, nodeset); + hwloc_bitmap_free(nodeset); + } - if (!ret) - hwloc_cpuset_from_nodeset(topology, set, nodeset); - - hwloc_bitmap_free(nodeset); return ret; } @@ -369,17 +376,21 @@ hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc int -hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags) +hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) { - hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); int ret; - if (hwloc_fix_membind_cpuset(topology, nodeset, set)) - ret = -1; - else - ret = hwloc_set_proc_membind_nodeset(topology, pid, nodeset, policy, flags); + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_set_proc_membind_nodeset(topology, pid, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + if (hwloc_fix_membind_cpuset(topology, nodeset, set)) + ret = -1; + else + ret = hwloc_set_proc_membind_nodeset(topology, pid, nodeset, policy, flags); + hwloc_bitmap_free(nodeset); + } - hwloc_bitmap_free(nodeset); return ret; } @@ -394,24 +405,30 @@ hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc } int -hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, hwloc_membind_policy_t * policy, int flags) +hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags) { - hwloc_nodeset_t nodeset; int ret; - nodeset = hwloc_bitmap_alloc(); - ret = hwloc_get_proc_membind_nodeset(topology, pid, nodeset, policy, flags); + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_get_proc_membind_nodeset(topology, pid, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + ret = hwloc_get_proc_membind_nodeset(topology, pid, nodeset, policy, flags); + if (!ret) + hwloc_cpuset_from_nodeset(topology, set, nodeset); + hwloc_bitmap_free(nodeset); + } - if (!ret) - hwloc_cpuset_from_nodeset(topology, set, nodeset); - - hwloc_bitmap_free(nodeset); return ret; } int hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) { + if (!len) + /* nothing to do */ + return 0; + nodeset = hwloc_fix_membind(topology, nodeset); if (!nodeset) return -1; @@ -424,23 +441,33 @@ hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size } int -hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags) +hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) { - hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); int ret; - if (hwloc_fix_membind_cpuset(topology, nodeset, set)) - ret = -1; - else - ret = hwloc_set_area_membind_nodeset(topology, addr, len, nodeset, policy, flags); + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_set_area_membind_nodeset(topology, addr, len, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + if (hwloc_fix_membind_cpuset(topology, nodeset, set)) + ret = -1; + else + ret = hwloc_set_area_membind_nodeset(topology, addr, len, nodeset, policy, flags); + hwloc_bitmap_free(nodeset); + } - hwloc_bitmap_free(nodeset); return ret; } int hwloc_get_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) { + if (!len) { + /* nothing to query */ + errno = EINVAL; + return -1; + } + if (topology->binding_hooks.get_area_membind) return topology->binding_hooks.get_area_membind(topology, addr, len, nodeset, policy, flags); @@ -449,18 +476,57 @@ hwloc_get_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size } int -hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_cpuset_t set, hwloc_membind_policy_t * policy, int flags) +hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags) { - hwloc_nodeset_t nodeset; int ret; - nodeset = hwloc_bitmap_alloc(); - ret = hwloc_get_area_membind_nodeset(topology, addr, len, nodeset, policy, flags); + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_get_area_membind_nodeset(topology, addr, len, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + ret = hwloc_get_area_membind_nodeset(topology, addr, len, nodeset, policy, flags); + if (!ret) + hwloc_cpuset_from_nodeset(topology, set, nodeset); + hwloc_bitmap_free(nodeset); + } - if (!ret) - hwloc_cpuset_from_nodeset(topology, set, nodeset); + return ret; +} + +static int +hwloc_get_area_memlocation_by_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, int flags) +{ + if (flags & ~HWLOC_MEMBIND_ALLFLAGS) { + errno = EINVAL; + return -1; + } + + if (!len) + /* nothing to do */ + return 0; + + if (topology->binding_hooks.get_area_memlocation) + return topology->binding_hooks.get_area_memlocation(topology, addr, len, nodeset, flags); + + errno = ENOSYS; + return -1; +} + +int +hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_cpuset_t set, int flags) +{ + int ret; + + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_get_area_memlocation_by_nodeset(topology, addr, len, set, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + ret = hwloc_get_area_memlocation_by_nodeset(topology, addr, len, nodeset, flags); + if (!ret) + hwloc_cpuset_from_nodeset(topology, set, nodeset); + hwloc_bitmap_free(nodeset); + } - hwloc_bitmap_free(nodeset); return ret; } @@ -484,7 +550,8 @@ hwloc_alloc_heap(hwloc_topology_t topology __hwloc_attribute_unused, size_t len) void * hwloc_alloc_mmap(hwloc_topology_t topology __hwloc_attribute_unused, size_t len) { - return mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + void * buffer = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + return buffer == MAP_FAILED ? NULL : buffer; } #endif @@ -551,20 +618,24 @@ fallback: } void * -hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags) +hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) { - hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); void *ret; - if (hwloc_fix_membind_cpuset(topology, nodeset, set)) { - if (flags & HWLOC_MEMBIND_STRICT) - ret = NULL; - else - ret = hwloc_alloc(topology, len); - } else - ret = hwloc_alloc_membind_nodeset(topology, len, nodeset, policy, flags); + if (flags & HWLOC_MEMBIND_BYNODESET) { + ret = hwloc_alloc_membind_nodeset(topology, len, set, policy, flags); + } else { + hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); + if (hwloc_fix_membind_cpuset(topology, nodeset, set)) { + if (flags & HWLOC_MEMBIND_STRICT) + ret = NULL; + else + ret = hwloc_alloc(topology, len); + } else + ret = hwloc_alloc_membind_nodeset(topology, len, nodeset, policy, flags); + hwloc_bitmap_free(nodeset); + } - hwloc_bitmap_free(nodeset); return ret; } @@ -671,6 +742,11 @@ static int dontget_area_membind(hwloc_topology_t topology __hwloc_attribute_unus { return dontset_return_complete_nodeset(topology, set, policy); } +static int dontget_area_memlocation(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_bitmap_t set, int flags __hwloc_attribute_unused) +{ + hwloc_membind_policy_t policy; + return dontset_return_complete_nodeset(topology, set, &policy); +} static void * dontalloc_membind(hwloc_topology_t topology __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) { @@ -707,6 +783,7 @@ static void hwloc_set_dummy_hooks(struct hwloc_binding_hooks *hooks, hooks->get_proc_membind = dontget_proc_membind; hooks->set_area_membind = dontset_area_membind; hooks->get_area_membind = dontget_area_membind; + hooks->get_area_memlocation = dontget_area_memlocation; hooks->alloc_membind = dontalloc_membind; hooks->free_membind = dontfree_membind; } @@ -796,6 +873,7 @@ hwloc_set_binding_hooks(struct hwloc_topology *topology) DO(mem,get_proc_membind); DO(mem,set_area_membind); DO(mem,get_area_membind); + DO(mem,get_area_memlocation); DO(mem,alloc_membind); } } diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/bitmap.c b/opal/mca/hwloc/hwloc1113/hwloc/src/bitmap.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/bitmap.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/bitmap.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/components.c b/opal/mca/hwloc/hwloc1113/hwloc/src/components.c similarity index 96% rename from opal/mca/hwloc/hwloc1112/hwloc/src/components.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/components.c index aa0c8f9398..b340802dc5 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/components.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/components.c @@ -1,6 +1,6 @@ /* - * Copyright © 2009-2015 Inria. All rights reserved. - * Copyright © 2012 Université Bordeau 1 + * Copyright © 2009-2016 Inria. All rights reserved. + * Copyright © 2012 Université Bordeaux * See COPYING in top-level directory. */ @@ -8,6 +8,7 @@ #include #include #include +#include #define HWLOC_COMPONENT_STOP_NAME "stop" #define HWLOC_COMPONENT_EXCLUDE_CHAR '-' @@ -24,6 +25,7 @@ static unsigned hwloc_components_users = 0; /* first one initializes, last ones static int hwloc_components_verbose = 0; #ifdef HWLOC_HAVE_PLUGINS static int hwloc_plugins_verbose = 0; +static const char * hwloc_plugins_blacklist = NULL; #endif /* hwloc_components_mutex serializes: @@ -89,6 +91,12 @@ hwloc__dlforeach_cb(const char *filename, void *_data __hwloc_attribute_unused) else basename++; + if (hwloc_plugins_blacklist && strstr(hwloc_plugins_blacklist, basename)) { + if (hwloc_plugins_verbose) + fprintf(stderr, "Plugin `%s' is blacklisted in the environment\n", basename); + goto out; + } + /* dlopen and get the component structure */ handle = lt_dlopenext(filename); if (!handle) { @@ -197,6 +205,8 @@ hwloc_plugins_init(void) verboseenv = getenv("HWLOC_PLUGINS_VERBOSE"); hwloc_plugins_verbose = verboseenv ? atoi(verboseenv) : 0; + hwloc_plugins_blacklist = getenv("HWLOC_PLUGINS_BLACKLIST"); + err = lt_dlinit(); if (err) goto out; @@ -458,14 +468,15 @@ hwloc_disc_component_try_enable(struct hwloc_topology *topology, struct hwloc_disc_component *comp, const char *comparg, unsigned *excludes, - int envvar_forced, - int verbose_errors) + int envvar_forced) { struct hwloc_backend *backend; int err; if ((*excludes) & comp->type) { - if (hwloc_components_verbose || verbose_errors) + if (hwloc_components_verbose) + /* do not warn if envvar_forced since system-wide HWLOC_COMPONENTS must be silently ignored after set_xml() etc. + */ fprintf(stderr, "Excluding %s discovery component `%s', conflicts with excludes 0x%x\n", hwloc_disc_component_type_string(comp->type), comp->name, *excludes); return -1; @@ -473,7 +484,7 @@ hwloc_disc_component_try_enable(struct hwloc_topology *topology, backend = comp->instantiate(comp, comparg, NULL, NULL); if (!backend) { - if (hwloc_components_verbose || verbose_errors) + if (hwloc_components_verbose || envvar_forced) fprintf(stderr, "Failed to instantiate discovery component `%s'\n", comp->name); return -1; } @@ -553,7 +564,7 @@ hwloc_disc_components_enable_others(struct hwloc_topology *topology) comp = hwloc_disc_component_find(-1, curenv); if (comp) { - hwloc_disc_component_try_enable(topology, comp, arg ? arg+1 : NULL, &excludes, 1 /* envvar forced */, 1 /* envvar forced need warnings */); + hwloc_disc_component_try_enable(topology, comp, arg ? arg+1 : NULL, &excludes, 1 /* envvar forced */); } else { fprintf(stderr, "Cannot find discovery component `%s'\n", curenv); } @@ -595,7 +606,7 @@ nextname: curenv++; } } - hwloc_disc_component_try_enable(topology, comp, NULL, &excludes, 0 /* defaults, not envvar forced */, 0 /* defaults don't need warnings on conflicts */); + hwloc_disc_component_try_enable(topology, comp, NULL, &excludes, 0 /* defaults, not envvar forced */); nextcomp: comp = comp->next; } diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/diff.c b/opal/mca/hwloc/hwloc1113/hwloc/src/diff.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/diff.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/diff.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/distances.c b/opal/mca/hwloc/hwloc1113/hwloc/src/distances.c similarity index 97% rename from opal/mca/hwloc/hwloc1112/hwloc/src/distances.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/distances.c index 5288680368..b2bfbdd8bb 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/distances.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/distances.c @@ -1,5 +1,5 @@ /* - * Copyright © 2010-2015 Inria. All rights reserved. + * Copyright © 2010-2016 Inria. All rights reserved. * Copyright © 2011-2012 Université Bordeaux * Copyright © 2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -84,6 +85,7 @@ void hwloc_distances_set(hwloc_topology_t __hwloc_restrict topology, hwloc_obj_t if (!nbobjs) /* we're just clearing, return now */ return; + assert(nbobjs >= 2); /* create the new element */ osdist = malloc(sizeof(struct hwloc_os_distances_s)); @@ -136,7 +138,21 @@ static void hwloc_distances__set_from_string(struct hwloc_topology *topology, if (sscanf(string, "%u-%u:", &i, &j) == 2) { /* range i-j */ + if (j <= i) { + fprintf(stderr, "Ignoring %s distances from environment variable, range doesn't cover at least 2 indexes\n", + hwloc_obj_type_string(type)); + return; + } nbobjs = j-i+1; + + tmp = strchr(string, ':'); + if (!tmp) { + fprintf(stderr, "Ignoring %s distances from environment variable, missing colon\n", + hwloc_obj_type_string(type)); + return; + } + tmp++; + indexes = calloc(nbobjs, sizeof(unsigned)); distances = calloc(nbobjs*nbobjs, sizeof(float)); /* make sure the user didn't give a veeeeery large range */ @@ -147,12 +163,14 @@ static void hwloc_distances__set_from_string(struct hwloc_topology *topology, } for(j=0; j #include #include +#include #ifdef HWLOC_DEBUG static void diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-aix.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-aix.c similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-aix.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-aix.c index 37812f3ab8..18ae67346a 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-aix.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-aix.c @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2011, 2013 Université Bordeaux * Copyright © 2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -433,7 +433,7 @@ hwloc_aix_get_sth_membind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_bitmap_free(hwloc_set); - *policy = HWLOC_MEMBIND_DEFAULT; + *policy = HWLOC_MEMBIND_BIND; res = 0; out: diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-bgq.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-bgq.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-bgq.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-bgq.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-cuda.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-cuda.c similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-cuda.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-cuda.c index a1c6bffab4..103319f523 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-cuda.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-cuda.c @@ -86,6 +86,8 @@ static unsigned hwloc_cuda_cores_per_MP(int major, int minor) return 192; case 5: return 128; + case 6: + return 64; } hwloc_debug("unknown compute capability %u.%u, disabling core display.\n", major, minor); return 0; diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-custom.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-custom.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-custom.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-custom.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-darwin.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-darwin.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-darwin.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-darwin.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-fake.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-fake.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-fake.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-fake.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-freebsd.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-freebsd.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-freebsd.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-freebsd.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-gl.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-gl.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-gl.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-gl.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-hardwired.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-hardwired.c similarity index 90% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-hardwired.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-hardwired.c index 03ffc83408..d448f3d55b 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-hardwired.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-hardwired.c @@ -1,5 +1,5 @@ /* - * Copyright © 2015 Inria. All rights reserved. + * Copyright © 2015-2016 Inria. All rights reserved. * See COPYING in top-level directory. */ @@ -10,7 +10,9 @@ int hwloc_look_hardwired_fujitsu_k(struct hwloc_topology *topology) { - /* FIXME: what if a broken core is disabled? */ + /* If a broken core gets disabled, its bit disappears and other core bits are NOT shifted towards 0. + * Node is not given to user job, not need to handle that case properly. + */ unsigned i; hwloc_obj_t obj; hwloc_bitmap_t set; @@ -67,7 +69,9 @@ int hwloc_look_hardwired_fujitsu_k(struct hwloc_topology *topology) int hwloc_look_hardwired_fujitsu_fx10(struct hwloc_topology *topology) { - /* FIXME: what if a broken core is disabled? */ + /* If a broken core gets disabled, its bit disappears and other core bits are NOT shifted towards 0. + * Node is not given to user job, not need to handle that case properly. + */ unsigned i; hwloc_obj_t obj; hwloc_bitmap_t set; @@ -124,7 +128,9 @@ int hwloc_look_hardwired_fujitsu_fx10(struct hwloc_topology *topology) int hwloc_look_hardwired_fujitsu_fx100(struct hwloc_topology *topology) { - /* FIXME: what if a broken core is disabled? */ + /* If a broken core gets disabled, its bit disappears and other core bits are NOT shifted towards 0. + * Node is not given to user job, not need to handle that case properly. + */ unsigned i; hwloc_obj_t obj; hwloc_bitmap_t set; diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-hpux.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-hpux.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-hpux.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-hpux.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-linux.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-linux.c similarity index 96% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-linux.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-linux.c index 8e3a80af64..fc8dc510ab 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-linux.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-linux.c @@ -37,7 +37,7 @@ #include #include #include -#if defined HWLOC_HAVE_SET_MEMPOLICY || defined HWLOC_HAVE_MBIND +#if defined HWLOC_HAVE_SET_MEMPOLICY || defined HWLOC_HAVE_MBIND || defined HWLOC_HAVE_MOVE_PAGES #define migratepages migrate_pages /* workaround broken migratepages prototype in numaif.h before libnuma 2.0.2 */ #include #endif @@ -50,8 +50,17 @@ struct hwloc_linux_backend_data_s { struct udev *udev; /* Global udev context */ #endif char *dumped_hwdata_dirname; + enum { + HWLOC_LINUX_ARCH_X86, /* x86 32 or 64bits, including k1om (KNC) */ + HWLOC_LINUX_ARCH_IA64, + HWLOC_LINUX_ARCH_ARM, + HWLOC_LINUX_ARCH_POWER, + HWLOC_LINUX_ARCH_UNKNOWN + } arch; int is_knl; struct utsname utsname; /* fields contain \0 when unknown */ + unsigned fallback_nbprocessors; + unsigned pagesize; int deprecated_classlinks_model; /* -2 if never tried, -1 if unknown, 0 if new (device contains class/name), 1 if old (device contains class:name) */ int mic_need_directlookup; /* if not tried yet, 0 if not needed, 1 if needed */ @@ -1221,7 +1230,7 @@ hwloc_linux_set_area_membind(hwloc_topology_t topology, const void *addr, size_t unsigned linuxflags = 0; int err; - remainder = (uintptr_t) addr & (sysconf(_SC_PAGESIZE)-1); + remainder = (uintptr_t) addr & (hwloc_getpagesize()-1); addr = (char*) addr - remainder; len += remainder; @@ -1270,7 +1279,7 @@ hwloc_linux_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nod int err; buffer = hwloc_alloc_mmap(topology, len); - if (buffer == MAP_FAILED) + if (!buffer) return NULL; err = hwloc_linux_set_area_membind(topology, buffer, len, nodeset, policy, flags); @@ -1500,6 +1509,49 @@ hwloc_linux_get_area_membind(hwloc_topology_t topology, const void *addr, size_t #endif /* HWLOC_HAVE_SET_MEMPOLICY */ +#ifdef HWLOC_HAVE_MOVE_PAGES +static int +hwloc_linux_get_area_memlocation(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr, size_t len, hwloc_nodeset_t nodeset, int flags __hwloc_attribute_unused) +{ + unsigned offset; + unsigned long count; + void **pages; + int *status; + int pagesize = hwloc_getpagesize(); + int ret; + unsigned i; + + offset = ((unsigned long) addr) & (pagesize-1); + addr = ((char*) addr) - offset; + len += offset; + count = (len + pagesize-1)/pagesize; + pages = malloc(count*sizeof(*pages)); + status = malloc(count*sizeof(*status)); + if (!pages || !status) { + ret = -1; + goto out_with_pages; + } + + for(i=0; i= 0) + hwloc_bitmap_set(nodeset, status[i]); + ret = 0; + + out_with_pages: + free(pages); + free(status); + return ret; +} +#endif /* HWLOC_HAVE_MOVE_PAGES */ + void hwloc_set_linuxfs_hooks(struct hwloc_binding_hooks *hooks, struct hwloc_topology_support *support __hwloc_attribute_unused) @@ -1526,6 +1578,9 @@ hwloc_set_linuxfs_hooks(struct hwloc_binding_hooks *hooks, #endif /* HWLOC_HAVE_SET_MEMPOLICY */ #ifdef HWLOC_HAVE_MBIND hooks->set_area_membind = hwloc_linux_set_area_membind; +#ifdef HWLOC_HAVE_MOVE_PAGES + hooks->get_area_memlocation = hwloc_linux_get_area_memlocation; +#endif /* HWLOC_HAVE_MOVE_PAGES */ hooks->alloc_membind = hwloc_linux_alloc_membind; hooks->alloc = hwloc_alloc_mmap; hooks->free_membind = hwloc_free_mmap; @@ -1979,7 +2034,7 @@ hwloc_get_kerrighed_node_meminfo_info(struct hwloc_topology *topology, #ifdef HAVE__SC_LARGE_PAGESIZE memory->page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); #endif - memory->page_types[0].size = hwloc_getpagesize(); + memory->page_types[0].size = data->pagesize; } snprintf(path, sizeof(path), "/proc/nodes/node%lu/meminfo", node); @@ -2032,7 +2087,7 @@ hwloc_get_procfs_meminfo_info(struct hwloc_topology *topology, #ifdef HAVE__SC_LARGE_PAGESIZE memory->page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); #endif - memory->page_types[0].size = hwloc_getpagesize(); /* might be overwritten later by /proc/meminfo or sysfs */ + memory->page_types[0].size = data->pagesize; /* might be overwritten later by /proc/meminfo or sysfs */ } hwloc_parse_meminfo_info(data, "/proc/meminfo", 0 /* no prefix */, @@ -2125,7 +2180,7 @@ hwloc_sysfs_node_meminfo_info(struct hwloc_topology *topology, } } /* update what's remaining as normal pages */ - memory->page_types[0].size = hwloc_getpagesize(); + memory->page_types[0].size = data->pagesize; memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size; } } @@ -2627,7 +2682,7 @@ look_powerpc_device_tree(struct hwloc_topology *topology, return; /* only works for Power so far, and not useful on ARM */ - if (strncmp(data->utsname.machine, "ppc", 3)) + if (data->arch != HWLOC_LINUX_ARCH_POWER) return; cpus.n = 0; @@ -3054,6 +3109,7 @@ look_sysfscpu(struct hwloc_topology *topology, FILE *fd; unsigned caches_added, merge_buggy_core_siblings; hwloc_obj_t packages = NULL; /* temporary list of packages before actual insert in the tree */ + int threadwithcoreid = -1; /* we don't know yet if threads have their own coreids within thread_siblings */ /* fill the cpuset of interesting cpus */ dir = hwloc_opendir(path, data->root_fd); @@ -3108,14 +3164,12 @@ look_sysfscpu(struct hwloc_topology *topology, hwloc_debug_1arg_bitmap("found %d cpu topologies, cpuset %s\n", hwloc_bitmap_weight(cpuset), cpuset); - merge_buggy_core_siblings = (!strcmp(data->utsname.machine, "x86_64")) - || (data->utsname.machine[0] == 'i' && !strcmp(data->utsname.machine+2, "86")); + merge_buggy_core_siblings = (data->arch == HWLOC_LINUX_ARCH_X86); caches_added = 0; hwloc_bitmap_foreach_begin(i, cpuset) { - hwloc_bitmap_t packageset, coreset, bookset, threadset, savedcoreset; + hwloc_bitmap_t packageset, coreset, bookset, threadset; unsigned mypackageid, mycoreid, mybookid; - int threadwithcoreid = 0; /* look at the package */ mypackageid = 0; /* shut-up the compiler */ @@ -3196,36 +3250,32 @@ package_done: sprintf(str, "%s/cpu%d/topology/thread_siblings", path, i); coreset = hwloc_parse_cpumap(str, data->root_fd); - savedcoreset = coreset; /* store it for later work-arounds */ - if (coreset && hwloc_bitmap_weight(coreset) > 1) { + if (coreset) { + if (hwloc_bitmap_weight(coreset) > 1 && threadwithcoreid == -1) { /* check if this is hyper-threading or different coreids */ unsigned siblingid, siblingcoreid; - hwloc_bitmap_t set = hwloc_bitmap_dup(coreset); - hwloc_bitmap_clr(set, i); - siblingid = hwloc_bitmap_first(set); + siblingid = hwloc_bitmap_first(coreset); + if (siblingid == (unsigned) i) + siblingid = hwloc_bitmap_next(coreset, i); siblingcoreid = mycoreid; sprintf(str, "%s/cpu%d/topology/core_id", path, siblingid); hwloc_parse_sysfs_unsigned(str, &siblingcoreid, data->root_fd); threadwithcoreid = (siblingcoreid != mycoreid); - hwloc_bitmap_free(set); - } - - - if (coreset && (hwloc_bitmap_first(coreset) == i || threadwithcoreid)) { + } + if (hwloc_bitmap_first(coreset) == i || threadwithcoreid) { /* regular core */ struct hwloc_obj *core = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, mycoreid); - if (threadwithcoreid) { + if (threadwithcoreid) /* amd multicore compute-unit, create one core per thread */ - core->cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(core->cpuset, i); - } else { - core->cpuset = coreset; - coreset = NULL; /* don't free it */ - } + hwloc_bitmap_only(coreset, i); + core->cpuset = coreset; hwloc_debug_1arg_bitmap("os core %u has cpuset %s\n", mycoreid, core->cpuset); hwloc_insert_object_by_cpuset(topology, core); + coreset = NULL; /* don't free it */ + } + hwloc_bitmap_free(coreset); } /* look at the books */ @@ -3244,6 +3294,7 @@ package_done: hwloc_insert_object_by_cpuset(topology, book); bookset = NULL; /* don't free it */ } + hwloc_bitmap_free(bookset); } { @@ -3348,15 +3399,12 @@ package_done: sprintf(mappath, "%s/cpu%d/cache/index%d/shared_cpu_map", path, i, j); cacheset = hwloc_parse_cpumap(mappath, data->root_fd); if (cacheset) { - if (hwloc_bitmap_weight(cacheset) < 1) { - /* mask is wrong (useful for many itaniums) */ - if (savedcoreset) - /* assume it's a core-specific cache */ - hwloc_bitmap_copy(cacheset, savedcoreset); - else - /* assumes it's not shared */ - hwloc_bitmap_only(cacheset, i); - } + if (hwloc_bitmap_iszero(cacheset)) { + /* ia64 returning empty L3 and L2i? use the core set instead */ + hwloc_bitmap_free(cacheset); + sprintf(mappath, "%s/cpu%d/topology/thread_siblings", path, i); + cacheset = hwloc_parse_cpumap(mappath, data->root_fd); + } if (hwloc_bitmap_first(cacheset) == i) { /* first cpu in this cache, add the cache */ @@ -3381,7 +3429,6 @@ package_done: } hwloc_bitmap_free(cacheset); } - hwloc_bitmap_free(coreset); } hwloc_bitmap_foreach_end(); @@ -3653,25 +3700,23 @@ hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data, getprocnb_end() else { /* architecture specific or default routine for parsing cpumodel */ - if (!parse_cpuinfo_func) { + switch (data->arch) { + case HWLOC_LINUX_ARCH_X86: + parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_x86; + break; + case HWLOC_LINUX_ARCH_ARM: + parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_arm; + break; + case HWLOC_LINUX_ARCH_POWER: + parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_ppc; + break; + case HWLOC_LINUX_ARCH_IA64: + parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_ia64; + break; + default: parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_generic; - if (*data->utsname.machine) { - /* x86_32 x86_64 k1om => x86 */ - if (!strcmp(data->utsname.machine, "x86_64") - || (data->utsname.machine[0] == 'i' && !strcmp(data->utsname.machine+2, "86")) - || !strcmp(data->utsname.machine, "k1om")) - parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_x86; - /* ia64 */ - else if (!strcmp(data->utsname.machine, "ia64")) - parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_ia64; - /* arm */ - else if (!strncmp(data->utsname.machine, "arm", 3)) - parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_arm; - else if (!strncmp(data->utsname.machine, "ppc", 3) - || !strncmp(data->utsname.machine, "power", 5)) - parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_ppc; - } } + /* we can't assume that we already got a processor index line: * alpha/frv/h8300/m68k/microblaze/sparc have no processor lines at all, only a global entry. * tile has a global section with model name before the list of processor lines. @@ -3886,17 +3931,6 @@ hwloc__linux_get_mic_sn(struct hwloc_topology *topology, struct hwloc_linux_back fclose(file); } -static void -hwloc_linux_fallback_pu_level(struct hwloc_topology *topology) -{ - if (topology->is_thissystem) - hwloc_setup_pu_level(topology, hwloc_fallback_nbprocessors(topology)); - else - /* fsys-root but not this system, no way, assume there's just 1 - * processor :/ */ - hwloc_setup_pu_level(topology, 1); -} - static void hwloc_gather_system_info(struct hwloc_topology *topology, struct hwloc_linux_backend_data_s *data) @@ -3905,12 +3939,17 @@ hwloc_gather_system_info(struct hwloc_topology *topology, char line[128]; /* enough for utsname fields */ const char *env; - /* initialize to something sane */ + /* initialize to something sane, in case !is_thissystem and we can't find things in /proc/hwloc-nofile-info */ memset(&data->utsname, 0, sizeof(data->utsname)); + data->fallback_nbprocessors = 1; + data->pagesize = 4096; /* read thissystem info */ - if (topology->is_thissystem) + if (topology->is_thissystem) { uname(&data->utsname); + data->fallback_nbprocessors = hwloc_fallback_nbprocessors(topology); + data->pagesize = hwloc_getpagesize(); + } /* overwrite with optional /proc/hwloc-nofile-info */ file = hwloc_fopen("/proc/hwloc-nofile-info", "r", data->root_fd); @@ -3942,6 +3981,14 @@ hwloc_gather_system_info(struct hwloc_topology *topology, *tmp = '\0'; strncpy(data->utsname.machine, line+14, sizeof(data->utsname.machine)); data->utsname.machine[sizeof(data->utsname.machine)-1] = '\0'; + } else if (!strncmp("FallbackNbProcessors: ", line, 22)) { + if (tmp) + *tmp = '\0'; + data->fallback_nbprocessors = atoi(line+22); + } else if (!strncmp("PageSize: ", line, 10)) { + if (tmp) + *tmp = '\0'; + data->pagesize = strtoull(line+10, NULL, 10); } else { hwloc_debug("ignored /proc/hwloc-nofile-info line %s\n", line); /* ignored */ @@ -3964,9 +4011,30 @@ hwloc_gather_system_info(struct hwloc_topology *topology, fprintf(file, "HostName: %s\n", data->utsname.nodename); if (*data->utsname.machine) fprintf(file, "Architecture: %s\n", data->utsname.machine); + fprintf(file, "FallbackNbProcessors: %u\n", data->fallback_nbprocessors); + fprintf(file, "PageSize: %llu\n", (unsigned long long) data->pagesize); fclose(file); } } + + /* detect arch for quirks, using configure #defines if possible, or uname */ +#if (defined HWLOC_X86_32_ARCH) || (defined HWLOC_X86_64_ARCH) /* does not cover KNC */ + if (topology->is_thissystem) + data->arch = HWLOC_LINUX_ARCH_X86; +#endif + if (data->arch == HWLOC_LINUX_ARCH_UNKNOWN && *data->utsname.machine) { + if (!strcmp(data->utsname.machine, "x86_64") + || (data->utsname.machine[0] == 'i' && !strcmp(data->utsname.machine+2, "86")) + || !strcmp(data->utsname.machine, "k1om")) + data->arch = HWLOC_LINUX_ARCH_X86; + else if (!strncmp(data->utsname.machine, "arm", 3)) + data->arch = HWLOC_LINUX_ARCH_ARM; + else if (!strncmp(data->utsname.machine, "ppc", 3) + || !strncmp(data->utsname.machine, "power", 5)) + data->arch = HWLOC_LINUX_ARCH_POWER; + else if (!strcmp(data->utsname.machine, "ia64")) + data->arch = HWLOC_LINUX_ARCH_IA64; + } } /* returns 0 on success, -1 on non-match or error during hardwired load */ @@ -4050,10 +4118,10 @@ hwloc_look_linuxfs(struct hwloc_backend *backend) */ numprocs = hwloc_linux_parse_cpuinfo(data, "/proc/cpuinfo", &Lprocs, &global_infos, &global_infos_count); - /* detect models for quirks */ - if (numprocs > 0) { - /* KNL */ - if (!strncmp(data->utsname.machine, "x86", 3)) { /* supports 32bits? */ + /************************** + * detect model for quirks + */ + if (data->arch == HWLOC_LINUX_ARCH_X86 && numprocs > 0) { unsigned i; const char *cpuvendor = NULL, *cpufamilynumber = NULL, *cpumodelnumber = NULL; for(i=0; iis_knl = 1; - } } /********************** @@ -4189,7 +4256,7 @@ hwloc_look_linuxfs(struct hwloc_backend *backend) else err = -1; if (err < 0) - hwloc_linux_fallback_pu_level(topology); + hwloc_setup_pu_level(topology, data->fallback_nbprocessors); look_powerpc_device_tree(topology, data); } else { @@ -4197,7 +4264,7 @@ hwloc_look_linuxfs(struct hwloc_backend *backend) if (look_sysfscpu(topology, data, "/sys/bus/cpu/devices", Lprocs, numprocs) < 0) if (look_sysfscpu(topology, data, "/sys/devices/system/cpu", Lprocs, numprocs) < 0) /* sysfs but we failed to read cpu topology, fallback */ - hwloc_linux_fallback_pu_level(topology); + hwloc_setup_pu_level(topology, data->fallback_nbprocessors); } done: @@ -5142,6 +5209,7 @@ hwloc_linux_component_instantiate(struct hwloc_disc_component *component, backend->disable = hwloc_linux_backend_disable; /* default values */ + data->arch = HWLOC_LINUX_ARCH_UNKNOWN; data->is_knl = 0; data->is_real_fsroot = 1; data->root_path = NULL; @@ -5186,7 +5254,7 @@ hwloc_linux_component_instantiate(struct hwloc_disc_component *component, data->dumped_hwdata_dirname = getenv("HWLOC_DUMPED_HWDATA_DIR"); if (!data->dumped_hwdata_dirname) - data->dumped_hwdata_dirname = "/var/run/hwloc/"; + data->dumped_hwdata_dirname = RUNSTATEDIR "/hwloc/"; data->deprecated_classlinks_model = -2; /* never tried */ data->mic_need_directlookup = -1; /* not initialized */ diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-netbsd.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-netbsd.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-netbsd.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-netbsd.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-noos.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-noos.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-noos.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-noos.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-nvml.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-nvml.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-nvml.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-nvml.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-opencl.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-opencl.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-opencl.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-opencl.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-osf.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-osf.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-osf.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-osf.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-pci.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-pci.c similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-pci.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-pci.c index 779bf17ba8..d7028e9076 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-pci.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-pci.c @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2011, 2013 Université Bordeaux * Copyright © 2014 Cisco Systems, Inc. All rights reserved. * Copyright © 2015 Research Organization for Information Science @@ -22,7 +22,6 @@ #include #include #include -#include #ifdef HWLOC_LINUX_SYS #include #endif diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-solaris-chiptype.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-solaris-chiptype.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-solaris-chiptype.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-solaris-chiptype.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-solaris.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-solaris.c similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-solaris.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-solaris.c index 255c5fca4d..06a4115e5a 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-solaris.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-solaris.c @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2014 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2011 Université Bordeaux * Copyright © 2011 Cisco Systems, Inc. All rights reserved. * Copyright © 2011 Oracle and/or its affiliates. All rights reserved. @@ -280,7 +280,7 @@ hwloc_solaris_get_sth_membind(hwloc_topology_t topology, idtype_t idtype, id_t i if (hwloc_bitmap_iszero(nodeset)) hwloc_bitmap_copy(nodeset, hwloc_topology_get_complete_nodeset(topology)); - *policy = HWLOC_MEMBIND_DEFAULT; + *policy = HWLOC_MEMBIND_BIND; return 0; } @@ -426,11 +426,11 @@ hwloc_look_lgrp(struct hwloc_topology *topology) } nlgrps = lgrp_nlgrps(cookie); root = lgrp_root(cookie); - { + if (nlgrps > 0) { hwloc_obj_t *glob_lgrps = calloc(nlgrps, sizeof(hwloc_obj_t)); browse(topology, cookie, root, glob_lgrps, &curlgrp); #ifdef HAVE_LGRP_LATENCY_COOKIE - { + if (nlgrps > 1) { float *distances = calloc(curlgrp*curlgrp, sizeof(float)); unsigned *indexes = calloc(curlgrp,sizeof(unsigned)); unsigned i, j; diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-synthetic.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-synthetic.c similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-synthetic.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-synthetic.c diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-windows.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-windows.c similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-windows.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-windows.c index 83b5492156..bace45b230 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-windows.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-windows.c @@ -229,8 +229,6 @@ static PFN_QUERYWORKINGSETEX QueryWorkingSetExProc; static void hwloc_win_get_function_ptrs(void) { - static int done = 0; - if (!done) { HMODULE kernel32; kernel32 = LoadLibrary("kernel32.dll"); @@ -271,9 +269,6 @@ static void hwloc_win_get_function_ptrs(void) if (psapi) VirtualAllocExNumaProc = (PFN_VIRTUALALLOCEXNUMA) GetProcAddress(psapi, "QueryWorkingSetEx"); } - - done = 1; - } } /* @@ -737,8 +732,6 @@ hwloc_look_windows(struct hwloc_backend *backend) SYSTEM_INFO SystemInfo; DWORD length; - hwloc_win_get_function_ptrs(); - if (topology->levels[0][0]->cpuset) /* somebody discovered things */ return 0; @@ -1035,8 +1028,6 @@ void hwloc_set_windows_hooks(struct hwloc_binding_hooks *hooks, struct hwloc_topology_support *support) { - hwloc_win_get_function_ptrs(); - if (GetCurrentProcessorNumberExProc || (GetCurrentProcessorNumberProc && nr_processor_groups == 1)) hooks->get_thisthread_last_cpu_location = hwloc_win_get_thisthread_last_cpu_location; @@ -1072,6 +1063,16 @@ hwloc_set_windows_hooks(struct hwloc_binding_hooks *hooks, hooks->get_area_membind = hwloc_win_get_area_membind; } +static int hwloc_windows_component_init(unsigned long flags __hwloc_attribute_unused) +{ + hwloc_win_get_function_ptrs(); + return 0; +} + +static void hwloc_windows_component_finalize(unsigned long flags __hwloc_attribute_unused) +{ +} + static struct hwloc_backend * hwloc_windows_component_instantiate(struct hwloc_disc_component *component, const void *_data1 __hwloc_attribute_unused, @@ -1097,7 +1098,7 @@ static struct hwloc_disc_component hwloc_windows_disc_component = { const struct hwloc_component hwloc_windows_component = { HWLOC_COMPONENT_ABI, - NULL, NULL, + hwloc_windows_component_init, hwloc_windows_component_finalize, HWLOC_COMPONENT_TYPE_DISC, 0, &hwloc_windows_disc_component @@ -1112,8 +1113,6 @@ hwloc_fallback_nbprocessors(struct hwloc_topology *topology) { GetSystemInfo(&sysinfo); n = sysinfo.dwNumberOfProcessors; /* FIXME could be non-contigous, rather return a mask from dwActiveProcessorMask? */ - hwloc_win_get_function_ptrs(); - if (nr_processor_groups > 1) { /* assume n-1 groups are complete, since that's how we store things in cpusets */ if (GetActiveProcessorCountProc) diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-x86.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-x86.c similarity index 91% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-x86.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-x86.c index ab6de7c934..72f96115d5 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-x86.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-x86.c @@ -1,5 +1,5 @@ /* - * Copyright © 2010-2015 Inria. All rights reserved. + * Copyright © 2010-2016 Inria. All rights reserved. * Copyright © 2010-2013 Université Bordeaux * Copyright © 2010-2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -22,6 +22,10 @@ #include +#ifdef HAVE_VALGRIND_VALGRIND_H +#include +#endif + struct hwloc_x86_backend_data_s { unsigned nbprocs; hwloc_bitmap_t apicid_set; @@ -399,7 +403,7 @@ static void look_proc(struct hwloc_backend *backend, struct procinfo *infos, uns /* Get package/core/thread information from cpuid 0x0b * (Intel x2APIC) */ - if (cpuid_type == intel && has_x2apic(features)) { + if (cpuid_type == intel && highest_cpuid >= 0x0b && has_x2apic(features)) { unsigned level, apic_nextshift, apic_number, apic_type, apic_id = 0, apic_shift = 0, id; for (level = 0; ; level++) { ecx = level; @@ -514,7 +518,7 @@ hwloc_x86_add_cpuinfos(hwloc_obj_t obj, struct procinfo *info, int nodup) } /* Analyse information stored in infos, and build/annotate topology levels accordingly */ -static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int fulldiscovery) +static int summarize(struct hwloc_backend *backend, struct procinfo *infos, int fulldiscovery) { struct hwloc_topology *topology = backend->topology; struct hwloc_x86_backend_data_s *data = backend->private_data; @@ -524,6 +528,8 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int unsigned nbpackages = 0; int one = -1; unsigned next_group_depth = topology->next_group_depth; + int caches_added = 0; + hwloc_bitmap_t remaining_cpuset; for (i = 0; i < nbprocs; i++) if (infos[i].present) { @@ -533,9 +539,11 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int if (one == -1) { hwloc_bitmap_free(complete_cpuset); - return; + return 0; } + remaining_cpuset = hwloc_bitmap_alloc(); + /* Ideally, when fulldiscovery=0, we could add any object that doesn't exist yet. * But what if the x86 and the native backends disagree because one is buggy? Which one to trust? * Only annotate existing objects for now. @@ -543,18 +551,18 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int /* Look for packages */ if (fulldiscovery) { - hwloc_bitmap_t packages_cpuset = hwloc_bitmap_dup(complete_cpuset); hwloc_bitmap_t package_cpuset; hwloc_obj_t package; - while ((i = hwloc_bitmap_first(packages_cpuset)) != (unsigned) -1) { + hwloc_bitmap_copy(remaining_cpuset, complete_cpuset); + while ((i = hwloc_bitmap_first(remaining_cpuset)) != (unsigned) -1) { unsigned packageid = infos[i].packageid; package_cpuset = hwloc_bitmap_alloc(); for (j = i; j < nbprocs; j++) { if (infos[j].packageid == packageid) { hwloc_bitmap_set(package_cpuset, j); - hwloc_bitmap_clr(packages_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); } } package = hwloc_alloc_setup_object(HWLOC_OBJ_PACKAGE, packageid); @@ -567,7 +575,6 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int hwloc_insert_object_by_cpuset(topology, package); nbpackages++; } - hwloc_bitmap_free(packages_cpuset); } else { /* Annotate packages previously-existing packages */ @@ -613,29 +620,29 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int /* Look for Numa nodes inside packages */ if (fulldiscovery) { - hwloc_bitmap_t nodes_cpuset = hwloc_bitmap_dup(complete_cpuset); hwloc_bitmap_t node_cpuset; hwloc_obj_t node; - while ((i = hwloc_bitmap_first(nodes_cpuset)) != (unsigned) -1) { + hwloc_bitmap_copy(remaining_cpuset, complete_cpuset); + while ((i = hwloc_bitmap_first(remaining_cpuset)) != (unsigned) -1) { unsigned packageid = infos[i].packageid; unsigned nodeid = infos[i].nodeid; if (nodeid == (unsigned)-1) { - hwloc_bitmap_clr(nodes_cpuset, i); + hwloc_bitmap_clr(remaining_cpuset, i); continue; } node_cpuset = hwloc_bitmap_alloc(); for (j = i; j < nbprocs; j++) { if (infos[j].nodeid == (unsigned) -1) { - hwloc_bitmap_clr(nodes_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); continue; } if (infos[j].packageid == packageid && infos[j].nodeid == nodeid) { hwloc_bitmap_set(node_cpuset, j); - hwloc_bitmap_clr(nodes_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); } } node = hwloc_alloc_setup_object(HWLOC_OBJ_NUMANODE, nodeid); @@ -646,34 +653,33 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int nodeid, node_cpuset); hwloc_insert_object_by_cpuset(topology, node); } - hwloc_bitmap_free(nodes_cpuset); } /* Look for Compute units inside packages */ if (fulldiscovery) { - hwloc_bitmap_t units_cpuset = hwloc_bitmap_dup(complete_cpuset); hwloc_bitmap_t unit_cpuset; hwloc_obj_t unit; - while ((i = hwloc_bitmap_first(units_cpuset)) != (unsigned) -1) { + hwloc_bitmap_copy(remaining_cpuset, complete_cpuset); + while ((i = hwloc_bitmap_first(remaining_cpuset)) != (unsigned) -1) { unsigned packageid = infos[i].packageid; unsigned unitid = infos[i].unitid; if (unitid == (unsigned)-1) { - hwloc_bitmap_clr(units_cpuset, i); + hwloc_bitmap_clr(remaining_cpuset, i); continue; } unit_cpuset = hwloc_bitmap_alloc(); for (j = i; j < nbprocs; j++) { if (infos[j].unitid == (unsigned) -1) { - hwloc_bitmap_clr(units_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); continue; } if (infos[j].packageid == packageid && infos[j].unitid == unitid) { hwloc_bitmap_set(unit_cpuset, j); - hwloc_bitmap_clr(units_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); } } unit = hwloc_alloc_setup_object(HWLOC_OBJ_GROUP, unitid); @@ -683,25 +689,24 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int unitid, unit_cpuset); hwloc_insert_object_by_cpuset(topology, unit); } - hwloc_bitmap_free(units_cpuset); } /* Look for unknown objects */ if (infos[one].otherids) { for (level = infos[one].levels-1; level <= infos[one].levels-1; level--) { if (infos[one].otherids[level] != UINT_MAX) { - hwloc_bitmap_t unknowns_cpuset = hwloc_bitmap_dup(complete_cpuset); hwloc_bitmap_t unknown_cpuset; hwloc_obj_t unknown_obj; - while ((i = hwloc_bitmap_first(unknowns_cpuset)) != (unsigned) -1) { + hwloc_bitmap_copy(remaining_cpuset, complete_cpuset); + while ((i = hwloc_bitmap_first(remaining_cpuset)) != (unsigned) -1) { unsigned unknownid = infos[i].otherids[level]; unknown_cpuset = hwloc_bitmap_alloc(); for (j = i; j < nbprocs; j++) { if (infos[j].otherids[level] == unknownid) { hwloc_bitmap_set(unknown_cpuset, j); - hwloc_bitmap_clr(unknowns_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); } } unknown_obj = hwloc_alloc_setup_object(HWLOC_OBJ_GROUP, unknownid); @@ -714,36 +719,35 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int level, unknownid, unknown_cpuset); hwloc_insert_object_by_cpuset(topology, unknown_obj); } - hwloc_bitmap_free(unknowns_cpuset); } } } /* Look for cores */ if (fulldiscovery) { - hwloc_bitmap_t cores_cpuset = hwloc_bitmap_dup(complete_cpuset); hwloc_bitmap_t core_cpuset; hwloc_obj_t core; - while ((i = hwloc_bitmap_first(cores_cpuset)) != (unsigned) -1) { + hwloc_bitmap_copy(remaining_cpuset, complete_cpuset); + while ((i = hwloc_bitmap_first(remaining_cpuset)) != (unsigned) -1) { unsigned packageid = infos[i].packageid; unsigned coreid = infos[i].coreid; if (coreid == (unsigned) -1) { - hwloc_bitmap_clr(cores_cpuset, i); + hwloc_bitmap_clr(remaining_cpuset, i); continue; } core_cpuset = hwloc_bitmap_alloc(); for (j = i; j < nbprocs; j++) { if (infos[j].coreid == (unsigned) -1) { - hwloc_bitmap_clr(cores_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); continue; } if (infos[j].packageid == packageid && infos[j].coreid == coreid) { hwloc_bitmap_set(core_cpuset, j); - hwloc_bitmap_clr(cores_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); } } core = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, coreid); @@ -752,7 +756,6 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int coreid, core_cpuset); hwloc_insert_object_by_cpuset(topology, core); } - hwloc_bitmap_free(cores_cpuset); } /* Look for PUs */ @@ -780,10 +783,12 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int for (type = 1; type <= 3; type++) { /* Look for caches of that type at level level */ { - hwloc_bitmap_t caches_cpuset = hwloc_bitmap_dup(complete_cpuset); hwloc_obj_t cache; - while ((i = hwloc_bitmap_first(caches_cpuset)) != (unsigned) -1) { + hwloc_bitmap_copy(remaining_cpuset, complete_cpuset); + while ((i = hwloc_bitmap_first(remaining_cpuset)) != (unsigned) -1) { + hwloc_bitmap_t puset; + int depth; for (l = 0; l < infos[i].numcaches; l++) { if (infos[i].cache[l].level == level && infos[i].cache[l].type == type) @@ -791,17 +796,31 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int } if (l == infos[i].numcaches) { /* no cache Llevel of that type in i */ - hwloc_bitmap_clr(caches_cpuset, i); + hwloc_bitmap_clr(remaining_cpuset, i); continue; } - if (fulldiscovery) { - /* Add caches */ + puset = hwloc_bitmap_alloc(); + hwloc_bitmap_set(puset, i); + depth = hwloc_get_cache_type_depth(topology, level, + type == 1 ? HWLOC_OBJ_CACHE_DATA : type == 2 ? HWLOC_OBJ_CACHE_INSTRUCTION : HWLOC_OBJ_CACHE_UNIFIED); + if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) + cache = hwloc_get_next_obj_covering_cpuset_by_depth(topology, puset, depth, NULL); + else + cache = NULL; + hwloc_bitmap_free(puset); + + if (cache) { + /* Found cache above that PU, annotate if no such attribute yet */ + if (!hwloc_obj_get_info_by_name(cache, "Inclusive")) + hwloc_obj_add_info(cache, "Inclusive", infos[i].cache[l].inclusive ? "1" : "0"); + hwloc_bitmap_andnot(remaining_cpuset, remaining_cpuset, cache->cpuset); + } else { + /* Add the missing cache */ hwloc_bitmap_t cache_cpuset; unsigned packageid = infos[i].packageid; unsigned cacheid = infos[i].cache[l].cacheid; - /* Found a matching cache, now look for others sharing it */ - + /* Now look for others sharing it */ cache_cpuset = hwloc_bitmap_alloc(); for (j = i; j < nbprocs; j++) { unsigned l2; @@ -811,12 +830,12 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int } if (l2 == infos[j].numcaches) { /* no cache Llevel of that type in j */ - hwloc_bitmap_clr(caches_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); continue; } if (infos[j].packageid == packageid && infos[j].cache[l2].cacheid == cacheid) { hwloc_bitmap_set(cache_cpuset, j); - hwloc_bitmap_clr(caches_cpuset, j); + hwloc_bitmap_clr(remaining_cpuset, j); } } cache = hwloc_alloc_setup_object(HWLOC_OBJ_CACHE, cacheid); @@ -840,43 +859,19 @@ static void summarize(struct hwloc_backend *backend, struct procinfo *infos, int hwloc_debug_2args_bitmap("os L%u cache %u has cpuset %s\n", level, cacheid, cache_cpuset); hwloc_insert_object_by_cpuset(topology, cache); - - } else { - /* Annotate existing caches */ - hwloc_bitmap_t set = hwloc_bitmap_alloc(); - hwloc_obj_t cache = NULL; - int depth; - hwloc_bitmap_set(set, i); - depth = hwloc_get_cache_type_depth(topology, level, - type == 1 ? HWLOC_OBJ_CACHE_DATA : type == 2 ? HWLOC_OBJ_CACHE_INSTRUCTION : HWLOC_OBJ_CACHE_UNIFIED); - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) - cache = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, depth, NULL); - hwloc_bitmap_free(set); - if (cache) { - /* Found cache above that PU, annotate if no such attribute yet */ - if (!hwloc_obj_get_info_by_name(cache, "Inclusive")) - hwloc_obj_add_info(cache, "Inclusive", infos[i].cache[l].inclusive ? "1" : "0"); - hwloc_bitmap_andnot(caches_cpuset, caches_cpuset, cache->cpuset); - } else { - /* No cache above that PU?! */ - hwloc_bitmap_clr(caches_cpuset, i); - } + caches_added++; } } - hwloc_bitmap_free(caches_cpuset); } } level--; } - for (i = 0; i < nbprocs; i++) { - free(infos[i].cache); - if (infos[i].otherids) - free(infos[i].otherids); - } - + hwloc_bitmap_free(remaining_cpuset); hwloc_bitmap_free(complete_cpuset); topology->next_group_depth = next_group_depth; + + return fulldiscovery || caches_added; } static int @@ -891,6 +886,7 @@ look_procs(struct hwloc_backend *backend, struct procinfo *infos, int fulldiscov hwloc_bitmap_t orig_cpuset = hwloc_bitmap_alloc(); hwloc_bitmap_t set; unsigned i; + int ret = 0; if (get_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) { hwloc_bitmap_free(orig_cpuset); @@ -915,8 +911,9 @@ look_procs(struct hwloc_backend *backend, struct procinfo *infos, int fulldiscov if (!data->apicid_unique) fulldiscovery = 0; - summarize(backend, infos, fulldiscovery); - return fulldiscovery; /* success, but objects added only if fulldiscovery */ + else + ret = summarize(backend, infos, fulldiscovery); + return ret; } #if defined HWLOC_FREEBSD_SYS && defined HAVE_CPUSET_SETID @@ -988,12 +985,12 @@ int hwloc_look_x86(struct hwloc_backend *backend, int fulldiscovery) memset(&hooks, 0, sizeof(hooks)); support.membind = &memsupport; hwloc_set_native_binding_hooks(&hooks, &support); - if (hooks.get_thisproc_cpubind && hooks.set_thisproc_cpubind) { - get_cpubind = hooks.get_thisproc_cpubind; - set_cpubind = hooks.set_thisproc_cpubind; - } else if (hooks.get_thisthread_cpubind && hooks.set_thisthread_cpubind) { + if (hooks.get_thisthread_cpubind && hooks.set_thisthread_cpubind) { get_cpubind = hooks.get_thisthread_cpubind; set_cpubind = hooks.set_thisthread_cpubind; + } else if (hooks.get_thisproc_cpubind && hooks.set_thisproc_cpubind) { + get_cpubind = hooks.get_thisproc_cpubind; + set_cpubind = hooks.set_thisproc_cpubind; } else { /* we need binding support if there are multiple PUs */ if (nbprocs > 1) @@ -1066,8 +1063,7 @@ int hwloc_look_x86(struct hwloc_backend *backend, int fulldiscovery) if (nbprocs == 1) { /* only one processor, no need to bind */ look_proc(backend, &infos[0], highest_cpuid, highest_ext_cpuid, features, cpuid_type); - summarize(backend, infos, fulldiscovery); - ret = fulldiscovery; + ret = summarize(backend, infos, fulldiscovery); } out_with_os_state: @@ -1075,7 +1071,12 @@ out_with_os_state: out_with_infos: if (NULL != infos) { - free(infos); + for (i = 0; i < nbprocs; i++) { + free(infos[i].cache); + if (infos[i].otherids) + free(infos[i].otherids); + } + free(infos); } out: @@ -1090,6 +1091,13 @@ hwloc_x86_discover(struct hwloc_backend *backend) int alreadypus = 0; int ret; +#if HAVE_DECL_RUNNING_ON_VALGRIND + if (RUNNING_ON_VALGRIND) { + fprintf(stderr, "hwloc x86 backend cannot work under Valgrind, disabling.\n"); + return 0; + } +#endif + data->nbprocs = hwloc_fallback_nbprocessors(topology); if (!topology->is_thissystem) { @@ -1105,11 +1113,11 @@ hwloc_x86_discover(struct hwloc_backend *backend) goto fulldiscovery; } - /* several object types were added, we can't easily complete, just annotate a bit */ + /* several object types were added, we can't easily complete, just do partial discovery */ ret = hwloc_look_x86(backend, 0); if (ret) hwloc_obj_add_info(topology->levels[0][0], "Backend", "x86"); - return 0; + return ret; } else { /* topology is empty, initialize it */ hwloc_alloc_obj_cpusets(topology->levels[0][0]); diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-xml-libxml.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-xml-libxml.c similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-xml-libxml.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-xml-libxml.c index 46fe4aec29..88f3efd602 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-xml-libxml.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-xml-libxml.c @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2014 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2011 Université Bordeaux * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -13,6 +13,7 @@ /* private headers allowed because this plugin is built within hwloc */ #include #include +#include #include #include diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-xml-nolibxml.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-xml-nolibxml.c similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-xml-nolibxml.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-xml-nolibxml.c index ba522087fe..60d63d601a 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-xml-nolibxml.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-xml-nolibxml.c @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2011 Université Bordeaux * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -240,7 +241,8 @@ hwloc__nolibxml_import_close_content(hwloc__xml_import_state_t state) { /* put back the '<' that we overwrote to 0-terminate the content */ hwloc__nolibxml_import_state_data_t nstate = (void*) state->data; - *nstate->tagbuffer = '<'; + if (!nstate->closed) + *nstate->tagbuffer = '<'; } static int diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-xml.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-xml.c similarity index 91% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology-xml.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology-xml.c index 52b7ddc46b..220afd1a45 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology-xml.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology-xml.c @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2011 Université Bordeaux * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -55,6 +55,8 @@ hwloc_nolibxml_export(void) return nolibxml; } +#define BASE64_ENCODED_LENGTH(length) (4*(((length)+2)/3)) + /********************************* ********* XML callbacks ********* *********************************/ @@ -323,7 +325,22 @@ hwloc__xml_import_object_attr(struct hwloc_topology *topology __hwloc_attribute_ } } - + /************************** + * forward compat with 2.0 + */ + else if (!strcmp(name, "kind") || !strcmp(name, "subkind")) { + if (obj->type == HWLOC_OBJ_GROUP) { + /* ignored, unused in <2.0 */ + } else { + if (hwloc__xml_verbose()) + fprintf(stderr, "%s: ignoring %s attribute for non-group object\n", + state->global->msgprefix, name); + } + } + else if (!strcmp(name, "subtype")) { + /* FIXME: should be "CoProcType" for osdev/coproc but we don't have that type-specific attribute yet */ + hwloc_obj_add_info(obj, "Type", value); + } /************************* @@ -491,11 +508,21 @@ hwloc__xml_import_distances(struct hwloc_xml_backend_data_s *data, float *matrix, latmax = 0; struct hwloc_xml_imported_distances_s *distances; + matrix = malloc(nbobjs*nbobjs*sizeof(float)); distances = malloc(sizeof(*distances)); + if (!matrix || !distances) { + if (hwloc__xml_verbose()) + fprintf(stderr, "%s: failed to allocate distance matrix for %lu objects\n", + state->global->msgprefix, nbobjs); + free(distances); + free(matrix); + return -1; + } + distances->root = obj; distances->distances.relative_depth = reldepth; distances->distances.nbobjs = nbobjs; - distances->distances.latency = matrix = malloc(nbobjs*nbobjs*sizeof(float)); + distances->distances.latency = matrix; distances->distances.latency_base = latbase; for(i=0; idistances.latency_max = latmax; - if (data->last_distances) - data->last_distances->next = distances; - else - data->first_distances = distances; - distances->prev = data->last_distances; - distances->next = NULL; + if (nbobjs < 2) { + /* distances with a single object are useless, even if the XML isn't invalid */ + assert(nbobjs == 1); + if (hwloc__xml_verbose()) + fprintf(stderr, "%s: ignoring invalid distance matrix with only 1 object\n", + state->global->msgprefix); + free(matrix); + free(distances); + } else { + /* queue the distance */ + if (data->last_distances) + data->last_distances->next = distances; + else + data->first_distances = distances; + distances->prev = data->last_distances; + distances->next = NULL; + } } return state->global->close_tag(state); @@ -550,6 +588,7 @@ hwloc__xml_import_userdata(hwloc_topology_t topology __hwloc_attribute_unused, h size_t length = 0; int encoded = 0; char *name = NULL; /* optional */ + int ret; while (1) { char *attrname, *attrvalue; @@ -565,12 +604,29 @@ hwloc__xml_import_userdata(hwloc_topology_t topology __hwloc_attribute_unused, h return -1; } - if (length && topology->userdata_import_cb) { - int ret; + if (!topology->userdata_import_cb) { + char *buffer; + size_t reallength = encoded ? BASE64_ENCODED_LENGTH(length) : length; + ret = state->global->get_content(state, &buffer, reallength); + if (ret < 0) + return -1; - if (encoded) { + } else if (topology->userdata_not_decoded) { + char *buffer, *fakename; + size_t reallength = encoded ? BASE64_ENCODED_LENGTH(length) : length; + ret = state->global->get_content(state, &buffer, reallength); + if (ret < 0) + return -1; + fakename = malloc(6 + 1 + (name ? strlen(name) : 4) + 1); + if (!fakename) + return -1; + sprintf(fakename, encoded ? "base64%c%s" : "normal%c%s", name ? ':' : '-', name ? name : "anon"); + topology->userdata_import_cb(topology, obj, fakename, buffer, length); + free(fakename); + + } else if (encoded && length) { char *encoded_buffer; - size_t encoded_length = 4*((length+2)/3); + size_t encoded_length = BASE64_ENCODED_LENGTH(length); ret = state->global->get_content(state, &encoded_buffer, encoded_length); if (ret < 0) return -1; @@ -580,20 +636,25 @@ hwloc__xml_import_userdata(hwloc_topology_t topology __hwloc_attribute_unused, h return -1; assert(encoded_buffer[encoded_length] == 0); ret = hwloc_decode_from_base64(encoded_buffer, decoded_buffer, length+1); - if (ret != (int) length) + if (ret != (int) length) { + free(decoded_buffer); return -1; + } topology->userdata_import_cb(topology, obj, name, decoded_buffer, length); free(decoded_buffer); } - } else { - char *buffer; - ret = state->global->get_content(state, &buffer, length); - if (ret < 0) - return -1; + + } else { /* always handle length==0 in the non-encoded case */ + char *buffer = ""; + if (length) { + ret = state->global->get_content(state, &buffer, length); + if (ret < 0) + return -1; + } topology->userdata_import_cb(topology, obj, name, buffer, length); - } - state->global->close_content(state); } + + state->global->close_content(state); return state->global->close_tag(state); } @@ -612,11 +673,11 @@ hwloc__xml_import_object(hwloc_topology_t topology, break; if (!strcmp(attrname, "type")) { if (hwloc_obj_type_sscanf(attrvalue, &obj->type, NULL, NULL, 0) < 0) - goto error; + goto error_with_object; } else { /* type needed first */ if (obj->type == (hwloc_obj_type_t)-1) - goto error; + goto error_with_object; hwloc__xml_import_object_attr(topology, obj, attrname, attrvalue, state); } } @@ -714,8 +775,9 @@ hwloc__xml_import_object(hwloc_topology_t topology, return state->global->close_tag(state); - error: + error_with_object: hwloc_free_unlinked_object(obj); + error: return -1; } @@ -869,25 +931,38 @@ hwloc__xml_import_diff(hwloc__xml_import_state_t state, ********* main XML import ********* ***********************************/ +static void +hwloc_xml__free_distances(struct hwloc_xml_backend_data_s *data) +{ + struct hwloc_xml_imported_distances_s *xmldist; + while ((xmldist = data->first_distances) != NULL) { + data->first_distances = xmldist->next; + free(xmldist->distances.latency); + free(xmldist); + } +} + static int hwloc_xml__handle_distances(struct hwloc_topology *topology, struct hwloc_xml_backend_data_s *data, const char *msgprefix) { - struct hwloc_xml_imported_distances_s *xmldist, *next = data->first_distances; - - if (!next) - return 0; + struct hwloc_xml_imported_distances_s *xmldist; /* connect things now because we need levels to check/build, they'll be reconnected properly later anyway */ hwloc_connect_children(topology->levels[0][0]); - if (hwloc_connect_levels(topology) < 0) + if (hwloc_connect_levels(topology) < 0) { + hwloc_xml__free_distances(data); return -1; + } - while ((xmldist = next) != NULL) { + while ((xmldist = data->first_distances) != NULL) { hwloc_obj_t root = xmldist->root; unsigned depth = root->depth + xmldist->distances.relative_depth; unsigned nbobjs = hwloc_get_nbobjs_inside_cpuset_by_depth(topology, root->cpuset, depth); + + data->first_distances = xmldist->next; + if (nbobjs != xmldist->distances.nbobjs) { /* distances invalid, drop */ if (hwloc__xml_verbose()) @@ -910,7 +985,6 @@ hwloc_xml__handle_distances(struct hwloc_topology *topology, hwloc_distances_set(topology, objs[0]->type, nbobjs, indexes, objs, xmldist->distances.latency, 0 /* XML cannot force */); } - next = xmldist->next; free(xmldist); } @@ -971,6 +1045,7 @@ hwloc_look_xml(struct hwloc_backend *backend) fprintf(stderr, "%s: XML component discovery failed.\n", data->msgprefix); err: + hwloc_xml__free_distances(data); hwloc_localeswitch_fini(); return -1; } @@ -1513,24 +1588,52 @@ hwloc__export_obj_userdata(hwloc__xml_export_state_t parentstate, int encoded, state.new_prop(&state, "length", tmp); if (encoded) state.new_prop(&state, "encoding", "base64"); - state.add_content(&state, buffer, encoded ? encoded_length : length); + if (encoded_length) + state.add_content(&state, buffer, encoded ? encoded_length : length); state.end_object(&state, "userdata"); } int hwloc_export_obj_userdata(void *reserved, - struct hwloc_topology *topology __hwloc_attribute_unused, struct hwloc_obj *obj __hwloc_attribute_unused, + struct hwloc_topology *topology, struct hwloc_obj *obj __hwloc_attribute_unused, const char *name, const void *buffer, size_t length) { hwloc__xml_export_state_t state = reserved; + if (!buffer) { + errno = EINVAL; + return -1; + } + if ((name && hwloc__xml_export_check_buffer(name, strlen(name)) < 0) || hwloc__xml_export_check_buffer(buffer, length) < 0) { errno = EINVAL; return -1; } - hwloc__export_obj_userdata(state, 0, name, length, buffer, length); + if (topology->userdata_not_decoded) { + int encoded; + size_t encoded_length; + const char *realname; + if (!strncmp(name, "normal", 6)) { + encoded = 0; + encoded_length = length; + } else if (!strncmp(name, "base64", 6)) { + encoded = 1; + encoded_length = BASE64_ENCODED_LENGTH(length); + } else + assert(0); + if (name[6] == ':') + realname = name+7; + else if (!strcmp(name+6, "-anon")) + realname = NULL; + else + assert(0); + hwloc__export_obj_userdata(state, encoded, realname, length, buffer, encoded_length); + + } else + hwloc__export_obj_userdata(state, 0, name, length, buffer, length); + return 0; } @@ -1544,12 +1647,19 @@ hwloc_export_obj_userdata_base64(void *reserved, char *encoded_buffer; int ret __hwloc_attribute_unused; + if (!buffer) { + errno = EINVAL; + return -1; + } + + assert(!topology->userdata_not_decoded); + if (name && hwloc__xml_export_check_buffer(name, strlen(name)) < 0) { errno = EINVAL; return -1; } - encoded_length = 4*((length+2)/3); + encoded_length = BASE64_ENCODED_LENGTH(length); encoded_buffer = malloc(encoded_length+1); if (!encoded_buffer) { errno = ENOMEM; diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/topology.c b/opal/mca/hwloc/hwloc1113/hwloc/src/topology.c similarity index 99% rename from opal/mca/hwloc/hwloc1112/hwloc/src/topology.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/topology.c index 028c226bdb..f11beaeb40 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/topology.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/topology.c @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2012 Université Bordeaux * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -28,6 +28,7 @@ #include #include #include +#include #ifdef HAVE_MACH_MACH_INIT_H #include @@ -539,6 +540,7 @@ hwloc_topology_dup(hwloc_topology_t *newp, new->userdata_export_cb = old->userdata_export_cb; new->userdata_import_cb = old->userdata_import_cb; + new->userdata_not_decoded = old->userdata_not_decoded; newroot = hwloc_get_root_obj(new); hwloc__duplicate_object(newroot, oldroot); @@ -592,9 +594,7 @@ hwloc_topology_dup(hwloc_topology_t *newp, return 0; out: - hwloc_topology_clear(new); - hwloc_distances_destroy(new); - hwloc_topology_setup_defaults(new); + hwloc_topology_destroy(new); return -1; } @@ -1941,6 +1941,7 @@ hwloc_drop_useless_io(hwloc_topology_t topology, hwloc_obj_t root) && baseclass != 0x02 /* PCI_BASE_CLASS_NETWORK */ && baseclass != 0x01 /* PCI_BASE_CLASS_STORAGE */ && baseclass != 0x0b /* PCI_BASE_CLASS_PROCESSOR */ + && classid != 0x0c04 /* PCI_CLASS_SERIAL_FIBER */ && classid != 0x0c06 /* PCI_CLASS_SERIAL_INFINIBAND */ && baseclass != 0x12 /* Processing Accelerators */) unlink_and_free_object_and_children(pchild); @@ -2741,6 +2742,7 @@ hwloc_topology_init (struct hwloc_topology **topologyp) topology->userdata_export_cb = NULL; topology->userdata_import_cb = NULL; + topology->userdata_not_decoded = 0; /* Make the topology look like something coherent but empty */ hwloc_topology_setup_defaults(topology); @@ -2939,6 +2941,9 @@ hwloc_topology_load (struct hwloc_topology *topology) return -1; } + if (getenv("HWLOC_XML_USERDATA_NOT_DECODED")) + topology->userdata_not_decoded = 1; + /* enforce backend anyway if a FORCE variable was given */ { const char *fsroot_path_env = getenv("HWLOC_FORCE_FSROOT"); diff --git a/opal/mca/hwloc/hwloc1112/hwloc/src/traversal.c b/opal/mca/hwloc/hwloc1113/hwloc/src/traversal.c similarity index 96% rename from opal/mca/hwloc/hwloc1112/hwloc/src/traversal.c rename to opal/mca/hwloc/hwloc1113/hwloc/src/traversal.c index e28bba1ace..ac10d50178 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc/src/traversal.c +++ b/opal/mca/hwloc/hwloc1113/hwloc/src/traversal.c @@ -1,6 +1,6 @@ /* * Copyright © 2009 CNRS - * Copyright © 2009-2015 Inria. All rights reserved. + * Copyright © 2009-2016 Inria. All rights reserved. * Copyright © 2009-2010 Université Bordeaux * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. * See COPYING in top-level directory. @@ -221,13 +221,17 @@ hwloc_obj_type_sscanf(const char *string, hwloc_obj_type_t *typep, int *depthatt hwloc_obj_cache_type_t cachetypeattr = (hwloc_obj_cache_type_t) -1; /* unspecified */ char *end; + /* never match the ending \0 since we want to match things like core:2 too. + * just use hwloc_strncasecmp() everywhere. + */ + /* types without depthattr */ if (!hwloc_strncasecmp(string, "system", 2)) { type = HWLOC_OBJ_SYSTEM; } else if (!hwloc_strncasecmp(string, "machine", 2)) { type = HWLOC_OBJ_MACHINE; - } else if (!hwloc_strncasecmp(string, "node", 1) - || !hwloc_strncasecmp(string, "numa", 1)) { /* matches node and numanode */ + } else if (!hwloc_strncasecmp(string, "node", 2) + || !hwloc_strncasecmp(string, "numa", 2)) { /* matches node and numanode */ type = HWLOC_OBJ_NUMANODE; } else if (!hwloc_strncasecmp(string, "package", 2) || !hwloc_strncasecmp(string, "socket", 2)) { /* backward compat with v1.10 */ @@ -236,15 +240,22 @@ hwloc_obj_type_sscanf(const char *string, hwloc_obj_type_t *typep, int *depthatt type = HWLOC_OBJ_CORE; } else if (!hwloc_strncasecmp(string, "pu", 2)) { type = HWLOC_OBJ_PU; - } else if (!hwloc_strncasecmp(string, "misc", 2)) { + } else if (!hwloc_strncasecmp(string, "misc", 4)) { type = HWLOC_OBJ_MISC; - } else if (!hwloc_strncasecmp(string, "bridge", 2) + } else if (!hwloc_strncasecmp(string, "bridge", 4) || !hwloc_strncasecmp(string, "hostbridge", 6) || !hwloc_strncasecmp(string, "pcibridge", 5)) { type = HWLOC_OBJ_BRIDGE; - } else if (!hwloc_strncasecmp(string, "pci", 2)) { + } else if (!hwloc_strncasecmp(string, "pci", 3)) { type = HWLOC_OBJ_PCI_DEVICE; - } else if (!hwloc_strncasecmp(string, "os", 2)) { + } else if (!hwloc_strncasecmp(string, "os", 2) + || !hwloc_strncasecmp(string, "bloc", 4) + || !hwloc_strncasecmp(string, "net", 3) + || !hwloc_strncasecmp(string, "openfab", 7) + || !hwloc_strncasecmp(string, "dma", 3) + || !hwloc_strncasecmp(string, "gpu", 3) + || !hwloc_strncasecmp(string, "copro", 5) + || !hwloc_strncasecmp(string, "co-pro", 6)) { type = HWLOC_OBJ_OS_DEVICE; /* types with depthattr */ @@ -403,7 +414,7 @@ hwloc_pci_class_string(unsigned short class_id) case 0x0c01: return "ACCES"; case 0x0c02: return "SSA"; case 0x0c03: return "USB"; - case 0x0c04: return "Fiber"; + case 0x0c04: return "Fibre"; case 0x0c05: return "SMBus"; case 0x0c06: return "IB"; case 0x0c07: return "IPMI"; diff --git a/opal/mca/hwloc/hwloc1112/hwloc/utils/README.txt b/opal/mca/hwloc/hwloc1113/hwloc/tests/README.txt similarity index 100% rename from opal/mca/hwloc/hwloc1112/hwloc/utils/README.txt rename to opal/mca/hwloc/hwloc1113/hwloc/tests/README.txt diff --git a/opal/mca/hwloc/hwloc1113/hwloc/utils/README.txt b/opal/mca/hwloc/hwloc1113/hwloc/utils/README.txt new file mode 100644 index 0000000000..2a72583279 --- /dev/null +++ b/opal/mca/hwloc/hwloc1113/hwloc/utils/README.txt @@ -0,0 +1,4 @@ +Open MPI doesn't need this tree from hwloc. But automake *requires* +that this directory has to be here. So we have an empty directory +with a README in it, a) just to explain why it's here, and b) so that +hg clones won't delete the directory (because it's empty). diff --git a/opal/mca/hwloc/hwloc1112/hwloc1112.h b/opal/mca/hwloc/hwloc1113/hwloc1113.h similarity index 93% rename from opal/mca/hwloc/hwloc1112/hwloc1112.h rename to opal/mca/hwloc/hwloc1113/hwloc1113.h index 8b20bf623b..b97472ef2f 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc1112.h +++ b/opal/mca/hwloc/hwloc1113/hwloc1113.h @@ -16,8 +16,8 @@ * this header represents the public interface to this static component. */ -#ifndef MCA_OPAL_HWLOC_HWLOC1112_H -#define MCA_OPAL_HWLOC_HWLOC1112_H +#ifndef MCA_OPAL_HWLOC_HWLOC1113_H +#define MCA_OPAL_HWLOC_HWLOC1113_H BEGIN_C_DECLS @@ -45,4 +45,4 @@ BEGIN_C_DECLS END_C_DECLS -#endif /* MCA_OPAL_HWLOC_HWLOC1112_H */ +#endif /* MCA_OPAL_HWLOC_HWLOC1113_H */ diff --git a/opal/mca/hwloc/hwloc1112/hwloc1112_component.c b/opal/mca/hwloc/hwloc1113/hwloc1113_component.c similarity index 85% rename from opal/mca/hwloc/hwloc1112/hwloc1112_component.c rename to opal/mca/hwloc/hwloc1113/hwloc1113_component.c index 8117766276..a402d675c4 100644 --- a/opal/mca/hwloc/hwloc1112/hwloc1112_component.c +++ b/opal/mca/hwloc/hwloc1113/hwloc1113_component.c @@ -22,20 +22,20 @@ #include "opal/constants.h" #include "opal/mca/hwloc/hwloc.h" -#include "hwloc1112.h" +#include "hwloc1113.h" /* * Public string showing the sysinfo ompi_linux component version number */ -const char *opal_hwloc_hwloc1112_component_version_string = - "OPAL hwloc1112 hwloc MCA component version " OPAL_VERSION; +const char *opal_hwloc_hwloc1113_component_version_string = + "OPAL hwloc1113 hwloc MCA component version " OPAL_VERSION; /* * Instantiate the public struct with all of our public information * and pointers to our public functions in it */ -const opal_hwloc_component_t mca_hwloc_hwloc1112_component = { +const opal_hwloc_component_t mca_hwloc_hwloc1113_component = { /* First, the mca_component_t struct containing meta information about the component itself */ @@ -44,7 +44,7 @@ const opal_hwloc_component_t mca_hwloc_hwloc1112_component = { OPAL_HWLOC_BASE_VERSION_2_0_0, /* Component name and version */ - .mca_component_name = "hwloc1112", + .mca_component_name = "hwloc1113", MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION, OPAL_RELEASE_VERSION), }, diff --git a/opal/mca/hwloc/hwloc1112/owner.txt b/opal/mca/hwloc/hwloc1113/owner.txt similarity index 100% rename from opal/mca/hwloc/hwloc1112/owner.txt rename to opal/mca/hwloc/hwloc1113/owner.txt