commits
Threads by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
May 2013
- 1 participants
- 70 discussions
[mpich] MPICH primary repository branch, master, updated. v3.0.4-237-g949f621
by noreply@mpich.org 19 May '13
by noreply@mpich.org 19 May '13
19 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 949f621eecd7594a748b4be99ead8d357dd2a326 (commit)
via 043e8b22117a4d2aaf7f38516c2b17872aa616da (commit)
from 49b74176e850230fd868a8b1dae30ffacb2f11d2 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/949f621eecd7594a748b4be99ead8d357…
commit 949f621eecd7594a748b4be99ead8d357dd2a326
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun May 19 13:15:00 2013 -0500
Prioritize clang++ over g++.
diff --git a/confdb/aclocal_cxx.m4 b/confdb/aclocal_cxx.m4
index 72febd8..f744701 100644
--- a/confdb/aclocal_cxx.m4
+++ b/confdb/aclocal_cxx.m4
@@ -1,7 +1,7 @@
dnl PAC_CXX_SEARCH_LIST - expands to a whitespace separated list of C++
dnl compilers for use with AC_PROG_CXX that is more suitable for HPC software
dnl packages
-AC_DEFUN([PAC_CXX_SEARCH_LIST],[$CCC icpc pgCC xlC pathCC g++ clang++ c++ cc++ cxx CC cl])
+AC_DEFUN([PAC_CXX_SEARCH_LIST],[$CCC icpc pgCC xlC pathCC clang++ g++ c++ cc++ cxx CC cl])
dnl PAC_PROG_CXX - reprioritize the C++ compiler search order
dnl NOTE: this macro suffers from a basically intractable "expanded before it
dnl was required" problem when libtool is also used
http://git.mpich.org/mpich.git/commitdiff/043e8b22117a4d2aaf7f38516c2b17872…
commit 043e8b22117a4d2aaf7f38516c2b17872aa616da
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun May 19 13:12:29 2013 -0500
Move lesser used C++ compilers down the priority list.
diff --git a/confdb/aclocal_cxx.m4 b/confdb/aclocal_cxx.m4
index 279b668..72febd8 100644
--- a/confdb/aclocal_cxx.m4
+++ b/confdb/aclocal_cxx.m4
@@ -1,7 +1,7 @@
dnl PAC_CXX_SEARCH_LIST - expands to a whitespace separated list of C++
dnl compilers for use with AC_PROG_CXX that is more suitable for HPC software
dnl packages
-AC_DEFUN([PAC_CXX_SEARCH_LIST],[$CCC icpc pgCC xlC pathCC c++ cxx CC g++ clang++ gcc cc++ cl])
+AC_DEFUN([PAC_CXX_SEARCH_LIST],[$CCC icpc pgCC xlC pathCC g++ clang++ c++ cc++ cxx CC cl])
dnl PAC_PROG_CXX - reprioritize the C++ compiler search order
dnl NOTE: this macro suffers from a basically intractable "expanded before it
dnl was required" problem when libtool is also used
-----------------------------------------------------------------------
Summary of changes:
confdb/aclocal_cxx.m4 | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, mpich-3.0.x, deleted. v3.0.4-6-g9a19e6b
by noreply@mpich.org 19 May '13
by noreply@mpich.org 19 May '13
19 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, mpich-3.0.x has been deleted
was 9a19e6b6774e8b9a9fd2ffe86fe5cbe570c86559
-----------------------------------------------------------------------
9a19e6b6774e8b9a9fd2ffe86fe5cbe570c86559 Fixes for #1804 and #1828, related to alignment issues with MPI_Status
-----------------------------------------------------------------------
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-235-g49b7417
by noreply@mpich.org 19 May '13
by noreply@mpich.org 19 May '13
19 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 49b74176e850230fd868a8b1dae30ffacb2f11d2 (commit)
from 2bda6bc7ec088821941f9a7a8d7f001db816b99c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/49b74176e850230fd868a8b1dae30ffac…
commit 49b74176e850230fd868a8b1dae30ffacb2f11d2
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun May 19 00:45:28 2013 -0500
Incorrect macro for sys/sysctl.h
Fixed a typo where we used HAVE_SYSCTL_H instead of HAVE_SYS_SYSCTL_H.
This was causing the check to always fail.
No reviewer.
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
index 54d88f7..eddec79 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
@@ -164,7 +164,7 @@ hwloc_freebsd_get_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unu
#endif
#endif
-#if defined(HAVE_SYSCTL) && defined(HAVE_SYSCTL_H)
+#if defined(HAVE_SYSCTL) && defined(HAVE_SYS_SYSCTL_H)
static void
hwloc_freebsd_node_meminfo_info(struct hwloc_topology *topology)
{
@@ -187,7 +187,7 @@ hwloc_look_freebsd(struct hwloc_backend *backend)
}
/* Add FreeBSD specific information */
-#if defined(HAVE_SYSCTL) && defined(HAVE_SYSCTL_H)
+#if defined(HAVE_SYSCTL) && defined(HAVE_SYS_SYSCTL_H)
hwloc_freebsd_node_meminfo_info(topology);
#endif
hwloc_obj_add_info(topology->levels[0][0], "Backend", "FreeBSD");
-----------------------------------------------------------------------
Summary of changes:
.../tools/topo/hwloc/hwloc/src/topology-freebsd.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-234-g2bda6bc
by noreply@mpich.org 19 May '13
by noreply@mpich.org 19 May '13
19 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 2bda6bc7ec088821941f9a7a8d7f001db816b99c (commit)
via 8ba28d9596b6fa9249e469bf8b0ca4be0a48792a (commit)
from aad2bd26a361f4bc67bb347d4719a2d297262bcc (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/2bda6bc7ec088821941f9a7a8d7f001db…
commit 2bda6bc7ec088821941f9a7a8d7f001db816b99c
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun May 19 00:17:55 2013 -0500
Hydra-specific patches for hwloc.
Picked up the relevant parts of [a3bce754], [255da3f6], [90da6e90],
[db276e4e], [d2072896], [aad2bd26].
No reviewer.
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am b/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
index a76d42e..5d635d5 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
@@ -9,10 +9,10 @@ ACLOCAL_AMFLAGS = -I ./config
SUBDIRS = src include
if HWLOC_BUILD_STANDALONE
-SUBDIRS += utils tests
+# SUBDIRS += utils tests
# 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
+# SUBDIRS += doc
endif
# Do not let automake automatically add the non-standalone dirs to the
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh b/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
index d69ef09..df42802 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
@@ -1,2 +1,2 @@
:
-autoreconf -ivf
+autoreconf ${autoreconf_args:-"-ivf"}
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4 b/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
index 02b1e6f..b9ab48f 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
@@ -441,7 +441,25 @@ EOF])
])
AC_CHECK_DECLS([strtoull], [], [], [AC_INCLUDES_DEFAULT])
- AC_CHECK_FUNCS([sysctl sysctlbyname])
+ # 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,
+ # the prototype of sysctl uses u_int, which on some platforms
+ # (such as FreeBSD) is only defined under __BSD_VISIBLE, __USE_BSD
+ # or other similar definitions. So while the symbols "sysctl" and
+ # "sysctlbyname" might still be available in libc (which autoconf
+ # checks for), they might not be actually usable.
+ AC_TRY_LINK([
+ #include <stdio.h>
+ #include <sys/sysctl.h>
+ ],
+ [return sysctl(NULL,0,NULL,NULL,NULL,0);],
+ AC_DEFINE([HAVE_SYSCTL],[1],[Define to '1' if sysctl is present and usable]))
+ AC_TRY_LINK([
+ #include <stdio.h>
+ #include <sys/sysctl.h>
+ ],
+ [return sysctlbyname(NULL,NULL,NULL,NULL,0);],
+ AC_DEFINE([HAVE_SYSCTLBYNAME],[1],[Define to '1' if sysctlbyname is present and usable]))
case ${target} in
*-*-mingw*|*-*-cygwin*)
@@ -1232,7 +1250,10 @@ dnl number of 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])],[$1(1,2,3,4,5,6,7,8,9,10);])],
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT([$4])
+ $1(int,long,int,long,int,long,int,long,int,long);],
+ [$1(1,2,3,4,5,6,7,8,9,10);])],
[AC_MSG_RESULT([no])
$3],
[AC_MSG_RESULT([yes])
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
index fd26aa8..54d88f7 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
@@ -164,7 +164,7 @@ hwloc_freebsd_get_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unu
#endif
#endif
-#ifdef HAVE_SYSCTL
+#if defined(HAVE_SYSCTL) && defined(HAVE_SYSCTL_H)
static void
hwloc_freebsd_node_meminfo_info(struct hwloc_topology *topology)
{
@@ -187,7 +187,7 @@ hwloc_look_freebsd(struct hwloc_backend *backend)
}
/* Add FreeBSD specific information */
-#ifdef HAVE_SYSCTL
+#if defined(HAVE_SYSCTL) && defined(HAVE_SYSCTL_H)
hwloc_freebsd_node_meminfo_info(topology);
#endif
hwloc_obj_add_info(topology->levels[0][0], "Backend", "FreeBSD");
http://git.mpich.org/mpich.git/commitdiff/8ba28d9596b6fa9249e469bf8b0ca4be0…
commit 8ba28d9596b6fa9249e469bf8b0ca4be0a48792a
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun May 19 00:12:32 2013 -0500
Upgraded to hwloc-1.7.1rc1.
No reviewer.
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am b/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
index 5d635d5..a76d42e 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
@@ -9,10 +9,10 @@ ACLOCAL_AMFLAGS = -I ./config
SUBDIRS = src include
if HWLOC_BUILD_STANDALONE
-# SUBDIRS += utils tests
+SUBDIRS += utils tests
# 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
+SUBDIRS += doc
endif
# Do not let automake automatically add the non-standalone dirs to the
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS b/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS
index acc67c0..bc99c0e 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS
@@ -17,6 +17,30 @@ bug fixes (and other actions) for each version of hwloc since version
in v0.9.1).
+Version 1.7.1
+-------------
+* Fix a failed assertion in the distance grouping code when loading a XML
+ file that already contains some groups.
+ Thanks to Laercio Lima Pilla for reporting the problem.
+* Remove unexpected Group objects when loading XML topologies with I/O
+ objects and NUMA distances.
+ Thanks to Elena Elkina for reporting the problem and testing patches.
+* Fix PCI link speed discovery when using libpciaccess.
+* Fix invalid libpciaccess virtual function device/vendor IDs when using
+ SR-IOV PCI devices on Linux.
+* Fix GL component build with old NVCtrl releases.
+ Thanks to Jirka Hladky for reporting the problem.
+* Fix embedding breakage caused by libltdl.
+ Thanks to Pavan Balaji for reporting the problem.
+* Always use the system-wide libltdl instead of shipping one inside hwloc.
+* Document issues when enabling plugins while embedding hwloc in another
+ project, in the documentation section Embedding hwloc in Other Software.
+* Add a FAQ entry "How to get useful topology information on NetBSD?"
+ in the documentation.
+* Somes fixes in the renaming code for embedding.
+* Miscellaneous minor build fixes.
+
+
Version 1.7.0
-------------
* New operating system backends
@@ -73,6 +97,14 @@ Version 1.7.0
names are prefixed with '-'.
+ lstopo --ignore PU now works when displaying the topology in
graphical and textual mode (not when exporting to XML).
+ + Make sure I/O options always appear in lstopo usage, not only when
+ using pciutils/libpci.
+ + Remove some unneeded Linux specific includes from some interoperability
+ headers.
+ + Fix some inconsistencies in hwloc-distrib and hwloc-assembler-remote
+ manpages. Thanks to Guy Streeter for the report.
+ + Fix a memory leak on AIX when getting memory binding.
+ + Fix many small memory leaks on Linux.
+ The `libpci' component is now called `pci' but the old name is still
accepted in the HWLOC_COMPONENTS variable for backward compatibility.
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION b/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
index 6028396..5cc8694 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
@@ -7,7 +7,7 @@
major=1
minor=7
-release=0
+release=1
# 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
@@ -16,7 +16,7 @@ release=0
# requirement is that it must be entirely printable ASCII characters
# and have no white space.
-greek=rc2
+greek=rc1
# If want_repo_rev=1, then the SVN r number will be included in the overall
# hwloc version number in some form.
@@ -58,4 +58,4 @@ date="Unreleased developer copy"
# 2. Version numbers are described in the Libtool current:revision:age
# format.
-libhwloc_so_version=8:0:3
+libhwloc_so_version=8:1:3
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh b/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
index df42802..d69ef09 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
@@ -1,2 +1,2 @@
:
-autoreconf ${autoreconf_args:-"-ivf"}
+autoreconf -ivf
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4 b/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
index 3bec360..02b1e6f 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
@@ -9,7 +9,7 @@ dnl Copyright (c) 2004-2012 The Regents of the University of California.
dnl All rights reserved.
dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart,
dnl University of Stuttgart. All rights reserved.
-dnl Copyright © 2006-2011 Cisco Systems, Inc. All rights reserved.
+dnl Copyright © 2006-2013 Cisco Systems, Inc. All rights reserved.
dnl Copyright © 2012 Blue Brain Project, BBP/EPFL. All rights reserved.
dnl Copyright © 2012 Oracle and/or its affiliates. All rights reserved.
dnl See COPYING in top-level directory.
@@ -439,30 +439,9 @@ EOF])
#include <sys/param.h>
#endif
])
+ AC_CHECK_DECLS([strtoull], [], [], [AC_INCLUDES_DEFAULT])
- # 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,
- # the prototype of sysctl uses u_int, which on some platforms
- # (such as FreeBSD) is only defined under __BSD_VISIBLE, __USE_BSD
- # or other similar definitions. So while the symbols "sysctl" and
- # "sysctlbyname" might still be available in libc (which autoconf
- # checks for), they might not be actually usable.
- AC_TRY_LINK([
- #include <stdio.h>
- #include <sys/sysctl.h>
- ],
- [return sysctl(NULL,0,NULL,NULL,NULL,0);],
- AC_DEFINE([HAVE_SYSCTL],[1],[Define to '1' if sysctl is present and usable]))
- AC_TRY_LINK([
- #include <stdio.h>
- #include <sys/sysctl.h>
- ],
- [return sysctlbyname(NULL,NULL,NULL,NULL,0);],
- AC_DEFINE([HAVE_SYSCTLBYNAME],[1],[Define to '1' if sysctlbyname is present and usable]))
-
- AC_CHECK_DECLS([strtoull],
- [AC_DEFINE([HWLOC_HAVE_DECL_STRTOULL],[1],[Define to '1' if strtoull declaration is present])],,
- [AC_INCLUDES_DEFAULT])
+ AC_CHECK_FUNCS([sysctl sysctlbyname])
case ${target} in
*-*-mingw*|*-*-cygwin*)
@@ -994,7 +973,7 @@ EOF])
[hwloc_pthread_mutex_happy=yes
HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE -lpthread"
],
- [AC_MSG_CHECKING([fot pthread_mutex_lock with -lpthread])
+ [AC_MSG_CHECKING([for pthread_mutex_lock with -lpthread])
# Try again with explicit -lpthread, but don't use AC_CHECK_FUNC to avoid the cache
tmp_save_LIBS=$LIBS
LIBS="$LIBS -lpthread"
@@ -1021,6 +1000,12 @@ EOF])
AC_MSG_CHECKING([if plugin support is enabled])
# Plugins (even core support) are totally disabled by default
AS_IF([test "x$enable_plugins" = "x"], [enable_plugins=no])
+ AS_IF([test "x$enable_plugins" != "xno"], [hwloc_have_plugins=yes], [hwloc_have_plugins=no])
+ AC_MSG_RESULT([$hwloc_have_plugins])
+ AS_IF([test "x$hwloc_have_plugins" = "xyes"],
+ [AC_DEFINE([HWLOC_HAVE_PLUGINS], 1, [Define to 1 if the hwloc library should support dynamically-loaded plugins])])
+
+ # Some sanity checks about plugins
# libltdl doesn't work on AIX as of 2.4.2
AS_IF([test "x$enable_plugins" = "xyes" -a "x$hwloc_aix" = "xyes"],
[AC_MSG_WARN([libltdl does not work on AIX, plugins support cannot be enabled.])
@@ -1030,10 +1015,18 @@ EOF])
[AC_MSG_WARN([Plugins not supported on non-native Windows build, plugins support cannot be enabled.])
AC_MSG_ERROR([Cannot continue])])
- AS_IF([test "x$enable_plugins" != "xno"], [hwloc_have_plugins=yes], [hwloc_have_plugins=no])
- AC_MSG_RESULT([$hwloc_have_plugins])
- AS_IF([test "x$hwloc_have_plugins" = "xyes"],
- [AC_DEFINE([HWLOC_HAVE_PLUGINS], 1, [Define to 1 if the hwloc library should support dynamically-loaded plugins])])
+ # If we want plugins, look for ltdl.h and libltdl
+ if test "x$hwloc_have_plugins" = xyes; then
+ AC_CHECK_HEADER([ltdl.h], [],
+ [AC_MSG_WARN([Plugin support requested, but could not find ltdl.h])
+ AC_MSG_ERROR([Cannot continue])])
+ AC_CHECK_LIB([ltdl], [lt_dlopenext],
+ [HWLOC_LIBS="$HWLOC_LIBS -lltdl"],
+ [AC_MSG_WARN([Plugin support requested, but could not find libltdl])
+ AC_MSG_ERROR([Cannot continue])])
+ # Add libltdl static-build dependencies to hwloc.pc
+ HWLOC_CHECK_LTDL_DEPS
+ fi
# Static components output file
hwloc_static_components_dir=${HWLOC_top_builddir}/src
@@ -1087,7 +1080,6 @@ EOF])
AC_SUBST(HWLOC_CFLAGS)
HWLOC_CPPFLAGS='-I$(HWLOC_top_builddir)/include -I$(HWLOC_top_srcdir)/include'
AC_SUBST(HWLOC_CPPFLAGS)
- HWLOC_LDFLAGS='-L$(HWLOC_top_builddir)/src'
AC_SUBST(HWLOC_LDFLAGS)
AC_SUBST(HWLOC_LIBS)
AC_SUBST(HWLOC_LIBS_PRIVATE)
@@ -1240,10 +1232,7 @@ dnl number of 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])
- $1(int,long,int,long,int,long,int,long,int,long);],
- [$1(1,2,3,4,5,6,7,8,9,10);])],
+ 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])
@@ -1263,3 +1252,72 @@ AC_DEFUN([_HWLOC_CHECK_DECLS], [
[Define to 1 if you have the declaration of `$1', and to 0 if you don't])
])
+#-----------------------------------------------------------------------
+
+dnl HWLOC_CHECK_LTDL_DEPS
+dnl
+dnl Add ltdl dependencies to HWLOC_LIBS_PRIVATE
+AC_DEFUN([HWLOC_CHECK_LTDL_DEPS], [
+ # save variables that we'll modify below
+ save_lt_cv_dlopen="$lt_cv_dlopen"
+ save_lt_cv_dlopen_libs="$lt_cv_dlopen_libs"
+ save_lt_cv_dlopen_self="$lt_cv_dlopen_self"
+ ###########################################################
+ # code stolen from LT_SYS_DLOPEN_SELF in libtool.m4
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+ # end of code stolen from LT_SYS_DLOPEN_SELF in libtool.m4
+ ###########################################################
+
+ HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE $lt_cv_dlopen_libs"
+
+ # restore modified variable in case the actual libtool code uses them
+ lt_cv_dlopen="$save_lt_cv_dlopen"
+ lt_cv_dlopen_libs="$save_lt_cv_dlopen_libs"
+ lt_cv_dlopen_self="$save_lt_cv_dlopen_self"
+])
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/configure.ac b/src/pm/hydra/tools/topo/hwloc/hwloc/configure.ac
index db3bd69..77bbd06 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/configure.ac
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/configure.ac
@@ -168,24 +168,8 @@ AM_ENABLE_SHARED
AM_DISABLE_STATIC
AM_PROG_LIBTOOL([dlopen win32-dll])
LT_LANG([C])
-LT_CONFIG_LTDL_DIR([src/libltdl])
-LTDL_INIT([recursive convenience])
-AC_CONFIG_FILES([src/libltdl/Makefile])
-
-# Workarounds for libtool LT_CONFIG_H bug
-#CPPFLAGS="$CPPFLAGS -I$HWLOC_top_builddir"
-AC_CONFIG_COMMANDS_PRE([LT_CONFIG_H=`expr "$LT_CONFIG_H" : '.*/\(.*\)'`])
-
-# Add libltdl static-build dependencies to hwloc.pc
-if test "x$hwloc_have_plugins" = xyes; then
- if test "x$with_included_ltdl" = xno; then
- HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE $LIBLTDL"
- fi
- HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE $lt_cv_dlopen_libs"
-fi
-# Is ltdl included?
-# AM_CONDITIONAL([HWLOC_LTDL_INCLUDED], [test "x$with_included_ltdl" = xyes])
+
# Party on
AC_OUTPUT
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy b/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy
index ad5a185..d6d5c19 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy
@@ -153,10 +153,10 @@ The hwloc core may also benefit from the following development packages:
<li>hwloc can use one of two different libraries for I/O device
discovery:
<ol>
-<li> libpciaccess (BSD). The relevant development package is usually
+<li>libpciaccess (BSD). The relevant development package is usually
<tt>libpciaccess-devel</tt> or <tt>libpciaccess-dev</tt>. </li>
<li>libpci, from the pciutils package (GPL). The relevant development
-package is usually <tt>pciutils-devel</tt> or <tt>libpci-dev</tt>.
+package is usually <tt>pciutils-devel</tt> or <tt>libpci-dev</tt>. </li>
</ol>
</li>
@@ -175,6 +175,10 @@ package is usually <tt>pciutils-devel</tt> or <tt>libpci-dev</tt>.
The relevant development package is usually <tt>libxml2-devel</tt>
or <tt>libxml2-dev</tt>.
</li>
+<li>libtool's ltdl library for dynamic plugin loading.
+ The relevant development package is usually <tt>libtool-ltdl-devel</tt>
+ or <tt>libltdl-dev</tt>.
+</li>
</ul>
PCI and XML support may be statically built inside the main hwloc
@@ -1876,7 +1880,7 @@ enabled for the current topology.
<dd>
hwloc/glibc-sched.h offers conversion routines between Glibc and
hwloc CPU sets in order to use hwloc with functions such as
- sched_setaffinity().
+ sched_getaffinity() or pthread_attr_setaffinity_np().
</dd>
<dt>OpenFabrics Verbs</dt>
@@ -2139,6 +2143,9 @@ is registered to the hwloc core.
Components are then only enabled if the topology configuration
requests it, as explained in the previous sections.
+Also note that plugins should carefully be enabled and used when
+embedding hwloc in another project, see \ref embed for details.
+
\section plugins_adding Adding new discovery components and plugins
The types and functions cited below are declared in the hwloc/plugins.h header.
@@ -2323,6 +2330,17 @@ you can directly integrate hwloc's m4 configure macro into your
configure script. You can then invoke hwloc's configuration tests and
build setup by calling an m4 macro (see below).
+Although hwloc dynamic shared object plugins may be used in embedded
+mode, the embedder project will have to manually setup libltdl in its
+build system so that hwloc can load its plugins at run time.
+Also, embedders should be aware of complications that can arise due to
+public and private linker namespaces (e.g., if the embedder project is
+loaded into a private namespace and then hwloc tries to dynamically
+load its plugins, such loading may fail since the hwloc plugins can't
+find the hwloc symbols they need).
+The embedder project is <b>strongly</b> advised not to use hwloc's
+dynamically loading plugins / libltdl capability.
+
\section embedding_m4 Using hwloc's M4 Embedding Capabilities
Every project is different, and there are many different ways of
@@ -2749,4 +2767,16 @@ CPPFLAGS may have to be updated if your platform headers are installed
in a different directory.
+\section faq_netbsd_bind How to get useful topology information on NetBSD?
+
+The NetBSD (and FreeBSD) backend uses x86-specific topology discovery
+(through the x86 component).
+This implementation requires CPU binding so as to query topology
+information from each individual logical processor.
+This means that hwloc cannot find any useful topology information
+unless user-level process binding is allowed by the NetBSD kernel.
+The <tt>security.models.extensions.user_set_cpu_affinity</tt>
+sysctl variable must be set to 1 to do so.
+Otherwise, only the number of logical processors will be detected.
+
*/
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/glibc-sched.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/glibc-sched.h
index a5f0346..1b93078 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/glibc-sched.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/glibc-sched.h
@@ -1,6 +1,6 @@
/*
* Copyright © 2009 CNRS
- * Copyright © 2009-2012 inria. All rights reserved.
+ * Copyright © 2009-2013 inria. All rights reserved.
* Copyright © 2009-2011 Université Bordeaux 1
* Copyright © 2011 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
@@ -10,8 +10,8 @@
* \brief Macros to help interaction between hwloc and glibc scheduling routines.
*
* Applications that use both hwloc and glibc scheduling routines such as
- * sched_getaffinity may want to include this file so as to ease conversion
- * between their respective types.
+ * sched_getaffinity() or pthread_attr_setaffinity_np() may want to include
+ * this file so as to ease conversion between their respective types.
*
* \note Topology \p topology must match the current machine.
*/
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h
index bee3a87..8062074 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h
@@ -1,6 +1,6 @@
/*
* Copyright © 2009 CNRS
- * Copyright © 2009-2012 inria. All rights reserved.
+ * Copyright © 2009-2013 Inria. All rights reserved.
* Copyright © 2009-2012 Université Bordeaux 1
* Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
@@ -783,16 +783,16 @@ hwloc_get_obj_below_array_by_type (hwloc_topology_t topology, int nr, hwloc_obj_
static __hwloc_inline void
hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *root, unsigned n_roots, hwloc_cpuset_t *cpuset, unsigned n, unsigned until);
static __hwloc_inline void
-hwloc_distribute(hwloc_topology_t topology, hwloc_obj_t root, hwloc_cpuset_t *cpuset, unsigned n, unsigned until)
+hwloc_distribute(hwloc_topology_t topology, hwloc_obj_t root, hwloc_cpuset_t *set, unsigned n, unsigned until)
{
unsigned i;
if (!root->arity || n == 1 || root->depth >= until) {
/* Got to the bottom, we can't split any more, put everything there. */
for (i=0; i<n; i++)
- cpuset[i] = hwloc_bitmap_dup(root->cpuset);
+ set[i] = hwloc_bitmap_dup(root->cpuset);
return;
}
- hwloc_distributev(topology, root->children, root->arity, cpuset, n, until);
+ hwloc_distributev(topology, root->children, root->arity, set, n, until);
}
/** \brief Distribute \p n items over the topology under \p roots
@@ -803,11 +803,11 @@ hwloc_distribute(hwloc_topology_t topology, hwloc_obj_t root, hwloc_cpuset_t *cp
* \note This function requires the \p roots objects to have a CPU set.
*/
static __hwloc_inline void
-hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *cpuset, unsigned n, unsigned until)
+hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *set, unsigned n, unsigned until)
{
unsigned i;
unsigned tot_weight;
- hwloc_cpuset_t *cpusetp = cpuset;
+ hwloc_cpuset_t *cpusetp = set;
tot_weight = 0;
for (i = 0; i < n_roots; i++)
@@ -850,12 +850,12 @@ hwloc_alloc_membind_policy_nodeset(hwloc_topology_t topology, size_t len, hwloc_
* This is similar to hwloc_alloc_membind_policy_nodeset, but for a given cpuset.
*/
static __hwloc_inline void *
-hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags)
+hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags)
{
- void *p = hwloc_alloc_membind(topology, len, cpuset, policy, flags);
+ void *p = hwloc_alloc_membind(topology, len, set, policy, flags);
if (p)
return p;
- hwloc_set_membind(topology, cpuset, policy, flags);
+ hwloc_set_membind(topology, set, policy, flags);
p = hwloc_alloc(topology, len);
if (p && policy != HWLOC_MEMBIND_FIRSTTOUCH)
/* Enforce the binding by touching the data */
@@ -1029,13 +1029,13 @@ hwloc_topology_get_allowed_nodeset(hwloc_topology_t topology)
* Otherwise \p nodeset will be entirely filled.
*/
static __hwloc_inline void
-hwloc_cpuset_to_nodeset(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, hwloc_nodeset_t nodeset)
+hwloc_cpuset_to_nodeset(hwloc_topology_t topology, hwloc_const_cpuset_t _cpuset, hwloc_nodeset_t nodeset)
{
int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
hwloc_obj_t obj;
if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
- if (hwloc_bitmap_iszero(cpuset))
+ if (hwloc_bitmap_iszero(_cpuset))
hwloc_bitmap_zero(nodeset);
else
/* Assume the whole system */
@@ -1045,7 +1045,7 @@ hwloc_cpuset_to_nodeset(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset,
hwloc_bitmap_zero(nodeset);
obj = NULL;
- while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, cpuset, depth, obj)) != NULL)
+ while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, _cpuset, depth, obj)) != NULL)
hwloc_bitmap_set(nodeset, obj->os_index);
}
@@ -1057,7 +1057,7 @@ hwloc_cpuset_to_nodeset(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset,
* nodeset.
*/
static __hwloc_inline void
-hwloc_cpuset_to_nodeset_strict(struct hwloc_topology *topology, hwloc_const_cpuset_t cpuset, hwloc_nodeset_t nodeset)
+hwloc_cpuset_to_nodeset_strict(struct hwloc_topology *topology, hwloc_const_cpuset_t _cpuset, hwloc_nodeset_t nodeset)
{
int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
hwloc_obj_t obj;
@@ -1065,7 +1065,7 @@ hwloc_cpuset_to_nodeset_strict(struct hwloc_topology *topology, hwloc_const_cpus
return;
hwloc_bitmap_zero(nodeset);
obj = NULL;
- while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, cpuset, depth, obj)) != NULL)
+ while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, _cpuset, depth, obj)) != NULL)
hwloc_bitmap_set(nodeset, obj->os_index);
}
@@ -1078,26 +1078,26 @@ hwloc_cpuset_to_nodeset_strict(struct hwloc_topology *topology, hwloc_const_cpus
* This is useful for manipulating memory binding sets.
*/
static __hwloc_inline void
-hwloc_cpuset_from_nodeset(hwloc_topology_t topology, hwloc_cpuset_t cpuset, hwloc_const_nodeset_t nodeset)
+hwloc_cpuset_from_nodeset(hwloc_topology_t topology, hwloc_cpuset_t _cpuset, hwloc_const_nodeset_t nodeset)
{
int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
hwloc_obj_t obj;
if (depth == HWLOC_TYPE_DEPTH_UNKNOWN ) {
if (hwloc_bitmap_iszero(nodeset))
- hwloc_bitmap_zero(cpuset);
+ hwloc_bitmap_zero(_cpuset);
else
/* Assume the whole system */
- hwloc_bitmap_fill(cpuset);
+ hwloc_bitmap_fill(_cpuset);
return;
}
- hwloc_bitmap_zero(cpuset);
+ hwloc_bitmap_zero(_cpuset);
obj = NULL;
while ((obj = hwloc_get_next_obj_by_depth(topology, depth, obj)) != NULL) {
if (hwloc_bitmap_isset(nodeset, obj->os_index))
/* no need to check obj->cpuset because objects in levels always have a cpuset */
- hwloc_bitmap_or(cpuset, cpuset, obj->cpuset);
+ hwloc_bitmap_or(_cpuset, _cpuset, obj->cpuset);
}
}
@@ -1109,18 +1109,18 @@ hwloc_cpuset_from_nodeset(hwloc_topology_t topology, hwloc_cpuset_t cpuset, hwlo
* cpuset.
*/
static __hwloc_inline void
-hwloc_cpuset_from_nodeset_strict(struct hwloc_topology *topology, hwloc_cpuset_t cpuset, hwloc_const_nodeset_t nodeset)
+hwloc_cpuset_from_nodeset_strict(struct hwloc_topology *topology, hwloc_cpuset_t _cpuset, hwloc_const_nodeset_t nodeset)
{
int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
hwloc_obj_t obj;
if (depth == HWLOC_TYPE_DEPTH_UNKNOWN )
return;
- hwloc_bitmap_zero(cpuset);
+ hwloc_bitmap_zero(_cpuset);
obj = NULL;
while ((obj = hwloc_get_next_obj_by_depth(topology, depth, obj)) != NULL)
if (hwloc_bitmap_isset(nodeset, obj->os_index))
/* no need to check obj->cpuset because objects in levels always have a cpuset */
- hwloc_bitmap_or(cpuset, cpuset, obj->cpuset);
+ hwloc_bitmap_or(_cpuset, _cpuset, obj->cpuset);
}
/** @} */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h
index e959b0f..ddf5731 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h
@@ -137,10 +137,10 @@ extern "C" {
#define hwloc_topology_export_xml HWLOC_NAME(topology_export_xml)
#define hwloc_topology_export_xmlbuffer HWLOC_NAME(topology_export_xmlbuffer)
#define hwloc_free_xmlbuffer HWLOC_NAME(free_xmlbuffer)
-#define hwloc_topology_set_userdata_export_callback HWLOC_NAME(topology_set_userdata_import_callback)
+#define hwloc_topology_set_userdata_export_callback HWLOC_NAME(topology_set_userdata_export_callback)
#define hwloc_export_obj_userdata HWLOC_NAME(export_obj_userdata)
#define hwloc_export_obj_userdata_base64 HWLOC_NAME(export_obj_userdata_base64)
-#define hwloc_topology_set_userdata_import_callback HWLOC_NAME(topology_set_userdata_export_callback)
+#define hwloc_topology_set_userdata_import_callback HWLOC_NAME(topology_set_userdata_import_callback)
#define hwloc_topology_insert_misc_object_by_cpuset HWLOC_NAME(topology_insert_misc_object_by_cpuset)
#define hwloc_topology_insert_misc_object_by_parent HWLOC_NAME(topology_insert_misc_object_by_parent)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/misc.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/misc.h
index e1ce98a..2425691 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/misc.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/misc.h
@@ -28,10 +28,6 @@
#error "unknown size for unsigned int."
#endif
-#if !defined(HWLOC_HAVE_DECL_STRTOULL)
-unsigned long long int strtoull(const char *nptr, char **endptr, int base);
-#endif /* HWLOC_HAVE_DECL_STRTOULL */
-
/**
* ffsl helpers.
@@ -344,5 +340,8 @@ hwloc_weight_long(unsigned long w)
#endif /* HWLOC_BITS_PER_LONG == 64 */
}
+#if !HAVE_DECL_STRTOULL
+unsigned long long int strtoull(const char *nptr, char **endptr, int base);
+#endif
#endif /* HWLOC_PRIVATE_MISC_H */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am b/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am
index 53de278..698a880 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am
@@ -207,10 +207,6 @@ if HWLOC_HAVE_PLUGINS
AM_CPPFLAGS += $(LTDLINCL)
libhwloc_la_LDFLAGS += -export-dynamic
libhwloc_la_LIBADD = $(LIBLTDL)
-libhwloc_la_DEPENDENCIES = $(LTDLDEPS)
-# if HWLOC_LTDL_INCLUDED
-# SUBDIRS = libltdl
-# endif
endif
# Embedded library (note the lack of a .so version number -- that
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/bitmap.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/bitmap.c
index e5cb07e..39f4dbf 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/bitmap.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/bitmap.c
@@ -7,6 +7,8 @@
*/
#include <private/autogen/config.h>
+#include <hwloc/autogen/config.h>
+#include <hwloc.h>
#include <private/misc.h>
#include <private/private.h>
#include <hwloc/bitmap.h>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c
index 432c746..f4c75e4 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c
@@ -1,5 +1,5 @@
/*
- * Copyright © 2010-2012 Inria. All rights reserved.
+ * Copyright © 2010-2013 Inria. All rights reserved.
* Copyright © 2011-2012 Université Bordeaux 1
* Copyright © 2011 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
@@ -522,13 +522,17 @@ hwloc_distances__finalize_logical(struct hwloc_topology *topology,
hwloc_bitmap_asprintf(&a, cpuset);
hwloc_bitmap_asprintf(&b, nodeset);
fprintf(stderr, "****************************************************************************\n");
- fprintf(stderr, "* Hwloc has encountered an error when adding a distance matrix to the topology.\n");
+ fprintf(stderr, "* hwloc has encountered an error when adding a distance matrix to the topology.\n");
fprintf(stderr, "*\n");
fprintf(stderr, "* hwloc_distances__finalize_logical() could not find any object covering\n");
fprintf(stderr, "* cpuset %s and nodeset %s\n", a, b);
fprintf(stderr, "*\n");
fprintf(stderr, "* Please report this error message to the hwloc user's mailing list,\n");
+#ifdef HWLOC_LINUX_SYS
fprintf(stderr, "* along with the output from the hwloc-gather-topology.sh script.\n");
+#else
+ fprintf(stderr, "* along with any relevant topology information from your platform.\n");
+#endif
fprintf(stderr, "****************************************************************************\n");
free(a);
free(b);
@@ -660,7 +664,7 @@ static void hwloc_report_user_distance_error(const char *msg, int line)
if (!reported && !hwloc_hide_errors()) {
fprintf(stderr, "****************************************************************************\n");
- fprintf(stderr, "* Hwloc has encountered what looks like an error from user-given distances.\n");
+ fprintf(stderr, "* hwloc has encountered what looks like an error from user-given distances.\n");
fprintf(stderr, "*\n");
fprintf(stderr, "* %s\n", msg);
fprintf(stderr, "* Error occurred in topology.c line %d\n", line);
@@ -870,9 +874,8 @@ hwloc__groups_by_distances(struct hwloc_topology *topology,
groupsizes[i], group_obj->cpuset);
res_obj = hwloc__insert_object_by_cpuset(topology, group_obj,
fromuser ? hwloc_report_user_distance_error : hwloc_report_os_error);
- assert(res_obj == group_obj); /* somebody else created groups here, things went wrong ?! */
-
- groupobjs[i] = group_obj;
+ /* res_obj may be different from group_objs if we got groups from XML import before grouping */
+ groupobjs[i] = res_obj;
}
/* factorize distances */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
index f00f4c1..fd26aa8 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
@@ -1,6 +1,6 @@
/*
* Copyright © 2009 CNRS
- * Copyright © 2009-2012 Inria. All rights reserved.
+ * Copyright © 2009-2013 Inria. All rights reserved.
* Copyright © 2009-2010, 2012 Université Bordeaux 1
* Copyright © 2011 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
@@ -29,33 +29,33 @@
#if defined(HAVE_SYS_CPUSET_H) && defined(HAVE_CPUSET_SETAFFINITY)
static void
-hwloc_freebsd_bsd2hwloc(hwloc_bitmap_t hwloc_cpuset, const cpuset_t *cpuset)
+hwloc_freebsd_bsd2hwloc(hwloc_bitmap_t hwloc_cpuset, const cpuset_t *cset)
{
unsigned cpu;
hwloc_bitmap_zero(hwloc_cpuset);
for (cpu = 0; cpu < CPU_SETSIZE; cpu++)
- if (CPU_ISSET(cpu, cpuset))
+ if (CPU_ISSET(cpu, cset))
hwloc_bitmap_set(hwloc_cpuset, cpu);
}
static void
-hwloc_freebsd_hwloc2bsd(hwloc_const_bitmap_t hwloc_cpuset, cpuset_t *cpuset)
+hwloc_freebsd_hwloc2bsd(hwloc_const_bitmap_t hwloc_cpuset, cpuset_t *cset)
{
unsigned cpu;
- CPU_ZERO(cpuset);
+ CPU_ZERO(cset);
for (cpu = 0; cpu < CPU_SETSIZE; cpu++)
if (hwloc_bitmap_isset(hwloc_cpuset, cpu))
- CPU_SET(cpu, cpuset);
+ CPU_SET(cpu, cset);
}
static int
hwloc_freebsd_set_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused)
{
- cpuset_t cpuset;
+ cpuset_t cset;
- hwloc_freebsd_hwloc2bsd(hwloc_cpuset, &cpuset);
+ hwloc_freebsd_hwloc2bsd(hwloc_cpuset, &cset);
- if (cpuset_setaffinity(level, which, id, sizeof(cpuset), &cpuset))
+ if (cpuset_setaffinity(level, which, id, sizeof(cset), &cset))
return -1;
return 0;
@@ -64,12 +64,12 @@ hwloc_freebsd_set_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unuse
static int
hwloc_freebsd_get_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused)
{
- cpuset_t cpuset;
+ cpuset_t cset;
- if (cpuset_getaffinity(level, which, id, sizeof(cpuset), &cpuset))
+ if (cpuset_getaffinity(level, which, id, sizeof(cset), &cset))
return -1;
- hwloc_freebsd_bsd2hwloc(hwloc_cpuset, &cpuset);
+ hwloc_freebsd_bsd2hwloc(hwloc_cpuset, &cset);
return 0;
}
@@ -117,16 +117,16 @@ static int
hwloc_freebsd_set_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused)
{
int err;
- cpuset_t cpuset;
+ cpuset_t cset;
if (!pthread_setaffinity_np) {
errno = ENOSYS;
return -1;
}
- hwloc_freebsd_hwloc2bsd(hwloc_cpuset, &cpuset);
+ hwloc_freebsd_hwloc2bsd(hwloc_cpuset, &cset);
- err = pthread_setaffinity_np(tid, sizeof(cpuset), &cpuset);
+ err = pthread_setaffinity_np(tid, sizeof(cset), &cset);
if (err) {
errno = err;
@@ -143,28 +143,28 @@ static int
hwloc_freebsd_get_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused)
{
int err;
- cpuset_t cpuset;
+ cpuset_t cset;
if (!pthread_getaffinity_np) {
errno = ENOSYS;
return -1;
}
- err = pthread_getaffinity_np(tid, sizeof(cpuset), &cpuset);
+ err = pthread_getaffinity_np(tid, sizeof(cset), &cset);
if (err) {
errno = err;
return -1;
}
- hwloc_freebsd_bsd2hwloc(hwloc_cpuset, &cpuset);
+ hwloc_freebsd_bsd2hwloc(hwloc_cpuset, &cset);
return 0;
}
#endif
#endif
#endif
-#if defined(HAVE_SYSCTL) && defined(HAVE_SYSCTL_H)
+#ifdef HAVE_SYSCTL
static void
hwloc_freebsd_node_meminfo_info(struct hwloc_topology *topology)
{
@@ -187,7 +187,7 @@ hwloc_look_freebsd(struct hwloc_backend *backend)
}
/* Add FreeBSD specific information */
-#if defined(HAVE_SYSCTL) && defined(HAVE_SYSCTL_H)
+#ifdef HAVE_SYSCTL
hwloc_freebsd_node_meminfo_info(topology);
#endif
hwloc_obj_add_info(topology->levels[0][0], "Backend", "FreeBSD");
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-gl.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-gl.c
index 0896c78..34cfb39 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-gl.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-gl.c
@@ -85,12 +85,16 @@ hwloc_gl_query_devices(struct hwloc_gl_backend_data_s *data)
gpu_number = ptr_binary_data[1];
free(ptr_binary_data);
+#ifdef NV_CTRL_PCI_DOMAIN
/* Gets the ID's of the GPU defined by gpu_number
* For further details, see the <NVCtrl/NVCtrlLib.h> */
err = XNVCTRLQueryTargetAttribute(display, NV_CTRL_TARGET_TYPE_GPU, gpu_number, 0,
NV_CTRL_PCI_DOMAIN, &nv_ctrl_pci_domain);
if (!err)
continue;
+#else
+ nv_ctrl_pci_domain = 0;
+#endif
err = XNVCTRLQueryTargetAttribute(display, NV_CTRL_TARGET_TYPE_GPU, gpu_number, 0,
NV_CTRL_PCI_BUS, &nv_ctrl_pci_bus);
@@ -103,11 +107,6 @@ hwloc_gl_query_devices(struct hwloc_gl_backend_data_s *data)
continue;
err = XNVCTRLQueryTargetAttribute(display, NV_CTRL_TARGET_TYPE_GPU, gpu_number, 0,
- NV_CTRL_PCI_DOMAIN, &nv_ctrl_pci_domain);
- if (!err)
- continue;
-
- err = XNVCTRLQueryTargetAttribute(display, NV_CTRL_TARGET_TYPE_GPU, gpu_number, 0,
NV_CTRL_PCI_FUNCTION, &nv_ctrl_pci_func);
if (!err)
continue;
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-pci.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-pci.c
index b15375b..f70609e 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-pci.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-pci.c
@@ -1,6 +1,6 @@
/*
* Copyright © 2009 CNRS
- * Copyright © 2009-2012 Inria. All rights reserved.
+ * Copyright © 2009-2013 Inria. All rights reserved.
* Copyright © 2009-2011, 2013 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -425,7 +425,7 @@ hwloc_pci_find_cap(const unsigned char *config, size_t config_size, unsigned cap
if (id == 0xff)
break;
- if (ptr + PCI_CAP_LIST_NEXT >= (unsigned char) config_size)
+ if (ptr + (unsigned) PCI_CAP_LIST_NEXT >= config_size)
return 0;
}
return 0;
@@ -571,6 +571,51 @@ hwloc_look_pci(struct hwloc_backend *backend)
#else
offset = hwloc_pci_find_cap(config_space_cache, config_space_cachesize, PCI_CAP_ID_EXP);
#endif /* HWLOC_HAVE_PCI_FIND_CAP */
+
+ if (0xffff == pcidev->vendor_id && 0xffff == pcidev->device_id) {
+ /* SR-IOV puts ffff:ffff in Virtual Function config space.
+ * The actual VF device ID is stored at a special (dynamic) location in the Physical Function config space.
+ * VF and PF have the same vendor ID.
+ *
+ * libpciaccess just returns ffff:ffff, needs to be fixed.
+ * linuxpci is OK because sysfs files are already fixed the kernel.
+ * pciutils is OK when it uses those Linux sysfs files.
+ *
+ * Reading these files is an easy way to work around the libpciaccess issue on Linux,
+ * but we have no way to know if this is caused by SR-IOV or not.
+ *
+ * TODO:
+ * If PF has CAP_ID_PCIX or CAP_ID_EXP (offset>0),
+ * look for extended capability PCI_EXT_CAP_ID_SRIOV,
+ * then read the VF device ID after it (PCI_IOV_DID bytes later).
+ * Needs access to extended config space (needs root on Linux).
+ * TODO:
+ * Add string info attributes in VF and PF objects?
+ */
+#ifdef HWLOC_LINUX_SYS
+ /* Workaround for Linux (the kernel returns the VF device/vendor IDs). */
+ char path[64];
+ char value[16];
+ FILE *file;
+ snprintf(path, sizeof(path), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/vendor",
+ domain, pcidev->bus, pcidev->dev, pcidev->func);
+ file = fopen(path, "r");
+ if (file) {
+ fread(value, sizeof(value), 1, file);
+ fclose(file);
+ obj->attr->pcidev.vendor_id = strtoul(value, NULL, 16);
+ }
+ snprintf(path, sizeof(path), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/device",
+ domain, pcidev->bus, pcidev->dev, pcidev->func);
+ file = fopen(path, "r");
+ if (file) {
+ fread(value, sizeof(value), 1, file);
+ fclose(file);
+ obj->attr->pcidev.device_id = strtoul(value, NULL, 16);
+ }
+#endif
+ }
+
if (offset > 0) {
if (offset + PCI_EXP_LNKSTA + 4 >= config_space_cachesize) {
fprintf(stderr, "cannot read PCI_EXP_LNKSTA cap at %d (only %d cached)\n", offset + PCI_EXP_LNKSTA, CONFIG_SPACE_CACHESIZE);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c
index 3c4ba5d..a0a274b 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c
@@ -1,5 +1,5 @@
/*
- * Copyright © 2010-2012 Inria. All rights reserved.
+ * Copyright © 2010-2013 Inria. All rights reserved.
* Copyright © 2010-2012 Université Bordeaux 1
* Copyright © 2010-2011 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
@@ -796,17 +796,17 @@ int hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs, int fulldi
if (hooks.get_thisthread_cpubind && hooks.set_thisthread_cpubind) {
if (!hooks.get_thisthread_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) {
- hwloc_bitmap_t cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_t set = hwloc_bitmap_alloc();
for (i = 0; i < nbprocs; i++) {
- hwloc_bitmap_only(cpuset, i);
+ hwloc_bitmap_only(set, i);
hwloc_debug("binding to CPU%d\n", i);
- if (hooks.set_thisthread_cpubind(topology, cpuset, HWLOC_CPUBIND_STRICT)) {
+ if (hooks.set_thisthread_cpubind(topology, set, HWLOC_CPUBIND_STRICT)) {
hwloc_debug("could not bind to CPU%d: %s\n", i, strerror(errno));
continue;
}
look_proc(&infos[i], highest_cpuid, highest_ext_cpuid, features, cpuid_type);
}
- hwloc_bitmap_free(cpuset);
+ hwloc_bitmap_free(set);
hooks.set_thisthread_cpubind(topology, orig_cpuset, 0);
hwloc_bitmap_free(orig_cpuset);
summarize(topology, infos, nbprocs, fulldiscovery);
@@ -816,17 +816,17 @@ int hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs, int fulldi
}
if (hooks.get_thisproc_cpubind && hooks.set_thisproc_cpubind) {
if (!hooks.get_thisproc_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) {
- hwloc_bitmap_t cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_t set = hwloc_bitmap_alloc();
for (i = 0; i < nbprocs; i++) {
- hwloc_bitmap_only(cpuset, i);
+ hwloc_bitmap_only(set, i);
hwloc_debug("binding to CPU%d\n", i);
- if (hooks.set_thisproc_cpubind(topology, cpuset, HWLOC_CPUBIND_STRICT)) {
+ if (hooks.set_thisproc_cpubind(topology, set, HWLOC_CPUBIND_STRICT)) {
hwloc_debug("could not bind to CPU%d: %s\n", i, strerror(errno));
continue;
}
look_proc(&infos[i], highest_cpuid, highest_ext_cpuid, features, cpuid_type);
}
- hwloc_bitmap_free(cpuset);
+ hwloc_bitmap_free(set);
hooks.set_thisproc_cpubind(topology, orig_cpuset, 0);
hwloc_bitmap_free(orig_cpuset);
summarize(topology, infos, nbprocs, fulldiscovery);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
index 05f65c4..d09627a 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
@@ -1,6 +1,6 @@
/*
* Copyright © 2009 CNRS
- * Copyright © 2009-2012 Inria. All rights reserved.
+ * Copyright © 2009-2013 Inria. All rights reserved.
* Copyright © 2009-2012 Université Bordeaux 1
* Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
@@ -72,13 +72,17 @@ void hwloc_report_os_error(const char *msg, int line)
if (!reported && !hwloc_hide_errors()) {
fprintf(stderr, "****************************************************************************\n");
- fprintf(stderr, "* Hwloc has encountered what looks like an error from the operating system.\n");
+ fprintf(stderr, "* hwloc has encountered what looks like an error from the operating system.\n");
fprintf(stderr, "*\n");
fprintf(stderr, "* %s\n", msg);
fprintf(stderr, "* Error occurred in topology.c line %d\n", line);
fprintf(stderr, "*\n");
fprintf(stderr, "* Please report this error message to the hwloc user's mailing list,\n");
+#ifdef HWLOC_LINUX_SYS
fprintf(stderr, "* along with the output from the hwloc-gather-topology.sh script.\n");
+#else
+ fprintf(stderr, "* along with any relevant topology information from your platform.\n");
+#endif
fprintf(stderr, "****************************************************************************\n");
reported = 1;
}
@@ -1529,23 +1533,36 @@ restrict_object_nodeset(hwloc_topology_t topology, hwloc_obj_t *pobj, hwloc_node
static void
merge_useless_child(hwloc_topology_t topology, hwloc_obj_t *pparent)
{
- hwloc_obj_t parent = *pparent, child, *pchild;
+ hwloc_obj_t parent = *pparent, child, *pchild, ios;
int replacechild = 0, replaceparent = 0;
for_each_child_safe(child, parent, pchild)
merge_useless_child(topology, pchild);
child = parent->first_child;
- if (!child || child->next_sibling)
- /* There are no or several children, it's useful to keep them. */
+ if (!child)
+ /* There are no child, nothing to merge. */
+ return;
+
+ if (child->next_sibling && !hwloc_obj_type_is_io(child->next_sibling->type))
+ /* There are several non-I/O children */
return;
+ /* There is one non-I/O child and possible some I/O children.
+ * I/O children shouldn't prevent merging because they can be attached
+ * to anything with the same locality.
+ * Move them to the side during merging, and append them back later.
+ * This is easy because I/O children are always last in the list.
+ */
+ ios = child->next_sibling;
+ child->next_sibling = NULL;
+
/* Check whether parent and/or child can be replaced */
if (topology->ignored_types[parent->type] == HWLOC_IGNORE_TYPE_KEEP_STRUCTURE)
/* Parent can be ignored in favor of the child. */
replaceparent = 1;
if (topology->ignored_types[child->type] == HWLOC_IGNORE_TYPE_KEEP_STRUCTURE)
- /* Child can be ignored in favor of the parent. */
+ /* Child can be ignored in favor of the parent. */
replacechild = 1;
/* Decide which one to actually replace */
@@ -1576,6 +1593,14 @@ merge_useless_child(hwloc_topology_t topology, hwloc_obj_t *pparent)
parent->first_child = child->first_child;
hwloc_free_unlinked_object(child);
}
+
+ if (ios) {
+ /* append I/O children to the list of children of the remaining object */
+ pchild = &((*pparent)->first_child);
+ while (*pchild)
+ pchild = &((*pchild)->next_sibling);
+ *pchild = ios;
+ }
}
static void
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-noio.xml b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-noio.xml
index c1a6879..974eb1d 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-noio.xml
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-noio.xml
@@ -24,156 +24,154 @@
<info name="OSVersion" value="#1 SMP Debian 3.2.32-1"/>
<info name="HostName" value="conan"/>
<info name="Architecture" value="x86_64"/>
- <object type="Group" cpuset="0xffffffff" complete_cpuset="0xffffffff" online_cpuset="0xffffffff" allowed_cpuset="0xffffffff" nodeset="0x00000003" complete_nodeset="0x00000003" allowed_nodeset="0x00000003" depth="0">
- <distances nbobjs="2" relative_depth="1" latency_base="10.000000">
- <latency value="1.000000"/>
- <latency value="2.000000"/>
- <latency value="2.000000"/>
- <latency value="1.000000"/>
- </distances>
- <object type="NUMANode" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="34330173440">
- <page_type size="4096" count="8381390"/>
- <page_type size="2097152" count="0"/>
- <object type="Socket" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
- <info name="CPUType" value="x86_64"/>
- <object type="Cache" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
- <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="0" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="1" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="2" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="3" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="4" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="5" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="6" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="7" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ <distances nbobjs="2" relative_depth="1" latency_base="10.000000">
+ <latency value="1.000000"/>
+ <latency value="2.000000"/>
+ <latency value="2.000000"/>
+ <latency value="1.000000"/>
+ </distances>
+ <object type="NUMANode" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="34330173440">
+ <page_type size="4096" count="8381390"/>
+ <page_type size="2097152" count="0"/>
+ <object type="Socket" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
+ <info name="CPUType" value="x86_64"/>
+ <object type="Cache" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
+ <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="0" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="1" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="2" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="3" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="4" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="5" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="6" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="7" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
</object>
</object>
</object>
- <object type="NUMANode" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="34359738368">
- <page_type size="4096" count="8388608"/>
- <page_type size="2097152" count="0"/>
- <object type="Socket" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
- <info name="CPUType" value="x86_64"/>
- <object type="Cache" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
- <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="0" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="1" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="25" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="2" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="3" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="27" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="4" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="5" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="29" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="6" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="7" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="31" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
+ </object>
+ <object type="NUMANode" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="34359738368">
+ <page_type size="4096" count="8388608"/>
+ <page_type size="2097152" count="0"/>
+ <object type="Socket" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
+ <info name="CPUType" value="x86_64"/>
+ <object type="Cache" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
+ <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="0" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="1" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="25" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="2" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="3" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="27" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="4" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="5" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="29" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="6" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="7" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="31" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
</object>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-normalio.xml b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-normalio.xml
index a0d2830..a97ec6a 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-normalio.xml
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-normalio.xml
@@ -24,227 +24,225 @@
<info name="OSVersion" value="#1 SMP Debian 3.2.32-1"/>
<info name="HostName" value="conan"/>
<info name="Architecture" value="x86_64"/>
- <object type="Group" cpuset="0xffffffff" complete_cpuset="0xffffffff" online_cpuset="0xffffffff" allowed_cpuset="0xffffffff" nodeset="0x00000003" complete_nodeset="0x00000003" allowed_nodeset="0x00000003" depth="0">
- <distances nbobjs="2" relative_depth="1" latency_base="10.000000">
- <latency value="1.000000"/>
- <latency value="2.000000"/>
- <latency value="2.000000"/>
- <latency value="1.000000"/>
- </distances>
- <object type="NUMANode" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="34330173440">
- <page_type size="4096" count="8381390"/>
- <page_type size="2097152" count="0"/>
- <object type="Socket" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
- <info name="CPUType" value="x86_64"/>
- <object type="Cache" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
- <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="0" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="1" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="2" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="3" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="4" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="5" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="6" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="7" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ <distances nbobjs="2" relative_depth="1" latency_base="10.000000">
+ <latency value="1.000000"/>
+ <latency value="2.000000"/>
+ <latency value="2.000000"/>
+ <latency value="1.000000"/>
+ </distances>
+ <object type="NUMANode" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="34330173440">
+ <page_type size="4096" count="8381390"/>
+ <page_type size="2097152" count="0"/>
+ <object type="Socket" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
+ <info name="CPUType" value="x86_64"/>
+ <object type="Cache" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
+ <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="0" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
</object>
- </object>
- <object type="Bridge" os_index="0" bridge_type="0-1" depth="0" bridge_pci="0000:[00-05]">
- <object type="Bridge" os_index="48" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode" bridge_type="1-1" depth="0" bridge_pci="0000:[03-03]" pci_busid="0000:00:03.0" pci_type="0604 [8086:3c08] [000f:0000] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode"/>
- <object type="PCIDev" os_index="12288" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:03:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
- <info name="PCIVendor" value="NVIDIA Corporation"/>
- <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
+ <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="1" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
</object>
</object>
- <object type="Bridge" os_index="272" name="Intel Corporation C600/X79 series chipset PCI Express Virtual Root Port" bridge_type="1-1" depth="0" bridge_pci="0000:[04-04]" pci_busid="0000:00:11.0" pci_type="0604 [8086:1d3e] [000f:0000] 06" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset PCI Express Virtual Root Port"/>
- <object type="PCIDev" os_index="16384" name="Intel Corporation C602 chipset 4-Port SATA Storage Control Unit" pci_busid="0000:04:00.0" pci_type="0107 [8086:1d6b] [00d9:0062] 06" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C602 chipset 4-Port SATA Storage Control Unit"/>
+ <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="2" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
</object>
</object>
- <object type="Bridge" os_index="480" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[05-05]" pci_busid="0000:00:1e.0" pci_type="0604 [8086:244e] [0000:0000] a6" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="82801 PCI Bridge"/>
- <object type="PCIDev" os_index="20528" name="Matrox Electronics Systems Ltd. MGA G200eW WPCM450" pci_busid="0000:05:03.0" pci_type="0300 [102b:0532] [00d9:0062] 0a" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Matrox Electronics Systems Ltd."/>
- <info name="PCIDevice" value="MGA G200eW WPCM450"/>
+ <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="3" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="4" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="5" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
</object>
</object>
- <object type="PCIDev" os_index="498" name="Intel Corporation C600/X79 series chipset 6-Port SATA AHCI Controller" pci_busid="0000:00:1f.2" pci_type="0106 [8086:1d02] [00d9:0062] 06" pci_link_speed="0.000000">
+ <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="6" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="7" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="Bridge" os_index="0" bridge_type="0-1" depth="0" bridge_pci="0000:[00-05]">
+ <object type="Bridge" os_index="48" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode" bridge_type="1-1" depth="0" bridge_pci="0000:[03-03]" pci_busid="0000:00:03.0" pci_type="0604 [8086:3c08] [000f:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode"/>
+ <object type="PCIDev" os_index="12288" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:03:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="NVIDIA Corporation"/>
+ <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
+ </object>
+ </object>
+ <object type="Bridge" os_index="272" name="Intel Corporation C600/X79 series chipset PCI Express Virtual Root Port" bridge_type="1-1" depth="0" bridge_pci="0000:[04-04]" pci_busid="0000:00:11.0" pci_type="0604 [8086:1d3e] [000f:0000] 06" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset PCI Express Virtual Root Port"/>
+ <object type="PCIDev" os_index="16384" name="Intel Corporation C602 chipset 4-Port SATA Storage Control Unit" pci_busid="0000:04:00.0" pci_type="0107 [8086:1d6b] [00d9:0062] 06" pci_link_speed="0.000000">
<info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset 6-Port SATA AHCI Controller"/>
- <object type="OSDev" name="sda" osdev_type="0"/>
+ <info name="PCIDevice" value="C602 chipset 4-Port SATA Storage Control Unit"/>
</object>
</object>
+ <object type="Bridge" os_index="480" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[05-05]" pci_busid="0000:00:1e.0" pci_type="0604 [8086:244e] [0000:0000] a6" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="82801 PCI Bridge"/>
+ <object type="PCIDev" os_index="20528" name="Matrox Electronics Systems Ltd. MGA G200eW WPCM450" pci_busid="0000:05:03.0" pci_type="0300 [102b:0532] [00d9:0062] 0a" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Matrox Electronics Systems Ltd."/>
+ <info name="PCIDevice" value="MGA G200eW WPCM450"/>
+ </object>
+ </object>
+ <object type="PCIDev" os_index="498" name="Intel Corporation C600/X79 series chipset 6-Port SATA AHCI Controller" pci_busid="0000:00:1f.2" pci_type="0106 [8086:1d02] [00d9:0062] 06" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset 6-Port SATA AHCI Controller"/>
+ <object type="OSDev" name="sda" osdev_type="0"/>
+ </object>
</object>
- <object type="NUMANode" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="34359738368">
- <page_type size="4096" count="8388608"/>
- <page_type size="2097152" count="0"/>
- <object type="Socket" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
- <info name="CPUType" value="x86_64"/>
- <object type="Cache" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
- <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="0" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="1" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="25" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="2" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="3" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="27" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="4" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="5" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="29" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="6" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="7" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="31" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
+ </object>
+ <object type="NUMANode" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="34359738368">
+ <page_type size="4096" count="8388608"/>
+ <page_type size="2097152" count="0"/>
+ <object type="Socket" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
+ <info name="CPUType" value="x86_64"/>
+ <object type="Cache" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
+ <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="0" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
</object>
- </object>
- <object type="Bridge" os_index="2" bridge_type="0-1" depth="0" bridge_pci="0000:[80-84]">
- <object type="Bridge" os_index="524304" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1a" bridge_type="1-1" depth="0" bridge_pci="0000:[81-82]" pci_busid="0000:80:01.0" pci_type="0604 [8086:3c02] [0000:0000] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 1a"/>
- <object type="PCIDev" os_index="528384" name="Intel Corporation I350 Gigabit Network Connection" pci_busid="0000:81:00.0" pci_type="0200 [8086:1521] [00d9:0021] 01" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="I350 Gigabit Network Connection"/>
- <object type="OSDev" name="eth0" osdev_type="2">
- <info name="Address" value="00:25:90:95:71:12"/>
+ <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="1" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="25" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
- <object type="PCIDev" os_index="528385" name="Intel Corporation I350 Gigabit Network Connection" pci_busid="0000:81:00.1" pci_type="0200 [8086:1521] [00d9:0021] 01" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="I350 Gigabit Network Connection"/>
- <object type="OSDev" name="eth1" osdev_type="2">
- <info name="Address" value="00:25:90:95:71:13"/>
+ </object>
+ <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="2" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="3" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="27" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="4" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="5" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="29" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
</object>
- <object type="Bridge" os_index="524320" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 2a" bridge_type="1-1" depth="0" bridge_pci="0000:[83-83]" pci_busid="0000:80:02.0" pci_type="0604 [8086:3c04] [001f:0000] 07" pci_link_speed="0.000000">
+ <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="6" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="7" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="31" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="Bridge" os_index="2" bridge_type="0-1" depth="0" bridge_pci="0000:[80-84]">
+ <object type="Bridge" os_index="524304" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1a" bridge_type="1-1" depth="0" bridge_pci="0000:[81-82]" pci_busid="0000:80:01.0" pci_type="0604 [8086:3c02] [0000:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 1a"/>
+ <object type="PCIDev" os_index="528384" name="Intel Corporation I350 Gigabit Network Connection" pci_busid="0000:81:00.0" pci_type="0200 [8086:1521] [00d9:0021] 01" pci_link_speed="0.000000">
<info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 2a"/>
- <object type="PCIDev" os_index="536576" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:83:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
- <info name="PCIVendor" value="NVIDIA Corporation"/>
- <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
+ <info name="PCIDevice" value="I350 Gigabit Network Connection"/>
+ <object type="OSDev" name="eth0" osdev_type="2">
+ <info name="Address" value="00:25:90:95:71:12"/>
</object>
</object>
- <object type="Bridge" os_index="524336" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode" bridge_type="1-1" depth="0" bridge_pci="0000:[84-84]" pci_busid="0000:80:03.0" pci_type="0604 [8086:3c08] [001f:0000] 07" pci_link_speed="0.000000">
+ <object type="PCIDev" os_index="528385" name="Intel Corporation I350 Gigabit Network Connection" pci_busid="0000:81:00.1" pci_type="0200 [8086:1521] [00d9:0021] 01" pci_link_speed="0.000000">
<info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode"/>
- <object type="PCIDev" os_index="540672" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:84:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
- <info name="PCIVendor" value="NVIDIA Corporation"/>
- <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
+ <info name="PCIDevice" value="I350 Gigabit Network Connection"/>
+ <object type="OSDev" name="eth1" osdev_type="2">
+ <info name="Address" value="00:25:90:95:71:13"/>
</object>
</object>
</object>
+ <object type="Bridge" os_index="524320" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 2a" bridge_type="1-1" depth="0" bridge_pci="0000:[83-83]" pci_busid="0000:80:02.0" pci_type="0604 [8086:3c04] [001f:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 2a"/>
+ <object type="PCIDev" os_index="536576" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:83:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="NVIDIA Corporation"/>
+ <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
+ </object>
+ </object>
+ <object type="Bridge" os_index="524336" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode" bridge_type="1-1" depth="0" bridge_pci="0000:[84-84]" pci_busid="0000:80:03.0" pci_type="0604 [8086:3c08] [001f:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode"/>
+ <object type="PCIDev" os_index="540672" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:84:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="NVIDIA Corporation"/>
+ <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
+ </object>
+ </object>
</object>
</object>
</object>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-wholeio.xml b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-wholeio.xml
index 3e5b154..119cb78 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-wholeio.xml
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/32em64t-2n8c2t-pci-wholeio.xml
@@ -24,371 +24,369 @@
<info name="OSVersion" value="#1 SMP Debian 3.2.32-1"/>
<info name="HostName" value="conan"/>
<info name="Architecture" value="x86_64"/>
- <object type="Group" cpuset="0xffffffff" complete_cpuset="0xffffffff" online_cpuset="0xffffffff" allowed_cpuset="0xffffffff" nodeset="0x00000003" complete_nodeset="0x00000003" allowed_nodeset="0x00000003" depth="0">
- <distances nbobjs="2" relative_depth="1" latency_base="10.000000">
- <latency value="1.000000"/>
- <latency value="2.000000"/>
- <latency value="2.000000"/>
- <latency value="1.000000"/>
- </distances>
- <object type="NUMANode" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="34330173440">
- <page_type size="4096" count="8381390"/>
- <page_type size="2097152" count="0"/>
- <object type="Socket" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
- <info name="CPUType" value="x86_64"/>
- <object type="Cache" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
- <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="0" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ <distances nbobjs="2" relative_depth="1" latency_base="10.000000">
+ <latency value="1.000000"/>
+ <latency value="2.000000"/>
+ <latency value="2.000000"/>
+ <latency value="1.000000"/>
+ </distances>
+ <object type="NUMANode" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="34330173440">
+ <page_type size="4096" count="8381390"/>
+ <page_type size="2097152" count="0"/>
+ <object type="Socket" os_index="0" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
+ <info name="CPUType" value="x86_64"/>
+ <object type="Cache" cpuset="0x00ff00ff" complete_cpuset="0x00ff00ff" online_cpuset="0x00ff00ff" allowed_cpuset="0x00ff00ff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
+ <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="0" cpuset="0x00010001" complete_cpuset="0x00010001" online_cpuset="0x00010001" allowed_cpuset="0x00010001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
- <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="1" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="1" cpuset="0x00020002" complete_cpuset="0x00020002" online_cpuset="0x00020002" allowed_cpuset="0x00020002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
- <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="2" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="2" cpuset="0x00040004" complete_cpuset="0x00040004" online_cpuset="0x00040004" allowed_cpuset="0x00040004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
- <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="3" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="3" cpuset="0x00080008" complete_cpuset="0x00080008" online_cpuset="0x00080008" allowed_cpuset="0x00080008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
- <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="4" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="4" cpuset="0x00100010" complete_cpuset="0x00100010" online_cpuset="0x00100010" allowed_cpuset="0x00100010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
- <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="5" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="5" cpuset="0x00200020" complete_cpuset="0x00200020" online_cpuset="0x00200020" allowed_cpuset="0x00200020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
- <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="6" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="6" cpuset="0x00400040" complete_cpuset="0x00400040" online_cpuset="0x00400040" allowed_cpuset="0x00400040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
- <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="7" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
- <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- <object type="PU" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="7" cpuset="0x00800080" complete_cpuset="0x00800080" online_cpuset="0x00800080" allowed_cpuset="0x00800080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ <object type="PU" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
</object>
</object>
</object>
</object>
- <object type="Bridge" os_index="0" bridge_type="0-1" depth="0" bridge_pci="0000:[00-05]">
- <object type="PCIDev" os_index="0" name="Intel Corporation Xeon E5/Core i7 DMI2" pci_busid="0000:00:00.0" pci_type="0600 [8086:3c00] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMI2"/>
- </object>
- <object type="Bridge" os_index="16" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1a" bridge_type="1-1" depth="0" bridge_pci="0000:[01-01]" pci_busid="0000:00:01.0" pci_type="0604 [8086:3c02] [0000:0000] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 1a"/>
- </object>
- <object type="Bridge" os_index="32" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 2a" bridge_type="1-1" depth="0" bridge_pci="0000:[02-02]" pci_busid="0000:00:02.0" pci_type="0604 [8086:3c04] [0000:0000] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 2a"/>
- </object>
- <object type="Bridge" os_index="48" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode" bridge_type="1-1" depth="0" bridge_pci="0000:[03-03]" pci_busid="0000:00:03.0" pci_type="0604 [8086:3c08] [000f:0000] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode"/>
- <object type="PCIDev" os_index="12288" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:03:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
- <info name="PCIVendor" value="NVIDIA Corporation"/>
- <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
- </object>
- </object>
- <object type="PCIDev" os_index="64" name="Intel Corporation Xeon E5/Core i7 DMA Channel 0" pci_busid="0000:00:04.0" pci_type="0880 [8086:3c20] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 0"/>
- <object type="OSDev" name="dma0chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="65" name="Intel Corporation Xeon E5/Core i7 DMA Channel 1" pci_busid="0000:00:04.1" pci_type="0880 [8086:3c21] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 1"/>
- <object type="OSDev" name="dma1chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="66" name="Intel Corporation Xeon E5/Core i7 DMA Channel 2" pci_busid="0000:00:04.2" pci_type="0880 [8086:3c22] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 2"/>
- <object type="OSDev" name="dma2chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="67" name="Intel Corporation Xeon E5/Core i7 DMA Channel 3" pci_busid="0000:00:04.3" pci_type="0880 [8086:3c23] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 3"/>
- <object type="OSDev" name="dma3chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="68" name="Intel Corporation Xeon E5/Core i7 DMA Channel 4" pci_busid="0000:00:04.4" pci_type="0880 [8086:3c24] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 4"/>
- <object type="OSDev" name="dma4chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="69" name="Intel Corporation Xeon E5/Core i7 DMA Channel 5" pci_busid="0000:00:04.5" pci_type="0880 [8086:3c25] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 5"/>
- <object type="OSDev" name="dma5chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="70" name="Intel Corporation Xeon E5/Core i7 DMA Channel 6" pci_busid="0000:00:04.6" pci_type="0880 [8086:3c26] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 6"/>
- <object type="OSDev" name="dma6chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="71" name="Intel Corporation Xeon E5/Core i7 DMA Channel 7" pci_busid="0000:00:04.7" pci_type="0880 [8086:3c27] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 7"/>
- <object type="OSDev" name="dma7chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="80" name="Intel Corporation Xeon E5/Core i7 Address Map, VTd_Misc, System Management" pci_busid="0000:00:05.0" pci_type="0880 [8086:3c28] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 Address Map, VTd_Misc, System Management"/>
- </object>
- <object type="PCIDev" os_index="82" name="Intel Corporation Xeon E5/Core i7 Control Status and Global Errors" pci_busid="0000:00:05.2" pci_type="0880 [8086:3c2a] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 Control Status and Global Errors"/>
- </object>
- <object type="PCIDev" os_index="84" name="Intel Corporation Xeon E5/Core i7 I/O APIC" pci_busid="0000:00:05.4" pci_type="0800 [8086:3c2c] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 I/O APIC"/>
- </object>
- <object type="Bridge" os_index="272" name="Intel Corporation C600/X79 series chipset PCI Express Virtual Root Port" bridge_type="1-1" depth="0" bridge_pci="0000:[04-04]" pci_busid="0000:00:11.0" pci_type="0604 [8086:1d3e] [000f:0000] 06" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset PCI Express Virtual Root Port"/>
- <object type="PCIDev" os_index="16384" name="Intel Corporation C602 chipset 4-Port SATA Storage Control Unit" pci_busid="0000:04:00.0" pci_type="0107 [8086:1d6b] [00d9:0062] 06" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C602 chipset 4-Port SATA Storage Control Unit"/>
- </object>
- </object>
- <object type="PCIDev" os_index="352" name="Intel Corporation C600/X79 series chipset MEI Controller #1" pci_busid="0000:00:16.0" pci_type="0780 [8086:1d3a] [00d9:0062] 05" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset MEI Controller #1"/>
- </object>
- <object type="PCIDev" os_index="353" name="Intel Corporation C600/X79 series chipset MEI Controller #2" pci_busid="0000:00:16.1" pci_type="0780 [8086:1d3b] [00d9:0062] 05" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset MEI Controller #2"/>
- </object>
- <object type="PCIDev" os_index="416" name="Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #2" pci_busid="0000:00:1a.0" pci_type="0c03 [8086:1d2d] [00d9:0062] 06" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset USB2 Enhanced Host Controller #2"/>
- </object>
- <object type="PCIDev" os_index="464" name="Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #1" pci_busid="0000:00:1d.0" pci_type="0c03 [8086:1d26] [00d9:0062] 06" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset USB2 Enhanced Host Controller #1"/>
- </object>
- <object type="Bridge" os_index="480" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[05-05]" pci_busid="0000:00:1e.0" pci_type="0604 [8086:244e] [0000:0000] a6" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="82801 PCI Bridge"/>
- <object type="PCIDev" os_index="20528" name="Matrox Electronics Systems Ltd. MGA G200eW WPCM450" pci_busid="0000:05:03.0" pci_type="0300 [102b:0532] [00d9:0062] 0a" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Matrox Electronics Systems Ltd."/>
- <info name="PCIDevice" value="MGA G200eW WPCM450"/>
- </object>
- </object>
- <object type="PCIDev" os_index="496" name="Intel Corporation C600/X79 series chipset LPC Controller" pci_busid="0000:00:1f.0" pci_type="0601 [8086:1d41] [00d9:0062] 06" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset LPC Controller"/>
- </object>
- <object type="PCIDev" os_index="498" name="Intel Corporation C600/X79 series chipset 6-Port SATA AHCI Controller" pci_busid="0000:00:1f.2" pci_type="0106 [8086:1d02] [00d9:0062] 06" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset 6-Port SATA AHCI Controller"/>
- <object type="OSDev" name="sda" osdev_type="0"/>
+ </object>
+ <object type="Bridge" os_index="0" bridge_type="0-1" depth="0" bridge_pci="0000:[00-05]">
+ <object type="PCIDev" os_index="0" name="Intel Corporation Xeon E5/Core i7 DMI2" pci_busid="0000:00:00.0" pci_type="0600 [8086:3c00] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMI2"/>
+ </object>
+ <object type="Bridge" os_index="16" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1a" bridge_type="1-1" depth="0" bridge_pci="0000:[01-01]" pci_busid="0000:00:01.0" pci_type="0604 [8086:3c02] [0000:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 1a"/>
+ </object>
+ <object type="Bridge" os_index="32" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 2a" bridge_type="1-1" depth="0" bridge_pci="0000:[02-02]" pci_busid="0000:00:02.0" pci_type="0604 [8086:3c04] [0000:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 2a"/>
+ </object>
+ <object type="Bridge" os_index="48" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode" bridge_type="1-1" depth="0" bridge_pci="0000:[03-03]" pci_busid="0000:00:03.0" pci_type="0604 [8086:3c08] [000f:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode"/>
+ <object type="PCIDev" os_index="12288" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:03:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="NVIDIA Corporation"/>
+ <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
</object>
- <object type="PCIDev" os_index="499" name="Intel Corporation C600/X79 series chipset SMBus Host Controller" pci_busid="0000:00:1f.3" pci_type="0c05 [8086:1d22] [00d9:0062] 06" pci_link_speed="0.000000">
+ </object>
+ <object type="PCIDev" os_index="64" name="Intel Corporation Xeon E5/Core i7 DMA Channel 0" pci_busid="0000:00:04.0" pci_type="0880 [8086:3c20] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 0"/>
+ <object type="OSDev" name="dma0chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="65" name="Intel Corporation Xeon E5/Core i7 DMA Channel 1" pci_busid="0000:00:04.1" pci_type="0880 [8086:3c21] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 1"/>
+ <object type="OSDev" name="dma1chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="66" name="Intel Corporation Xeon E5/Core i7 DMA Channel 2" pci_busid="0000:00:04.2" pci_type="0880 [8086:3c22] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 2"/>
+ <object type="OSDev" name="dma2chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="67" name="Intel Corporation Xeon E5/Core i7 DMA Channel 3" pci_busid="0000:00:04.3" pci_type="0880 [8086:3c23] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 3"/>
+ <object type="OSDev" name="dma3chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="68" name="Intel Corporation Xeon E5/Core i7 DMA Channel 4" pci_busid="0000:00:04.4" pci_type="0880 [8086:3c24] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 4"/>
+ <object type="OSDev" name="dma4chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="69" name="Intel Corporation Xeon E5/Core i7 DMA Channel 5" pci_busid="0000:00:04.5" pci_type="0880 [8086:3c25] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 5"/>
+ <object type="OSDev" name="dma5chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="70" name="Intel Corporation Xeon E5/Core i7 DMA Channel 6" pci_busid="0000:00:04.6" pci_type="0880 [8086:3c26] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 6"/>
+ <object type="OSDev" name="dma6chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="71" name="Intel Corporation Xeon E5/Core i7 DMA Channel 7" pci_busid="0000:00:04.7" pci_type="0880 [8086:3c27] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 7"/>
+ <object type="OSDev" name="dma7chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="80" name="Intel Corporation Xeon E5/Core i7 Address Map, VTd_Misc, System Management" pci_busid="0000:00:05.0" pci_type="0880 [8086:3c28] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 Address Map, VTd_Misc, System Management"/>
+ </object>
+ <object type="PCIDev" os_index="82" name="Intel Corporation Xeon E5/Core i7 Control Status and Global Errors" pci_busid="0000:00:05.2" pci_type="0880 [8086:3c2a] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 Control Status and Global Errors"/>
+ </object>
+ <object type="PCIDev" os_index="84" name="Intel Corporation Xeon E5/Core i7 I/O APIC" pci_busid="0000:00:05.4" pci_type="0800 [8086:3c2c] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 I/O APIC"/>
+ </object>
+ <object type="Bridge" os_index="272" name="Intel Corporation C600/X79 series chipset PCI Express Virtual Root Port" bridge_type="1-1" depth="0" bridge_pci="0000:[04-04]" pci_busid="0000:00:11.0" pci_type="0604 [8086:1d3e] [000f:0000] 06" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset PCI Express Virtual Root Port"/>
+ <object type="PCIDev" os_index="16384" name="Intel Corporation C602 chipset 4-Port SATA Storage Control Unit" pci_busid="0000:04:00.0" pci_type="0107 [8086:1d6b] [00d9:0062] 06" pci_link_speed="0.000000">
<info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset SMBus Host Controller"/>
+ <info name="PCIDevice" value="C602 chipset 4-Port SATA Storage Control Unit"/>
</object>
- <object type="PCIDev" os_index="502" name="Intel Corporation C600/X79 series chipset Thermal Management Controller" pci_busid="0000:00:1f.6" pci_type="1180 [8086:1d24] [00d9:0062] 06" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="C600/X79 series chipset Thermal Management Controller"/>
+ </object>
+ <object type="PCIDev" os_index="352" name="Intel Corporation C600/X79 series chipset MEI Controller #1" pci_busid="0000:00:16.0" pci_type="0780 [8086:1d3a] [00d9:0062] 05" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset MEI Controller #1"/>
+ </object>
+ <object type="PCIDev" os_index="353" name="Intel Corporation C600/X79 series chipset MEI Controller #2" pci_busid="0000:00:16.1" pci_type="0780 [8086:1d3b] [00d9:0062] 05" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset MEI Controller #2"/>
+ </object>
+ <object type="PCIDev" os_index="416" name="Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #2" pci_busid="0000:00:1a.0" pci_type="0c03 [8086:1d2d] [00d9:0062] 06" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset USB2 Enhanced Host Controller #2"/>
+ </object>
+ <object type="PCIDev" os_index="464" name="Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #1" pci_busid="0000:00:1d.0" pci_type="0c03 [8086:1d26] [00d9:0062] 06" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset USB2 Enhanced Host Controller #1"/>
+ </object>
+ <object type="Bridge" os_index="480" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[05-05]" pci_busid="0000:00:1e.0" pci_type="0604 [8086:244e] [0000:0000] a6" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="82801 PCI Bridge"/>
+ <object type="PCIDev" os_index="20528" name="Matrox Electronics Systems Ltd. MGA G200eW WPCM450" pci_busid="0000:05:03.0" pci_type="0300 [102b:0532] [00d9:0062] 0a" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Matrox Electronics Systems Ltd."/>
+ <info name="PCIDevice" value="MGA G200eW WPCM450"/>
</object>
</object>
+ <object type="PCIDev" os_index="496" name="Intel Corporation C600/X79 series chipset LPC Controller" pci_busid="0000:00:1f.0" pci_type="0601 [8086:1d41] [00d9:0062] 06" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset LPC Controller"/>
+ </object>
+ <object type="PCIDev" os_index="498" name="Intel Corporation C600/X79 series chipset 6-Port SATA AHCI Controller" pci_busid="0000:00:1f.2" pci_type="0106 [8086:1d02] [00d9:0062] 06" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset 6-Port SATA AHCI Controller"/>
+ <object type="OSDev" name="sda" osdev_type="0"/>
+ </object>
+ <object type="PCIDev" os_index="499" name="Intel Corporation C600/X79 series chipset SMBus Host Controller" pci_busid="0000:00:1f.3" pci_type="0c05 [8086:1d22] [00d9:0062] 06" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset SMBus Host Controller"/>
+ </object>
+ <object type="PCIDev" os_index="502" name="Intel Corporation C600/X79 series chipset Thermal Management Controller" pci_busid="0000:00:1f.6" pci_type="1180 [8086:1d24] [00d9:0062] 06" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="C600/X79 series chipset Thermal Management Controller"/>
+ </object>
</object>
- <object type="NUMANode" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="34359738368">
- <page_type size="4096" count="8388608"/>
- <page_type size="2097152" count="0"/>
- <object type="Socket" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
- <info name="CPUType" value="x86_64"/>
- <object type="Cache" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
- <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="0" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="1" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="25" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="2" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
+ </object>
+ <object type="NUMANode" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="34359738368">
+ <page_type size="4096" count="8388608"/>
+ <page_type size="2097152" count="0"/>
+ <object type="Socket" os_index="1" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <info name="CPUModel" value="Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz"/>
+ <info name="CPUType" value="x86_64"/>
+ <object type="Cache" cpuset="0xff00ff00" complete_cpuset="0xff00ff00" online_cpuset="0xff00ff00" allowed_cpuset="0xff00ff00" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="20971520" depth="3" cache_linesize="64" cache_associativity="20" cache_type="0">
+ <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="0" cpuset="0x01000100" complete_cpuset="0x01000100" online_cpuset="0x01000100" allowed_cpuset="0x01000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
- <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="3" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="27" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="1" cpuset="0x02000200" complete_cpuset="0x02000200" online_cpuset="0x02000200" allowed_cpuset="0x02000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="25" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
- <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="4" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="2" cpuset="0x04000400" complete_cpuset="0x04000400" online_cpuset="0x04000400" allowed_cpuset="0x04000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
- <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="5" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="29" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="3" cpuset="0x08000800" complete_cpuset="0x08000800" online_cpuset="0x08000800" allowed_cpuset="0x08000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="27" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
- <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="6" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="4" cpuset="0x10001000" complete_cpuset="0x10001000" online_cpuset="0x10001000" allowed_cpuset="0x10001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
- <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
- <object type="Core" os_index="7" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- <object type="PU" os_index="31" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
+ </object>
+ <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="5" cpuset="0x20002000" complete_cpuset="0x20002000" online_cpuset="0x20002000" allowed_cpuset="0x20002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="29" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
</object>
- </object>
- <object type="Bridge" os_index="2" bridge_type="0-1" depth="0" bridge_pci="0000:[80-84]">
- <object type="Bridge" os_index="524304" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1a" bridge_type="1-1" depth="0" bridge_pci="0000:[81-82]" pci_busid="0000:80:01.0" pci_type="0604 [8086:3c02] [0000:0000] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 1a"/>
- <object type="PCIDev" os_index="528384" name="Intel Corporation I350 Gigabit Network Connection" pci_busid="0000:81:00.0" pci_type="0200 [8086:1521] [00d9:0021] 01" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="I350 Gigabit Network Connection"/>
- <object type="OSDev" name="eth0" osdev_type="2">
- <info name="Address" value="00:25:90:95:71:12"/>
+ <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="6" cpuset="0x40004000" complete_cpuset="0x40004000" online_cpuset="0x40004000" allowed_cpuset="0x40004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
- <object type="PCIDev" os_index="528385" name="Intel Corporation I350 Gigabit Network Connection" pci_busid="0000:81:00.1" pci_type="0200 [8086:1521] [00d9:0021] 01" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="I350 Gigabit Network Connection"/>
- <object type="OSDev" name="eth1" osdev_type="2">
- <info name="Address" value="00:25:90:95:71:13"/>
+ </object>
+ <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Cache" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8" cache_type="0">
+ <object type="Core" os_index="7" cpuset="0x80008000" complete_cpuset="0x80008000" online_cpuset="0x80008000" allowed_cpuset="0x80008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ <object type="PU" os_index="31" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
</object>
- <object type="Bridge" os_index="524320" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 2a" bridge_type="1-1" depth="0" bridge_pci="0000:[83-83]" pci_busid="0000:80:02.0" pci_type="0604 [8086:3c04] [001f:0000] 07" pci_link_speed="0.000000">
+ </object>
+ </object>
+ <object type="Bridge" os_index="2" bridge_type="0-1" depth="0" bridge_pci="0000:[80-84]">
+ <object type="Bridge" os_index="524304" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1a" bridge_type="1-1" depth="0" bridge_pci="0000:[81-82]" pci_busid="0000:80:01.0" pci_type="0604 [8086:3c02] [0000:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 1a"/>
+ <object type="PCIDev" os_index="528384" name="Intel Corporation I350 Gigabit Network Connection" pci_busid="0000:81:00.0" pci_type="0200 [8086:1521] [00d9:0021] 01" pci_link_speed="0.000000">
<info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 2a"/>
- <object type="PCIDev" os_index="536576" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:83:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
- <info name="PCIVendor" value="NVIDIA Corporation"/>
- <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
+ <info name="PCIDevice" value="I350 Gigabit Network Connection"/>
+ <object type="OSDev" name="eth0" osdev_type="2">
+ <info name="Address" value="00:25:90:95:71:12"/>
</object>
</object>
- <object type="Bridge" os_index="524336" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode" bridge_type="1-1" depth="0" bridge_pci="0000:[84-84]" pci_busid="0000:80:03.0" pci_type="0604 [8086:3c08] [001f:0000] 07" pci_link_speed="0.000000">
+ <object type="PCIDev" os_index="528385" name="Intel Corporation I350 Gigabit Network Connection" pci_busid="0000:81:00.1" pci_type="0200 [8086:1521] [00d9:0021] 01" pci_link_speed="0.000000">
<info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode"/>
- <object type="PCIDev" os_index="540672" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:84:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
- <info name="PCIVendor" value="NVIDIA Corporation"/>
- <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
+ <info name="PCIDevice" value="I350 Gigabit Network Connection"/>
+ <object type="OSDev" name="eth1" osdev_type="2">
+ <info name="Address" value="00:25:90:95:71:13"/>
</object>
</object>
- <object type="PCIDev" os_index="524352" name="Intel Corporation Xeon E5/Core i7 DMA Channel 0" pci_busid="0000:80:04.0" pci_type="0880 [8086:3c20] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 0"/>
- <object type="OSDev" name="dma8chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="524353" name="Intel Corporation Xeon E5/Core i7 DMA Channel 1" pci_busid="0000:80:04.1" pci_type="0880 [8086:3c21] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 1"/>
- <object type="OSDev" name="dma9chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="524354" name="Intel Corporation Xeon E5/Core i7 DMA Channel 2" pci_busid="0000:80:04.2" pci_type="0880 [8086:3c22] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 2"/>
- <object type="OSDev" name="dma10chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="524355" name="Intel Corporation Xeon E5/Core i7 DMA Channel 3" pci_busid="0000:80:04.3" pci_type="0880 [8086:3c23] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 3"/>
- <object type="OSDev" name="dma11chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="524356" name="Intel Corporation Xeon E5/Core i7 DMA Channel 4" pci_busid="0000:80:04.4" pci_type="0880 [8086:3c24] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 4"/>
- <object type="OSDev" name="dma12chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="524357" name="Intel Corporation Xeon E5/Core i7 DMA Channel 5" pci_busid="0000:80:04.5" pci_type="0880 [8086:3c25] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 5"/>
- <object type="OSDev" name="dma13chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="524358" name="Intel Corporation Xeon E5/Core i7 DMA Channel 6" pci_busid="0000:80:04.6" pci_type="0880 [8086:3c26] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 6"/>
- <object type="OSDev" name="dma14chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="524359" name="Intel Corporation Xeon E5/Core i7 DMA Channel 7" pci_busid="0000:80:04.7" pci_type="0880 [8086:3c27] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 7"/>
- <object type="OSDev" name="dma15chan0" osdev_type="4"/>
- </object>
- <object type="PCIDev" os_index="524368" name="Intel Corporation Xeon E5/Core i7 Address Map, VTd_Misc, System Management" pci_busid="0000:80:05.0" pci_type="0880 [8086:3c28] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 Address Map, VTd_Misc, System Management"/>
- </object>
- <object type="PCIDev" os_index="524370" name="Intel Corporation Xeon E5/Core i7 Control Status and Global Errors" pci_busid="0000:80:05.2" pci_type="0880 [8086:3c2a] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 Control Status and Global Errors"/>
+ </object>
+ <object type="Bridge" os_index="524320" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 2a" bridge_type="1-1" depth="0" bridge_pci="0000:[83-83]" pci_busid="0000:80:02.0" pci_type="0604 [8086:3c04] [001f:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 2a"/>
+ <object type="PCIDev" os_index="536576" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:83:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="NVIDIA Corporation"/>
+ <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
</object>
- <object type="PCIDev" os_index="524372" name="Intel Corporation Xeon E5/Core i7 I/O APIC" pci_busid="0000:80:05.4" pci_type="0800 [8086:3c2c] [00d9:0062] 07" pci_link_speed="0.000000">
- <info name="PCIVendor" value="Intel Corporation"/>
- <info name="PCIDevice" value="Xeon E5/Core i7 I/O APIC"/>
+ </object>
+ <object type="Bridge" os_index="524336" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode" bridge_type="1-1" depth="0" bridge_pci="0000:[84-84]" pci_busid="0000:80:03.0" pci_type="0604 [8086:3c08] [001f:0000] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode"/>
+ <object type="PCIDev" os_index="540672" name="NVIDIA Corporation Tesla M2075 Dual-Slot Computing Processor Module" pci_busid="0000:84:00.0" pci_type="0302 [10de:1094] [00de:0088] a1" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="NVIDIA Corporation"/>
+ <info name="PCIDevice" value="Tesla M2075 Dual-Slot Computing Processor Module"/>
</object>
</object>
+ <object type="PCIDev" os_index="524352" name="Intel Corporation Xeon E5/Core i7 DMA Channel 0" pci_busid="0000:80:04.0" pci_type="0880 [8086:3c20] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 0"/>
+ <object type="OSDev" name="dma8chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="524353" name="Intel Corporation Xeon E5/Core i7 DMA Channel 1" pci_busid="0000:80:04.1" pci_type="0880 [8086:3c21] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 1"/>
+ <object type="OSDev" name="dma9chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="524354" name="Intel Corporation Xeon E5/Core i7 DMA Channel 2" pci_busid="0000:80:04.2" pci_type="0880 [8086:3c22] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 2"/>
+ <object type="OSDev" name="dma10chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="524355" name="Intel Corporation Xeon E5/Core i7 DMA Channel 3" pci_busid="0000:80:04.3" pci_type="0880 [8086:3c23] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 3"/>
+ <object type="OSDev" name="dma11chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="524356" name="Intel Corporation Xeon E5/Core i7 DMA Channel 4" pci_busid="0000:80:04.4" pci_type="0880 [8086:3c24] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 4"/>
+ <object type="OSDev" name="dma12chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="524357" name="Intel Corporation Xeon E5/Core i7 DMA Channel 5" pci_busid="0000:80:04.5" pci_type="0880 [8086:3c25] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 5"/>
+ <object type="OSDev" name="dma13chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="524358" name="Intel Corporation Xeon E5/Core i7 DMA Channel 6" pci_busid="0000:80:04.6" pci_type="0880 [8086:3c26] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 6"/>
+ <object type="OSDev" name="dma14chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="524359" name="Intel Corporation Xeon E5/Core i7 DMA Channel 7" pci_busid="0000:80:04.7" pci_type="0880 [8086:3c27] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 DMA Channel 7"/>
+ <object type="OSDev" name="dma15chan0" osdev_type="4"/>
+ </object>
+ <object type="PCIDev" os_index="524368" name="Intel Corporation Xeon E5/Core i7 Address Map, VTd_Misc, System Management" pci_busid="0000:80:05.0" pci_type="0880 [8086:3c28] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 Address Map, VTd_Misc, System Management"/>
+ </object>
+ <object type="PCIDev" os_index="524370" name="Intel Corporation Xeon E5/Core i7 Control Status and Global Errors" pci_busid="0000:80:05.2" pci_type="0880 [8086:3c2a] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 Control Status and Global Errors"/>
+ </object>
+ <object type="PCIDev" os_index="524372" name="Intel Corporation Xeon E5/Core i7 I/O APIC" pci_busid="0000:80:05.4" pci_type="0800 [8086:3c2c] [00d9:0062] 07" pci_link_speed="0.000000">
+ <info name="PCIVendor" value="Intel Corporation"/>
+ <info name="PCIDevice" value="Xeon E5/Core i7 I/O APIC"/>
+ </object>
</object>
</object>
<object type="Bridge" os_index="1" bridge_type="0-1" depth="0" bridge_pci="0000:[7f-7f]">
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-info.1in b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-info.1in
index 9906e67..8bfe806 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-info.1in
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-info.1in
@@ -148,7 +148,7 @@ It is highly recommended that you read the hwloc(7) overview page
before reading this man page. Most of the concepts described in
hwloc(7) directly apply to the hwloc-calc utility.
.
-..\" **************************
+.\" **************************
.\" Examples Section
.\" **************************
.SH EXAMPLES
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c
index 1f39ea1..cc582c5 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c
@@ -261,8 +261,8 @@ RECURSE_BEGIN(obj, border) \
} else { \
unsigned found = 0; \
/* Try to find a fitting rectangle */ \
- for (rows = (unsigned) floor(sqrt(numsubobjs)); \
- rows >= (unsigned) ceil(pow(numsubobjs,0.33)) && rows > 1; \
+ for (rows = (unsigned) (float) floor(sqrt(numsubobjs)); \
+ rows >= (unsigned) (float) ceil(pow(numsubobjs,0.33)) && rows > 1; \
rows--) { \
columns = numsubobjs / rows; \
if (columns > 1 && columns * rows == numsubobjs) { \
-----------------------------------------------------------------------
Summary of changes:
src/pm/hydra/tools/topo/hwloc/hwloc/NEWS | 32 +
src/pm/hydra/tools/topo/hwloc/hwloc/VERSION | 6 +-
.../hydra/tools/topo/hwloc/hwloc/config/hwloc.m4 | 101 +++-
src/pm/hydra/tools/topo/hwloc/hwloc/configure.ac | 20 +-
src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy | 36 +-
.../topo/hwloc/hwloc/include/hwloc/glibc-sched.h | 6 +-
.../tools/topo/hwloc/hwloc/include/hwloc/helper.h | 44 +-
.../tools/topo/hwloc/hwloc/include/hwloc/rename.h | 4 +-
.../tools/topo/hwloc/hwloc/include/private/misc.h | 7 +-
.../hydra/tools/topo/hwloc/hwloc/src/Makefile.am | 4 -
src/pm/hydra/tools/topo/hwloc/hwloc/src/bitmap.c | 2 +
.../hydra/tools/topo/hwloc/hwloc/src/distances.c | 15 +-
.../tools/topo/hwloc/hwloc/src/topology-freebsd.c | 36 +-
.../hydra/tools/topo/hwloc/hwloc/src/topology-gl.c | 9 +-
.../tools/topo/hwloc/hwloc/src/topology-pci.c | 49 ++-
.../tools/topo/hwloc/hwloc/src/topology-x86.c | 18 +-
src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c | 37 +-
.../hwloc/tests/xml/32em64t-2n8c2t-pci-noio.xml | 288 +++++-----
.../tests/xml/32em64t-2n8c2t-pci-normalio.xml | 384 ++++++------
.../hwloc/tests/xml/32em64t-2n8c2t-pci-wholeio.xml | 628 ++++++++++----------
.../tools/topo/hwloc/hwloc/utils/hwloc-info.1in | 2 +-
.../tools/topo/hwloc/hwloc/utils/lstopo-draw.c | 4 +-
22 files changed, 960 insertions(+), 772 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-232-gaad2bd2
by noreply@mpich.org 19 May '13
by noreply@mpich.org 19 May '13
19 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via aad2bd26a361f4bc67bb347d4719a2d297262bcc (commit)
from 0388a85b1a6dfe8772766c67e9793266452e6c2c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/aad2bd26a361f4bc67bb347d4719a2d29…
commit aad2bd26a361f4bc67bb347d4719a2d297262bcc
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun May 19 00:07:24 2013 -0500
Fix strict build with clang on FreeBSD.
No reviewer.
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
index c3a82f7..f00f4c1 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
@@ -187,7 +187,7 @@ hwloc_look_freebsd(struct hwloc_backend *backend)
}
/* Add FreeBSD specific information */
-#ifdef HAVE_SYSCTL
+#if defined(HAVE_SYSCTL) && defined(HAVE_SYSCTL_H)
hwloc_freebsd_node_meminfo_info(topology);
#endif
hwloc_obj_add_info(topology->levels[0][0], "Backend", "FreeBSD");
-----------------------------------------------------------------------
Summary of changes:
.../tools/topo/hwloc/hwloc/src/topology-freebsd.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-231-g0388a85
by noreply@mpich.org 18 May '13
by noreply@mpich.org 18 May '13
18 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 0388a85b1a6dfe8772766c67e9793266452e6c2c (commit)
via 9d909feee1bfa4337f1bceabc7d3f42e7e2cd3fb (commit)
via ccf7f70c3252d4e38933de00dd2f4bb49a389a61 (commit)
via dfad7fdfc307ca74184a133d2921b8bc6d7e5023 (commit)
from 01e95cbfc0dde9fac3180addb7981f4d199a235c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/0388a85b1a6dfe8772766c67e97932664…
commit 0388a85b1a6dfe8772766c67e9793266452e6c2c
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat May 18 23:48:33 2013 -0500
Warning squash.
No reviewer.
diff --git a/src/pm/hydra/pm/pmiserv/pmip_cb.c b/src/pm/hydra/pm/pmiserv/pmip_cb.c
index d8681eb..e284028 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_cb.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_cb.c
@@ -462,7 +462,7 @@ static int local_to_global_id(int local_id)
static HYD_status launch_procs(void)
{
- int i, j, arg, process_id;
+ int i, j, process_id;
int using_pmi_port = 0;
char *str, *envstr, *list, *pmi_port;
struct HYD_string_stash stash;
@@ -685,7 +685,7 @@ static HYD_status launch_procs(void)
}
HYD_STRING_STASH_INIT(stash);
- for (j = 0, arg = 0; exec->exec[j]; j++)
+ for (j = 0; exec->exec[j]; j++)
HYD_STRING_STASH(stash, HYDU_strdup(exec->exec[j]), status);
status = HYDU_create_process(stash.strlist, force_env,
http://git.mpich.org/mpich.git/commitdiff/9d909feee1bfa4337f1bceabc7d3f42e7…
commit 9d909feee1bfa4337f1bceabc7d3f42e7e2cd3fb
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat May 18 23:27:47 2013 -0500
Remove accidental debug statements.
No reviewer.
diff --git a/confdb/aclocal_runlog.m4 b/confdb/aclocal_runlog.m4
index a538975..6446af8 100644
--- a/confdb/aclocal_runlog.m4
+++ b/confdb/aclocal_runlog.m4
@@ -183,8 +183,6 @@ dnl Save a copy of ac_link on a stack
dnl which is safe through nested invocations of this macro.
PAC_VAR_PUSHVAL([ac_link])
dnl Modify ac_link based on the unmodified ac_link.
-echo "ac_link: $ac_link"
-echo "pac_FirstSavedValueOf_ac_link: $pac_FirstSavedValueOf_ac_link"
ac_link="`echo $pac_FirstSavedValueOf_ac_link | sed -e 's|>.*$|> $1 2>\&1|g'`"
dnl
AC_LINK_IFELSE([$2],[
http://git.mpich.org/mpich.git/commitdiff/ccf7f70c3252d4e38933de00dd2f4bb49…
commit ccf7f70c3252d4e38933de00dd2f4bb49a389a61
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat May 18 22:38:40 2013 -0500
Warning squash for clang.
For the VA_ARGS test, clang was accepting it in C89 mode, but throwing
warnings. This causes configure to enable it, but the build to throw
many warnings. This patch will disable VA_ARGS support unless the
compiler can accept it without warnings.
No reviewer.
diff --git a/confdb/aclocal_cc.m4 b/confdb/aclocal_cc.m4
index 10964e1..47d58da 100644
--- a/confdb/aclocal_cc.m4
+++ b/confdb/aclocal_cc.m4
@@ -1625,19 +1625,29 @@ AC_DEFUN([PAC_STRUCT_ALIGNMENT],[
pac_cv_struct_alignment="eight"
fi
])
-dnl
+
dnl PAC_C_MACRO_VA_ARGS
dnl
dnl will AC_DEFINE([HAVE_MACRO_VA_ARGS]) if the compiler supports C99 variable
dnl length argument lists in macros (#define foo(...) bar(__VA_ARGS__))
AC_DEFUN([PAC_C_MACRO_VA_ARGS],[
AC_MSG_CHECKING([for variable argument list macro functionality])
- AC_LINK_IFELSE([AC_LANG_PROGRAM([
+
+ # check if the program links correctly
+ rm -f pac_test.log
+ PAC_LINK_IFELSE_LOG([pac_test.log],[AC_LANG_PROGRAM([
#include <stdio.h>
#define conftest_va_arg_macro(...) printf(__VA_ARGS__)
],
[conftest_va_arg_macro("a test %d", 3);])],
- [AC_DEFINE([HAVE_MACRO_VA_ARGS],[1],[Define if C99-style variable argument list macro functionality])
- AC_MSG_RESULT([yes])],
- [AC_MSG_RESULT([no])])
+ prog_links=yes,prog_links=no)
+
+ # If the program linked OK, make sure there were no warnings
+ if test "$prog_links" = "yes" -a "`cat pac_test.log`" = "" ; then
+ AC_DEFINE([HAVE_MACRO_VA_ARGS],[1],[Define if C99-style variable argument list macro functionality])
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ rm -f pac_test.log
])dnl
http://git.mpich.org/mpich.git/commitdiff/dfad7fdfc307ca74184a133d2921b8bc6…
commit dfad7fdfc307ca74184a133d2921b8bc6d7e5023
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat May 18 22:55:56 2013 -0500
Missed check for inline in mpl.
Added a check for inline in the MPL configure. Also made C89 headers
available by default. We should not be checking for them.
No reviewer.
diff --git a/src/mpl/configure.ac b/src/mpl/configure.ac
index bc0322c..0ea3ab1 100644
--- a/src/mpl/configure.ac
+++ b/src/mpl/configure.ac
@@ -47,6 +47,7 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AC_C_CONST
AC_C_RESTRICT
+AC_C_INLINE
PAC_C_MACRO_VA_ARGS
diff --git a/src/mpl/include/mpl.h b/src/mpl/include/mpl.h
index dee4743..3a33f0a 100644
--- a/src/mpl/include/mpl.h
+++ b/src/mpl/include/mpl.h
@@ -9,6 +9,12 @@
#include "mplconfig.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdint.h>
+
#if defined _mpl_restrict
#define mpl_restrict _mpl_restrict
#else
@@ -21,21 +27,11 @@
#define mpl_const const
#endif /* _mpl_const */
-#if defined MPL_HAVE_STDIO_H
-#include <stdio.h>
-#endif /* MPL_HAVE_STDIO_H */
-
-#if defined MPL_HAVE_STDLIB_H
-#include <stdlib.h>
-#endif /* MPL_HAVE_STDLIB_H */
-
-#if defined MPL_HAVE_STRING_H
-#include <string.h>
-#endif /* MPL_HAVE_STRING_H */
-
-#if defined MPL_HAVE_STDARG_H
-#include <stdarg.h>
-#endif /* MPL_HAVE_STDARG_H */
+#if defined _mpl_inline
+#define mpl_inline _mpl_inline
+#else
+#define mpl_inline inline
+#endif /* _mpl_inline */
#if defined MPL_HAVE_CTYPE_H
#include <ctype.h>
@@ -45,10 +41,6 @@
#include <inttypes.h>
#endif /* MPL_HAVE_INTTYPES_H */
-#if defined(MPL_HAVE_STDINT_H)
-#include <stdint.h>
-#endif /* MPL_HAVE_STDINT_H */
-
#if !defined ATTRIBUTE
# if defined MPL_HAVE_GCC_ATTRIBUTE
# define ATTRIBUTE(a_) __attribute__(a_)
diff --git a/src/mpl/include/mpl_valgrind.h b/src/mpl/include/mpl_valgrind.h
index 84fe057..4d36a9e 100644
--- a/src/mpl/include/mpl_valgrind.h
+++ b/src/mpl/include/mpl_valgrind.h
@@ -158,7 +158,7 @@
# define MPL_VG_PRINTF_BACKTRACE(...) do {} while (0)
# else
# define MPL_VG_PRINTF_BACKTRACE MPL_VG_printf_do_nothing_func
-static inline void MPL_VG_printf_do_nothing_func(char *fmt, ...)
+static mpl_inline void MPL_VG_printf_do_nothing_func(char *fmt, ...)
{
/* do nothing */
}
-----------------------------------------------------------------------
Summary of changes:
confdb/aclocal_cc.m4 | 20 +++++++++++++++-----
confdb/aclocal_runlog.m4 | 2 --
src/mpl/configure.ac | 1 +
src/mpl/include/mpl.h | 30 +++++++++++-------------------
src/mpl/include/mpl_valgrind.h | 2 +-
src/pm/hydra/pm/pmiserv/pmip_cb.c | 4 ++--
6 files changed, 30 insertions(+), 29 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-227-g01e95cb
by noreply@mpich.org 18 May '13
by noreply@mpich.org 18 May '13
18 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 01e95cbfc0dde9fac3180addb7981f4d199a235c (commit)
via 9560e258f1840bd541495e6cf76c9a239c1b91d1 (commit)
from c655784c9703992d037562fac82ad0536b3e9fe1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/01e95cbfc0dde9fac3180addb7981f4d1…
commit 01e95cbfc0dde9fac3180addb7981f4d199a235c
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat May 18 21:05:31 2013 -0500
Warning squash.
No reviewer.
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c
index 87e015c..02fcbcc 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c
@@ -65,7 +65,7 @@ HYD_status HYD_pmcd_pmi_publish(char *name, char *port, int *success)
struct HYD_pmcd_pmi_publish *r, *publish;
struct HYD_string_stash stash;
char *ns, *ns_host, *ns_port_str;
- int ns_port, ns_fd, i;
+ int ns_port, ns_fd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -157,7 +157,7 @@ HYD_status HYD_pmcd_pmi_unpublish(char *name, int *success)
struct HYD_pmcd_pmi_publish *r, *publish;
struct HYD_string_stash stash;
char *ns, *ns_host, *ns_port_str;
- int ns_port, ns_fd, i;
+ int ns_port, ns_fd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -250,7 +250,7 @@ HYD_status HYD_pmcd_pmi_lookup(char *name, char **value)
struct HYD_pmcd_pmi_publish *publish;
struct HYD_string_stash stash;
char *ns, *ns_host, *ns_port_str;
- int ns_port, ns_fd, i;
+ int ns_port, ns_fd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
http://git.mpich.org/mpich.git/commitdiff/9560e258f1840bd541495e6cf76c9a239…
commit 9560e258f1840bd541495e6cf76c9a239c1b91d1
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat May 18 21:03:29 2013 -0500
Correct parameter name.
Thanks to Jeff Hammond for reporting it.
No reviewer.
diff --git a/src/include/mpiutil.h b/src/include/mpiutil.h
index ae03f78..221f990 100644
--- a/src/include/mpiutil.h
+++ b/src/include/mpiutil.h
@@ -43,7 +43,7 @@ const char *MPIU_Strerror(int errnum);
* MPIU_Busy_wait()
*
* Call this in every busy wait loop to periodically yield the processor. The
- * MPIR_PARAM_POLLS_BEFORE_YIELD parameter can be used to adjust the number of
+ * MPIR_PARAM_NEMESIS_POLLS_BEFORE_YIELD parameter can be used to adjust the number of
* times MPIU_Busy_wait is called before the yield function is called.
*/
#ifdef USE_NOTHING_FOR_YIELD
@@ -54,9 +54,9 @@ const char *MPIU_Strerror(int errnum);
need to be changed for fine-grained multithreading. A possible alternative
is to make it a global thread-local variable. */
#define MPIU_Busy_wait() do { \
- if (MPIR_PARAM_POLLS_BEFORE_YIELD) { \
+ if (MPIR_PARAM_NEMESIS_POLLS_BEFORE_YIELD) { \
static int poll_count_ = 0; \
- if (poll_count_ >= MPIR_PARAM_POLLS_BEFORE_YIELD) { \
+ if (poll_count_ >= MPIR_PARAM_NEMESIS_POLLS_BEFORE_YIELD) { \
poll_count_ = 0; \
MPIU_PW_Sched_yield(); \
} else { \
-----------------------------------------------------------------------
Summary of changes:
src/include/mpiutil.h | 6 +++---
src/pm/hydra/pm/pmiserv/pmiserv_pmi.c | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-225-gc655784
by noreply@mpich.org 18 May '13
by noreply@mpich.org 18 May '13
18 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via c655784c9703992d037562fac82ad0536b3e9fe1 (commit)
via 6a39ab8721cbd4daca1803c186f8d41e97935f17 (commit)
from c532aacc14f77a04ffca0c212731700a5d3d9a01 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/c655784c9703992d037562fac82ad0536…
commit c655784c9703992d037562fac82ad0536b3e9fe1
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat May 18 20:23:51 2013 -0500
White space cleanup.
No reviewer.
diff --git a/src/pm/hydra/include/hydra.h b/src/pm/hydra/include/hydra.h
index 31dd1e1..ce27f26 100644
--- a/src/pm/hydra/include/hydra.h
+++ b/src/pm/hydra/include/hydra.h
@@ -552,8 +552,7 @@ HYD_status HYDU_create_process(char **client_arg, struct HYD_env *env_list,
/* others */
int HYDU_dceil(int x, int y);
-HYD_status HYDU_add_to_node_list(const char *hostname, int num_procs,
- struct HYD_node **node_list);
+HYD_status HYDU_add_to_node_list(const char *hostname, int num_procs, struct HYD_node **node_list);
HYD_status HYDU_gethostname(char *hostname);
void HYDU_delay(unsigned long delay);
diff --git a/src/pm/hydra/pm/pmiserv/common.c b/src/pm/hydra/pm/pmiserv/common.c
index d8f70ac..6cb3a20 100644
--- a/src/pm/hydra/pm/pmiserv/common.c
+++ b/src/pm/hydra/pm/pmiserv/common.c
@@ -20,8 +20,7 @@ void HYD_pmcd_init_header(struct HYD_pmcd_hdr *hdr)
hdr->signum = -1;
}
-HYD_status HYD_pmcd_pmi_parse_pmi_cmd(char *obuf, int pmi_version, char **pmi_cmd,
- char *args[])
+HYD_status HYD_pmcd_pmi_parse_pmi_cmd(char *obuf, int pmi_version, char **pmi_cmd, char *args[])
{
char *str1 = NULL, *cmd, *buf;
const char *delim;
@@ -68,8 +67,7 @@ HYD_status HYD_pmcd_pmi_parse_pmi_cmd(char *obuf, int pmi_version, char **pmi_cm
goto fn_exit;
}
-HYD_status HYD_pmcd_pmi_args_to_tokens(char *args[], struct HYD_pmcd_token **tokens,
- int *count)
+HYD_status HYD_pmcd_pmi_args_to_tokens(char *args[], struct HYD_pmcd_token **tokens, int *count)
{
int i, j;
char *arg;
@@ -77,8 +75,7 @@ HYD_status HYD_pmcd_pmi_args_to_tokens(char *args[], struct HYD_pmcd_token **tok
for (i = 0; args[i]; i++);
*count = i;
- HYDU_MALLOC(*tokens, struct HYD_pmcd_token *, *count * sizeof(struct HYD_pmcd_token),
- status);
+ HYDU_MALLOC(*tokens, struct HYD_pmcd_token *, *count * sizeof(struct HYD_pmcd_token), status);
for (i = 0; args[i]; i++) {
arg = HYDU_strdup(args[i]);
@@ -156,8 +153,7 @@ void HYD_pmcd_free_pmi_kvs_list(struct HYD_pmcd_pmi_kvs *kvs_list)
HYDU_FUNC_EXIT();
}
-HYD_status HYD_pmcd_pmi_add_kvs(const char *key, char *val, struct HYD_pmcd_pmi_kvs *kvs,
- int *ret)
+HYD_status HYD_pmcd_pmi_add_kvs(const char *key, char *val, struct HYD_pmcd_pmi_kvs *kvs, int *ret)
{
struct HYD_pmcd_pmi_kvs_pair *key_pair, *run;
HYD_status status = HYD_SUCCESS;
diff --git a/src/pm/hydra/pm/pmiserv/common.h b/src/pm/hydra/pm/pmiserv/common.h
index 53e4eb8..0fa38a5 100644
--- a/src/pm/hydra/pm/pmiserv/common.h
+++ b/src/pm/hydra/pm/pmiserv/common.h
@@ -14,8 +14,8 @@
#define PMI_MAXVALLEN (1024) /* max length of value in keyval space */
#define PMI_MAXKVSLEN (256) /* max length of various names */
-#define MAX_PMI_ARGS (1024) /* number of arguments in a PMI command */
-#define MAX_PMI_INTERNAL_ARGS (65536) /* number of arguments in internal communication */
+#define MAX_PMI_ARGS (1024) /* number of arguments in a PMI command */
+#define MAX_PMI_INTERNAL_ARGS (65536) /* number of arguments in internal communication */
struct HYD_pmcd_pmi_kvs_pair {
char key[PMI_MAXKEYLEN];
@@ -24,7 +24,7 @@ struct HYD_pmcd_pmi_kvs_pair {
};
struct HYD_pmcd_pmi_kvs {
- char kvsname[PMI_MAXKVSLEN]; /* Name of this kvs */
+ char kvsname[PMI_MAXKVSLEN]; /* Name of this kvs */
struct HYD_pmcd_pmi_kvs_pair *key_pair;
};
@@ -71,16 +71,12 @@ struct HYD_pmcd_token {
};
void HYD_pmcd_init_header(struct HYD_pmcd_hdr *hdr);
-HYD_status HYD_pmcd_pmi_parse_pmi_cmd(char *buf, int pmi_version, char **pmi_cmd,
- char *args[]);
-HYD_status HYD_pmcd_pmi_args_to_tokens(char *args[], struct HYD_pmcd_token **tokens,
- int *count);
+HYD_status HYD_pmcd_pmi_parse_pmi_cmd(char *buf, int pmi_version, char **pmi_cmd, char *args[]);
+HYD_status HYD_pmcd_pmi_args_to_tokens(char *args[], struct HYD_pmcd_token **tokens, int *count);
void HYD_pmcd_pmi_free_tokens(struct HYD_pmcd_token *tokens, int token_count);
-char *HYD_pmcd_pmi_find_token_keyval(struct HYD_pmcd_token *tokens, int count,
- const char *key);
+char *HYD_pmcd_pmi_find_token_keyval(struct HYD_pmcd_token *tokens, int count, const char *key);
HYD_status HYD_pmcd_pmi_allocate_kvs(struct HYD_pmcd_pmi_kvs **kvs, int pgid);
void HYD_pmcd_free_pmi_kvs_list(struct HYD_pmcd_pmi_kvs *kvs_list);
-HYD_status HYD_pmcd_pmi_add_kvs(const char *key, char *val, struct HYD_pmcd_pmi_kvs *kvs,
- int *ret);
+HYD_status HYD_pmcd_pmi_add_kvs(const char *key, char *val, struct HYD_pmcd_pmi_kvs *kvs, int *ret);
#endif /* COMMON_H_INCLUDED */
diff --git a/src/pm/hydra/pm/pmiserv/pmi_v2_common.c b/src/pm/hydra/pm/pmiserv/pmi_v2_common.c
index 0511e76..9aebe8d 100644
--- a/src/pm/hydra/pm/pmiserv/pmi_v2_common.c
+++ b/src/pm/hydra/pm/pmiserv/pmi_v2_common.c
@@ -15,8 +15,7 @@ HYD_status HYD_pmcd_pmi_v2_queue_req(int fd, int pid, int pgid, char *args[], ch
struct HYD_pmcd_pmi_v2_reqs *req, *tmp;
HYD_status status = HYD_SUCCESS;
- HYDU_MALLOC(req, struct HYD_pmcd_pmi_v2_reqs *, sizeof(struct HYD_pmcd_pmi_v2_reqs),
- status);
+ HYDU_MALLOC(req, struct HYD_pmcd_pmi_v2_reqs *, sizeof(struct HYD_pmcd_pmi_v2_reqs), status);
req->fd = fd;
req->pid = pid;
req->pgid = pgid;
diff --git a/src/pm/hydra/pm/pmiserv/pmip_cb.c b/src/pm/hydra/pm/pmiserv/pmip_cb.c
index e268293..d8681eb 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_cb.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_cb.c
@@ -143,11 +143,9 @@ static HYD_status check_pmi_cmd(char **buf, int *pmi_version, int *repeat)
}
}
else { /* multi commands */
- for (bufptr = sptr; bufptr < sptr + pmi_storage_len - strlen("endcmd\n") + 1;
- bufptr++) {
+ for (bufptr = sptr; bufptr < sptr + pmi_storage_len - strlen("endcmd\n") + 1; bufptr++) {
if (bufptr[0] == 'e' && bufptr[1] == 'n' && bufptr[2] == 'd' &&
- bufptr[3] == 'c' && bufptr[4] == 'm' && bufptr[5] == 'd' &&
- bufptr[6] == '\n') {
+ bufptr[3] == 'c' && bufptr[4] == 'm' && bufptr[5] == 'd' && bufptr[6] == '\n') {
full_command = 1;
bufptr += strlen("endcmd\n") - 1;
break;
@@ -397,8 +395,7 @@ static HYD_status handle_pmi_response(int fd, struct HYD_pmcd_hdr hdr)
}
if (HYD_pmcd_pmip.user_global.debug) {
- HYDU_dump(stdout, "we don't understand the response %s; forwarding downstream\n",
- pmi_cmd);
+ HYDU_dump(stdout, "we don't understand the response %s; forwarding downstream\n", pmi_cmd);
}
status = HYDU_sock_write(hdr.pid, buf, hdr.buflen, &sent, &closed, HYDU_SOCK_COMM_MSGWAIT);
@@ -515,8 +512,7 @@ static HYD_status launch_procs(void)
status = HYDT_topo_init(HYD_pmcd_pmip.user_global.topolib,
HYD_pmcd_pmip.user_global.binding,
- HYD_pmcd_pmip.user_global.mapping,
- HYD_pmcd_pmip.user_global.membind);
+ HYD_pmcd_pmip.user_global.mapping, HYD_pmcd_pmip.user_global.membind);
HYDU_ERR_POP(status, "unable to initialize process topology\n");
status = HYDT_ckpoint_init(HYD_pmcd_pmip.user_global.ckpointlib,
@@ -526,8 +522,7 @@ static HYD_status launch_procs(void)
if (HYD_pmcd_pmip.user_global.ckpoint_prefix) {
using_pmi_port = 1;
status = HYDU_sock_create_and_listen_portstr(HYD_pmcd_pmip.user_global.iface,
- NULL, NULL, &pmi_port, pmi_listen_cb,
- NULL);
+ NULL, NULL, &pmi_port, pmi_listen_cb, NULL);
HYDU_ERR_POP(status, "unable to create PMI port\n");
}
@@ -587,15 +582,13 @@ static HYD_status launch_procs(void)
if (exec->env_prop)
list = HYDU_strdup(exec->env_prop + strlen("list:"));
else
- list = HYDU_strdup(HYD_pmcd_pmip.user_global.global_env.prop +
- strlen("list:"));
+ list = HYDU_strdup(HYD_pmcd_pmip.user_global.global_env.prop + strlen("list:"));
envstr = strtok(list, ",");
while (envstr) {
env = HYDU_env_lookup(envstr, HYD_pmcd_pmip.user_global.global_env.inherited);
if (env) {
- status = HYDU_append_env_to_list(env->env_name, env->env_value,
- &force_env);
+ status = HYDU_append_env_to_list(env->env_name, env->env_value, &force_env);
HYDU_ERR_POP(status, "unable to add env to list\n");
}
envstr = strtok(NULL, ",");
@@ -700,8 +693,7 @@ static HYD_status launch_procs(void)
&HYD_pmcd_pmip.downstream.in,
&HYD_pmcd_pmip.downstream.out[process_id],
&HYD_pmcd_pmip.downstream.err[process_id],
- &HYD_pmcd_pmip.downstream.pid[process_id],
- process_id);
+ &HYD_pmcd_pmip.downstream.pid[process_id], process_id);
HYDU_ERR_POP(status, "create process returned error\n");
if (HYD_pmcd_pmip.downstream.in != HYD_FD_UNSET) {
@@ -829,23 +821,20 @@ static HYD_status procinfo(int fd)
/* Read information about the application to launch into a string
* array and call parse_exec_params() to interpret it and load it into
* the proxy handle. */
- status = HYDU_sock_read(fd, &num_strings, sizeof(int), &recvd, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, &num_strings, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data from upstream\n");
HYDU_ASSERT(!closed, status);
HYDU_MALLOC(arglist, char **, (num_strings + 1) * sizeof(char *), status);
for (i = 0; i < num_strings; i++) {
- status = HYDU_sock_read(fd, &str_len, sizeof(int), &recvd, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, &str_len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data from upstream\n");
HYDU_ASSERT(!closed, status);
HYDU_MALLOC(arglist[i], char *, str_len, status);
- status = HYDU_sock_read(fd, arglist[i], str_len, &recvd, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, arglist[i], str_len, &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data from upstream\n");
HYDU_ASSERT(!closed, status);
}
@@ -921,8 +910,7 @@ HYD_status HYD_pmcd_pmip_control_cmd_cb(int fd, HYD_event_t events, void *userp)
HYDU_MALLOC(buf, char *, hdr.buflen, status);
HYDU_ERR_POP(status, "unable to allocate memory\n");
- status = HYDU_sock_read(fd, buf, hdr.buflen, &count, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, buf, hdr.buflen, &count, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "unable to read from control socket\n");
HYDU_ASSERT(!closed, status);
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
index 7269176..b23ff65 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
@@ -195,8 +195,7 @@ static HYD_status fn_initack(int fd, char *args[])
HYDU_ERR_POP(status, "unable to convert args to tokens\n");
val = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "pmiid");
- HYDU_ERR_CHKANDJUMP(status, val == NULL, HYD_INTERNAL_ERROR,
- "unable to find pmiid token\n");
+ HYDU_ERR_CHKANDJUMP(status, val == NULL, HYD_INTERNAL_ERROR, "unable to find pmiid token\n");
id = atoi(val);
/* Store the PMI_ID to fd mapping */
@@ -385,8 +384,7 @@ static HYD_status fn_get(int fd, char *args[])
HYDU_ERR_POP(status, "unable to convert args to tokens\n");
key = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "key");
- HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR,
- "unable to find token: key\n");
+ HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR, "unable to find token: key\n");
if (!strcmp(key, "PMI_process_mapping")) {
HYD_STRING_STASH_INIT(stash);
@@ -454,8 +452,7 @@ static HYD_status fn_put(int fd, char *args[])
HYDU_ERR_POP(status, "unable to convert args to tokens\n");
key = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "key");
- HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR,
- "unable to find token: key\n");
+ HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR, "unable to find token: key\n");
val = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "value");
if (val == NULL)
@@ -500,8 +497,10 @@ static HYD_status fn_keyval_cache(int fd, char *args[])
/* allocate a larger space for the cached keyvals, copy over the
* older keyvals and add the new ones in */
- HYDU_REALLOC(cache_get.key, char **, (cache_get.keyval_len + token_count) * sizeof(char *), status);
- HYDU_REALLOC(cache_get.val, char **, (cache_get.keyval_len + token_count) * sizeof(char *), status);
+ HYDU_REALLOC(cache_get.key, char **, (cache_get.keyval_len + token_count) * sizeof(char *),
+ status);
+ HYDU_REALLOC(cache_get.val, char **, (cache_get.keyval_len + token_count) * sizeof(char *),
+ status);
for (i = 0; i < token_count; i++) {
cache_get.key[cache_get.keyval_len + i] = HYDU_strdup(tokens[i].key);
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
index 8d2c66d..d2958c7 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
@@ -269,8 +269,7 @@ static HYD_status fn_info_putnodeattr(int fd, char *args[])
HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR, "unable to find key token\n");
val = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "value");
- HYDU_ERR_CHKANDJUMP(status, val == NULL, HYD_INTERNAL_ERROR,
- "unable to find value token\n");
+ HYDU_ERR_CHKANDJUMP(status, val == NULL, HYD_INTERNAL_ERROR, "unable to find value token\n");
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
@@ -406,8 +405,7 @@ static HYD_status fn_info_getjobattr(int fd, char *args[])
HYDU_ERR_POP(status, "unable to convert args to tokens\n");
key = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "key");
- HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR,
- "unable to find token: key\n");
+ HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR, "unable to find token: key\n");
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
diff --git a/src/pm/hydra/pm/pmiserv/pmip_utils.c b/src/pm/hydra/pm/pmiserv/pmip_utils.c
index 876c412..d612416 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_utils.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_utils.c
@@ -436,8 +436,7 @@ static HYD_status global_process_count_fn(char *arg, char ***argv)
{
HYD_status status = HYD_SUCCESS;
- status = HYDU_set_int(arg, &HYD_pmcd_pmip.system_global.global_process_count,
- atoi(**argv));
+ status = HYDU_set_int(arg, &HYD_pmcd_pmip.system_global.global_process_count, atoi(**argv));
(*argv)++;
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_cb.c b/src/pm/hydra/pm/pmiserv/pmiserv_cb.c
index 0328f28..473ee0d 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_cb.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_cb.c
@@ -100,8 +100,7 @@ static HYD_status cleanup_proxy(struct HYD_proxy *proxy)
goto fn_exit;
/* If the PMI listen fd has been initialized, deregister it */
- if (pg_scratch->pmi_listen_fd != HYD_FD_UNSET &&
- pg_scratch->pmi_listen_fd != HYD_FD_CLOSED) {
+ if (pg_scratch->pmi_listen_fd != HYD_FD_UNSET && pg_scratch->pmi_listen_fd != HYD_FD_CLOSED) {
status = HYDT_dmx_deregister_fd(pg_scratch->pmi_listen_fd);
HYDU_ERR_POP(status, "unable to deregister PMI listen fd\n");
close(pg_scratch->pmi_listen_fd);
@@ -196,8 +195,7 @@ static HYD_status control_cb(int fd, HYD_event_t events, void *userp)
hdr.cmd = STDIN;
}
else {
- status =
- HYDU_sock_read(fd, &hdr, sizeof(hdr), &count, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, &hdr, sizeof(hdr), &count, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "unable to read command from proxy\n");
HYDU_ASSERT(!closed, status);
}
@@ -226,8 +224,7 @@ static HYD_status control_cb(int fd, HYD_event_t events, void *userp)
HYDU_ERR_POP(status, "debugger setup failed\n");
}
else if (hdr.cmd == EXIT_STATUS) {
- HYDU_MALLOC(proxy->exit_status, int *, proxy->proxy_process_count * sizeof(int),
- status);
+ HYDU_MALLOC(proxy->exit_status, int *, proxy->proxy_process_count * sizeof(int), status);
status =
HYDU_sock_read(fd, (void *) proxy->exit_status,
proxy->proxy_process_count * sizeof(int), &count, &closed,
@@ -256,8 +253,7 @@ static HYD_status control_cb(int fd, HYD_event_t events, void *userp)
(stdout, "= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES\n");
HYDU_dump_noprefix(stdout, "= EXIT CODE: %d\n", code);
HYDU_dump_noprefix(stdout, "= CLEANING UP REMAINING PROCESSES\n");
- HYDU_dump_noprefix(stdout,
- "= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES\n");
+ HYDU_dump_noprefix(stdout, "= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES\n");
HYDU_dump_noprefix(stdout,
"==================================================");
HYDU_dump_noprefix(stdout, "=================================\n");
@@ -291,11 +287,9 @@ static HYD_status control_cb(int fd, HYD_event_t events, void *userp)
HYDU_ASSERT(!closed, status);
if (hdr.cmd == STDOUT)
- status =
- HYD_server_info.stdout_cb(hdr.pgid, hdr.proxy_id, hdr.rank, buf, hdr.buflen);
+ status = HYD_server_info.stdout_cb(hdr.pgid, hdr.proxy_id, hdr.rank, buf, hdr.buflen);
else
- status =
- HYD_server_info.stderr_cb(hdr.pgid, hdr.proxy_id, hdr.rank, buf, hdr.buflen);
+ status = HYD_server_info.stderr_cb(hdr.pgid, hdr.proxy_id, hdr.rank, buf, hdr.buflen);
HYDU_ERR_POP(status, "error in the UI defined callback\n");
HYDU_FREE(buf);
@@ -304,8 +298,7 @@ static HYD_status control_cb(int fd, HYD_event_t events, void *userp)
HYDU_MALLOC(buf, char *, HYD_TMPBUF_SIZE, status);
HYDU_ERR_POP(status, "unable to allocate memory\n");
- HYDU_sock_read(STDIN_FILENO, buf, HYD_TMPBUF_SIZE, &count, &closed,
- HYDU_SOCK_COMM_NONE);
+ HYDU_sock_read(STDIN_FILENO, buf, HYD_TMPBUF_SIZE, &count, &closed, HYDU_SOCK_COMM_NONE);
HYDU_ERR_POP(status, "error reading from stdin\n");
hdr.buflen = count;
@@ -403,8 +396,7 @@ static HYD_status control_cb(int fd, HYD_event_t events, void *userp)
list = e;
}
else {
- for (tmp = list; tmp->next && tmp->next->start < hdr.pid;
- tmp = tmp->next);
+ for (tmp = list; tmp->next && tmp->next->start < hdr.pid; tmp = tmp->next);
e->next = tmp->next;
tmp->next = e;
}
@@ -428,8 +420,7 @@ static HYD_status control_cb(int fd, HYD_event_t events, void *userp)
if (e->start == e->end)
HYDU_snprintf(run, PMI_MAXVALLEN, "%s,%d", str, e->start);
else
- HYDU_snprintf(run, PMI_MAXVALLEN, "%s,%d-%d", str, e->start,
- e->end);
+ HYDU_snprintf(run, PMI_MAXVALLEN, "%s,%d-%d", str, e->start, e->end);
}
else {
if (e->start == e->end)
@@ -446,12 +437,10 @@ static HYD_status control_cb(int fd, HYD_event_t events, void *userp)
for (pg = &HYD_server_info.pg_list; pg; pg = pg->next) {
for (tproxy = pg->proxy_list; tproxy; tproxy = tproxy->next) {
- if (tproxy->control_fd == HYD_FD_UNSET ||
- tproxy->control_fd == HYD_FD_CLOSED)
+ if (tproxy->control_fd == HYD_FD_UNSET || tproxy->control_fd == HYD_FD_CLOSED)
continue;
- if (tproxy->pg->pgid == proxy->pg->pgid &&
- tproxy->proxy_id == proxy->proxy_id)
+ if (tproxy->pg->pgid == proxy->pg->pgid && tproxy->proxy_id == proxy->proxy_id)
continue;
status = HYD_pmcd_pmiserv_send_signal(tproxy, SIGUSR1);
@@ -511,8 +500,7 @@ HYD_status HYD_pmcd_pmiserv_proxy_init_cb(int fd, HYD_event_t events, void *user
pgid = ((int) (size_t) userp);
/* Read the proxy ID */
- status = HYDU_sock_read(fd, &proxy_id, sizeof(int), &count, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, &proxy_id, sizeof(int), &count, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "sock read returned error\n");
HYDU_ASSERT(!closed, status);
@@ -521,8 +509,7 @@ HYD_status HYD_pmcd_pmiserv_proxy_init_cb(int fd, HYD_event_t events, void *user
if (pg->pgid == pgid)
break;
if (!pg)
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "could not find pg with ID %d\n",
- pgid);
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "could not find pg with ID %d\n", pgid);
/* Find the proxy */
for (proxy = pg->proxy_list; proxy; proxy = proxy->next) {
@@ -592,8 +579,7 @@ HYD_status HYD_pmcd_pmiserv_control_listen_cb(int fd, HYD_event_t events, void *
if (pg->pgid == pgid)
break;
if (!pg)
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "could not find pg with ID %d\n",
- pgid);
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "could not find pg with ID %d\n", pgid);
pg_scratch = (struct HYD_pmcd_pmi_pg_scratch *) pg->pg_scratch;
pg_scratch->control_listen_fd = fd;
@@ -602,8 +588,7 @@ HYD_status HYD_pmcd_pmiserv_control_listen_cb(int fd, HYD_event_t events, void *
status = HYDU_sock_accept(fd, &accept_fd);
HYDU_ERR_POP(status, "accept error\n");
- status = HYDT_dmx_register_fd(1, &accept_fd, HYD_POLLIN, userp,
- HYD_pmcd_pmiserv_proxy_init_cb);
+ status = HYDT_dmx_register_fd(1, &accept_fd, HYD_POLLIN, userp, HYD_pmcd_pmiserv_proxy_init_cb);
HYDU_ERR_POP(status, "unable to register fd\n");
fn_exit:
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c
index ff96bd0..87e015c 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c
@@ -125,8 +125,7 @@ HYD_status HYD_pmcd_pmi_publish(char *name, char *port, int *success)
HYDU_ERR_POP(status, "error sending string list\n");
HYD_STRING_STASH_FREE(stash);
- status = HYDU_sock_read(ns_fd, &len, sizeof(int), &recvd, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(ns_fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading from nameserver\n");
HYDU_ASSERT(!closed, status);
@@ -222,8 +221,7 @@ HYD_status HYD_pmcd_pmi_unpublish(char *name, int *success)
HYDU_ERR_POP(status, "error sending string list\n");
HYD_STRING_STASH_FREE(stash);
- status = HYDU_sock_read(ns_fd, &len, sizeof(int), &recvd, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(ns_fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading from nameserver\n");
HYDU_ASSERT(!closed, status);
@@ -296,8 +294,7 @@ HYD_status HYD_pmcd_pmi_lookup(char *name, char **value)
HYDU_ERR_POP(status, "error sending string list\n");
HYD_STRING_STASH_FREE(stash);
- status = HYDU_sock_read(ns_fd, &len, sizeof(int), &recvd, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(ns_fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading from nameserver\n");
HYDU_ASSERT(!closed, status);
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi.h b/src/pm/hydra/pm/pmiserv/pmiserv_pmi.h
index 3f91267..1a3d6ae 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi.h
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi.h
@@ -37,7 +37,7 @@ struct HYD_pmcd_pmi_pg_scratch {
int dead_process_count;
struct HYD_pmcd_pmi_kvs *kvs;
- int keyval_dist_count; /* Number of keyvals distributed */
+ int keyval_dist_count; /* Number of keyvals distributed */
};
struct HYD_pmcd_pmi_publish {
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
index 3e2f51b..b079b7d 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
@@ -488,8 +488,7 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
*/
val = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "ncmds");
- HYDU_ERR_CHKANDJUMP(status, val == NULL, HYD_INTERNAL_ERROR,
- "unable to find token: ncmds\n");
+ HYDU_ERR_CHKANDJUMP(status, val == NULL, HYD_INTERNAL_ERROR, "unable to find token: ncmds\n");
ncmds = atoi(val);
HYDU_MALLOC(segment_list, struct HYD_pmcd_token_segment *,
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
index 7823905..98a9383 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
@@ -411,8 +411,7 @@ HYD_status HYD_pmcd_pmi_fill_in_exec_launch_info(struct HYD_pg *pg)
}
HYD_STRING_STASH(exec_stash, HYDU_strdup("--global-user-env"), status);
- for (i = 0, env = HYD_server_info.user_global.global_env.user; env;
- env = env->next, i++);
+ for (i = 0, env = HYD_server_info.user_global.global_env.user; env; env = env->next, i++);
HYD_STRING_STASH(exec_stash, HYDU_int_to_str(i), status);
for (env = HYD_server_info.user_global.global_env.user; env; env = env->next) {
@@ -425,8 +424,7 @@ HYD_status HYD_pmcd_pmi_fill_in_exec_launch_info(struct HYD_pg *pg)
}
HYD_STRING_STASH(exec_stash, HYDU_strdup("--global-system-env"), status);
- for (i = 0, env = HYD_server_info.user_global.global_env.system; env;
- env = env->next, i++);
+ for (i = 0, env = HYD_server_info.user_global.global_env.system; env; env = env->next, i++);
HYD_STRING_STASH(exec_stash, HYDU_int_to_str(i), status);
for (env = HYD_server_info.user_global.global_env.system; env; env = env->next) {
diff --git a/src/pm/hydra/tools/bootstrap/external/external_common_launch.c b/src/pm/hydra/tools/bootstrap/external/external_common_launch.c
index 9fe1a69..7ad0a54 100644
--- a/src/pm/hydra/tools/bootstrap/external/external_common_launch.c
+++ b/src/pm/hydra/tools/bootstrap/external/external_common_launch.c
@@ -97,15 +97,13 @@ static HYD_status sge_get_path(char **path)
goto fn_exit;
}
-HYD_status HYDT_bscd_common_launch_procs(char **args, struct HYD_proxy *proxy_list,
- int *control_fd)
+HYD_status HYDT_bscd_common_launch_procs(char **args, struct HYD_proxy *proxy_list, int *control_fd)
{
int num_hosts, idx, i, host_idx, fd, exec_idx, offset, lh, len, rc, autofork;
int *pid, *fd_list, *dummy;
int sockpair[2];
struct HYD_proxy *proxy;
- char *targs[HYD_NUM_TMP_STRINGS] = { NULL }, *path = NULL, *extra_arg_list =
- NULL, *extra_arg;
+ char *targs[HYD_NUM_TMP_STRINGS] = { NULL }, *path = NULL, *extra_arg_list = NULL, *extra_arg;
char quoted_exec_string[HYD_TMP_STRLEN], *original_exec_string;
struct HYD_env *env = NULL;
HYD_status status = HYD_SUCCESS;
@@ -199,8 +197,7 @@ HYD_status HYDT_bscd_common_launch_procs(char **args, struct HYD_proxy *proxy_li
HYD_bscu_pid_list = pid;
/* Increase fd list to accommodate these new fds */
- HYDU_MALLOC(fd_list, int *, (HYD_bscu_fd_count + (2 * num_hosts) + 1) * sizeof(int),
- status);
+ HYDU_MALLOC(fd_list, int *, (HYD_bscu_fd_count + (2 * num_hosts) + 1) * sizeof(int), status);
for (i = 0; i < HYD_bscu_fd_count; i++)
fd_list[i] = HYD_bscu_fd_list[i];
HYDU_FREE(HYD_bscu_fd_list);
@@ -223,8 +220,7 @@ HYD_status HYDT_bscd_common_launch_procs(char **args, struct HYD_proxy *proxy_li
len = strlen(proxy->node->user) + strlen("@") + strlen(proxy->node->hostname) + 1;
HYDU_MALLOC(targs[host_idx], char *, len, status);
- MPL_snprintf(targs[host_idx], len, "%s@%s", proxy->node->user,
- proxy->node->hostname);
+ MPL_snprintf(targs[host_idx], len, "%s@%s", proxy->node->user, proxy->node->hostname);
}
/* append proxy ID */
@@ -275,8 +271,7 @@ HYD_status HYDT_bscd_common_launch_procs(char **args, struct HYD_proxy *proxy_li
* to have problems when stdin is closed before they are
* launched. */
if (!strcmp(HYDT_bsci_info.launcher, "ssh") ||
- !strcmp(HYDT_bsci_info.launcher, "rsh") ||
- !strcmp(HYDT_bsci_info.launcher, "sge"))
+ !strcmp(HYDT_bsci_info.launcher, "rsh") || !strcmp(HYDT_bsci_info.launcher, "sge"))
dummy = &fd;
else
dummy = NULL;
diff --git a/src/pm/hydra/tools/bootstrap/external/ll.h b/src/pm/hydra/tools/bootstrap/external/ll.h
index 6196092..9d67453 100644
--- a/src/pm/hydra/tools/bootstrap/external/ll.h
+++ b/src/pm/hydra/tools/bootstrap/external/ll.h
@@ -11,8 +11,7 @@
HYD_status HYDTI_bscd_ll_query_node_count(int *count);
-HYD_status HYDT_bscd_ll_launch_procs(char **args, struct HYD_proxy *proxy_list,
- int *control_fd);
+HYD_status HYDT_bscd_ll_launch_procs(char **args, struct HYD_proxy *proxy_list, int *control_fd);
HYD_status HYDT_bscd_ll_query_proxy_id(int *proxy_id);
HYD_status HYDT_bscd_ll_query_native_int(int *ret);
HYD_status HYDT_bscd_ll_query_node_list(struct HYD_node **node_list);
diff --git a/src/pm/hydra/tools/bootstrap/external/ll_launch.c b/src/pm/hydra/tools/bootstrap/external/ll_launch.c
index 5f200ac..d4dc9c9 100644
--- a/src/pm/hydra/tools/bootstrap/external/ll_launch.c
+++ b/src/pm/hydra/tools/bootstrap/external/ll_launch.c
@@ -12,8 +12,7 @@
static int fd_stdout, fd_stderr;
-HYD_status HYDT_bscd_ll_launch_procs(char **args, struct HYD_proxy *proxy_list,
- int *control_fd)
+HYD_status HYDT_bscd_ll_launch_procs(char **args, struct HYD_proxy *proxy_list, int *control_fd)
{
int idx, i, total_procs, node_count;
int *pid, *fd_list, exec_idx;
diff --git a/src/pm/hydra/tools/bootstrap/external/pbs.h b/src/pm/hydra/tools/bootstrap/external/pbs.h
index 461d142..cc25a8d 100644
--- a/src/pm/hydra/tools/bootstrap/external/pbs.h
+++ b/src/pm/hydra/tools/bootstrap/external/pbs.h
@@ -20,8 +20,7 @@ struct HYDT_bscd_pbs_sys {
extern struct HYDT_bscd_pbs_sys *HYDT_bscd_pbs_sys;
-HYD_status HYDT_bscd_pbs_launch_procs(char **args, struct HYD_proxy *proxy_list,
- int *control_fd);
+HYD_status HYDT_bscd_pbs_launch_procs(char **args, struct HYD_proxy *proxy_list, int *control_fd);
HYD_status HYDT_bscd_pbs_query_env_inherit(const char *env_name, int *ret);
HYD_status HYDT_bscd_pbs_wait_for_completion(int timeout);
HYD_status HYDT_bscd_pbs_launcher_finalize(void);
diff --git a/src/pm/hydra/tools/bootstrap/external/pbs_launch.c b/src/pm/hydra/tools/bootstrap/external/pbs_launch.c
index c97d634..32c6f14 100644
--- a/src/pm/hydra/tools/bootstrap/external/pbs_launch.c
+++ b/src/pm/hydra/tools/bootstrap/external/pbs_launch.c
@@ -35,8 +35,7 @@ static HYD_status find_pbs_node_id(const char *hostname, int *node_id)
goto fn_exit;
}
-HYD_status HYDT_bscd_pbs_launch_procs(char **args, struct HYD_proxy *proxy_list,
- int *control_fd)
+HYD_status HYDT_bscd_pbs_launch_procs(char **args, struct HYD_proxy *proxy_list, int *control_fd)
{
int proxy_count, i, args_count, err, hostid;
struct HYD_proxy *proxy;
@@ -60,8 +59,7 @@ HYD_status HYDT_bscd_pbs_launch_procs(char **args, struct HYD_proxy *proxy_list,
for (args_count = 0; args[args_count]; args_count++)
targs[args_count] = HYDU_strdup(args[args_count]);
- HYDU_MALLOC(HYDT_bscd_pbs_sys->task_id, tm_task_id *, proxy_count * sizeof(tm_task_id),
- status);
+ HYDU_MALLOC(HYDT_bscd_pbs_sys->task_id, tm_task_id *, proxy_count * sizeof(tm_task_id), status);
HYDU_MALLOC(HYDT_bscd_pbs_sys->spawn_events, tm_event_t *,
proxy_count * sizeof(tm_event_t), status);
@@ -72,8 +70,7 @@ HYD_status HYDT_bscd_pbs_launch_procs(char **args, struct HYD_proxy *proxy_list,
for (i = 0, proxy = proxy_list; proxy; proxy = proxy->next, i++) {
if (pbs_node_list) {
status = find_pbs_node_id(proxy->node->hostname, &hostid);
- HYDU_ERR_POP(status, "error finding PBS node ID for host %s\n",
- proxy->node->hostname);
+ HYDU_ERR_POP(status, "error finding PBS node ID for host %s\n", proxy->node->hostname);
}
targs[args_count] = HYDU_int_to_str(i);
diff --git a/src/pm/hydra/tools/bootstrap/external/pbs_wait.c b/src/pm/hydra/tools/bootstrap/external/pbs_wait.c
index aeb08c9..f4fe2ad 100644
--- a/src/pm/hydra/tools/bootstrap/external/pbs_wait.c
+++ b/src/pm/hydra/tools/bootstrap/external/pbs_wait.c
@@ -42,8 +42,7 @@ HYD_status HYDT_bscd_pbs_wait_for_completion(int timeout)
if (HYDT_bscd_pbs_sys->spawn_events[idx] == e) {
/* got a spawn event (task_id[idx] is now valid);
* register this task for a termination event */
- err = tm_obit(HYDT_bscd_pbs_sys->task_id[idx], &taskobits[idx],
- &obit_events[idx]);
+ err = tm_obit(HYDT_bscd_pbs_sys->task_id[idx], &taskobits[idx], &obit_events[idx]);
HYDU_ERR_CHKANDJUMP(status, err != TM_SUCCESS, HYD_INTERNAL_ERROR,
"tm_obit() failed with TM error %d\n", err);
spawn_count--;
diff --git a/src/pm/hydra/tools/bootstrap/external/slurm.h b/src/pm/hydra/tools/bootstrap/external/slurm.h
index 2971378..6b4bd09 100644
--- a/src/pm/hydra/tools/bootstrap/external/slurm.h
+++ b/src/pm/hydra/tools/bootstrap/external/slurm.h
@@ -9,8 +9,7 @@
#include "hydra.h"
-HYD_status HYDT_bscd_slurm_launch_procs(char **args, struct HYD_proxy *proxy_list,
- int *control_fd);
+HYD_status HYDT_bscd_slurm_launch_procs(char **args, struct HYD_proxy *proxy_list, int *control_fd);
HYD_status HYDT_bscd_slurm_query_proxy_id(int *proxy_id);
HYD_status HYDT_bscd_slurm_query_native_int(int *ret);
HYD_status HYDT_bscd_slurm_query_node_list(struct HYD_node **node_list);
diff --git a/src/pm/hydra/tools/bootstrap/external/slurm_launch.c b/src/pm/hydra/tools/bootstrap/external/slurm_launch.c
index 6a55df2..682fa22 100644
--- a/src/pm/hydra/tools/bootstrap/external/slurm_launch.c
+++ b/src/pm/hydra/tools/bootstrap/external/slurm_launch.c
@@ -59,8 +59,7 @@ static HYD_status proxy_list_to_node_str(struct HYD_proxy *proxy_list, char **no
goto fn_exit;
}
-HYD_status HYDT_bscd_slurm_launch_procs(char **args, struct HYD_proxy *proxy_list,
- int *control_fd)
+HYD_status HYDT_bscd_slurm_launch_procs(char **args, struct HYD_proxy *proxy_list, int *control_fd)
{
int num_hosts, idx, i;
int *pid, *fd_list;
diff --git a/src/pm/hydra/tools/bootstrap/persist/persist_launch.c b/src/pm/hydra/tools/bootstrap/persist/persist_launch.c
index 47ddab3..c2faae4 100644
--- a/src/pm/hydra/tools/bootstrap/persist/persist_launch.c
+++ b/src/pm/hydra/tools/bootstrap/persist/persist_launch.c
@@ -31,15 +31,13 @@ static HYD_status persist_cb(int fd, HYD_event_t events, void *userp)
HYDU_ASSERT(!closed, status);
if (hdr.io_type == HYDT_PERSIST_STDOUT) {
- HYDU_sock_write(STDOUT_FILENO, buf, hdr.buflen, &sent, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ HYDU_sock_write(STDOUT_FILENO, buf, hdr.buflen, &sent, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "stdout forwarding error\n");
HYDU_ASSERT(!closed, status);
HYDU_ASSERT(sent == hdr.buflen, status);
}
else {
- HYDU_sock_write(STDERR_FILENO, buf, hdr.buflen, &sent, &closed,
- HYDU_SOCK_COMM_MSGWAIT);
+ HYDU_sock_write(STDERR_FILENO, buf, hdr.buflen, &sent, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "stderr forwarding error\n");
HYDU_ASSERT(!closed, status);
HYDU_ASSERT(sent == hdr.buflen, status);
diff --git a/src/pm/hydra/tools/bootstrap/persist/persist_server.c b/src/pm/hydra/tools/bootstrap/persist/persist_server.c
index 8f78e86..0561b5e 100644
--- a/src/pm/hydra/tools/bootstrap/persist/persist_server.c
+++ b/src/pm/hydra/tools/bootstrap/persist/persist_server.c
@@ -99,8 +99,7 @@ static HYD_status stdio_cb(int fd, HYD_event_t events, void *userp)
}
else {
status = HYDT_dmx_deregister_fd(private.stdout_fd);
- HYDU_ERR_SETANDJUMP(status, status, "error deregistering fd %d\n",
- private.stdout_fd);
+ HYDU_ERR_SETANDJUMP(status, status, "error deregistering fd %d\n", private.stdout_fd);
close(private.stdout_fd);
}
}
@@ -130,8 +129,7 @@ static HYD_status stdio_cb(int fd, HYD_event_t events, void *userp)
}
else {
status = HYDT_dmx_deregister_fd(private.stderr_fd);
- HYDU_ERR_SETANDJUMP(status, status, "error deregistering fd %d\n",
- private.stderr_fd);
+ HYDU_ERR_SETANDJUMP(status, status, "error deregistering fd %d\n", private.stderr_fd);
close(private.stderr_fd);
}
}
@@ -162,8 +160,7 @@ static HYD_status listen_cb(int fd, HYD_event_t events, void *userp)
/* fork and let the slave process handle this connection */
private.slave_pid = fork();
- HYDU_ERR_CHKANDJUMP(status, private.slave_pid < 0, HYD_INTERNAL_ERROR,
- "fork failed\n");
+ HYDU_ERR_CHKANDJUMP(status, private.slave_pid < 0, HYD_INTERNAL_ERROR, "fork failed\n");
if (private.slave_pid > 0) { /* master process */
close(private.client_fd); /* the slave process will handle this */
diff --git a/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in b/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in
index 4aae377..abbd61e 100644
--- a/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in
+++ b/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in
@@ -177,8 +177,7 @@ HYD_status HYDT_bsci_init(const char *user_rmk, const char *user_launcher,
/* This function is mandatory */
if (HYDT_bsci_fns.launch_procs == NULL)
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
- "mandatory launch function undefined\n");
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "mandatory launch function undefined\n");
fn_exit:
HYDU_FUNC_EXIT();
diff --git a/src/pm/hydra/tools/ckpoint/blcr/ckpoint_blcr.c b/src/pm/hydra/tools/ckpoint/blcr/ckpoint_blcr.c
index 4dfa679..4da436c 100644
--- a/src/pm/hydra/tools/ckpoint/blcr/ckpoint_blcr.c
+++ b/src/pm/hydra/tools/ckpoint/blcr/ckpoint_blcr.c
@@ -92,12 +92,10 @@ static HYD_status create_stdinouterr_sock(int *port)
sin.sin_port = htons(0);
ret = bind(listen_fd, (struct sockaddr *) &sin, sizeof(sin));
- HYDU_ERR_CHKANDJUMP(status, ret, HYD_INTERNAL_ERROR, "bind() failed, %s\n",
- strerror(errno));
+ HYDU_ERR_CHKANDJUMP(status, ret, HYD_INTERNAL_ERROR, "bind() failed, %s\n", strerror(errno));
ret = listen(listen_fd, SOMAXCONN);
- HYDU_ERR_CHKANDJUMP(status, ret, HYD_INTERNAL_ERROR, "listen() failed, %s\n",
- strerror(errno));
+ HYDU_ERR_CHKANDJUMP(status, ret, HYD_INTERNAL_ERROR, "listen() failed, %s\n", strerror(errno));
len = sizeof(sin);
ret = getsockname(listen_fd, (struct sockaddr *) &sin, &len);
@@ -222,16 +220,14 @@ HYD_status HYDT_ckpoint_blcr_checkpoint(const char *prefix, int pgid, int id, in
HYDU_FUNC_ENTER();
/* build the checkpoint filename */
- MPL_snprintf(filename, sizeof(filename), "%s/context-num%d-%d-%d", prefix, ckpt_num, pgid,
- id);
+ MPL_snprintf(filename, sizeof(filename), "%s/context-num%d-%d-%d", prefix, ckpt_num, pgid, id);
/* remove existing checkpoint file, if any */
(void) unlink(filename);
/* open the checkpoint file */
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC /* | O_LARGEFILE */ , 0600);
- HYDU_ERR_CHKANDJUMP(status, fd < 0, HYD_INTERNAL_ERROR, "open failed: %s\n",
- strerror(errno));
+ HYDU_ERR_CHKANDJUMP(status, fd < 0, HYD_INTERNAL_ERROR, "open failed: %s\n", strerror(errno));
cr_initialize_checkpoint_args_t(&my_args);
my_args.cr_fd = fd;
@@ -272,8 +268,7 @@ HYD_status HYDT_ckpoint_blcr_checkpoint(const char *prefix, int pgid, int id, in
}
ret = close(my_args.cr_fd);
- HYDU_ERR_CHKANDJUMP(status, ret, HYD_INTERNAL_ERROR, "close failed, %s\n",
- strerror(errno));
+ HYDU_ERR_CHKANDJUMP(status, ret, HYD_INTERNAL_ERROR, "close failed, %s\n", strerror(errno));
fn_exit:
HYDU_FUNC_EXIT();
@@ -312,8 +307,7 @@ HYD_status HYDT_ckpoint_blcr_restart(const char *prefix, int pgid, int id, int c
HYDU_ERR_POP(status, "blcr restart\n");
/* open the checkpoint file */
- MPL_snprintf(filename, sizeof(filename), "%s/context-num%d-%d-%d", prefix, ckpt_num, pgid,
- id);
+ MPL_snprintf(filename, sizeof(filename), "%s/context-num%d-%d-%d", prefix, ckpt_num, pgid, id);
context_fd = open(filename, O_RDONLY /* | O_LARGEFILE */);
HYDU_ERR_CHKANDJUMP(status, context_fd < 0, HYD_INTERNAL_ERROR, "open failed, %s\n",
strerror(errno));
@@ -329,8 +323,7 @@ HYD_status HYDT_ckpoint_blcr_restart(const char *prefix, int pgid, int id, int c
strerror(errno));
ret = close(context_fd);
- HYDU_ERR_CHKANDJUMP(status, ret, HYD_INTERNAL_ERROR, "close failed, %s\n",
- strerror(errno));
+ HYDU_ERR_CHKANDJUMP(status, ret, HYD_INTERNAL_ERROR, "close failed, %s\n", strerror(errno));
/* get fds for stdin/out/err sockets, and get pids of restarted processes */
status = wait_for_stdinouterr_sockets(num_ranks, ranks, in, out, err, pid);
diff --git a/src/pm/hydra/tools/ckpoint/ckpoint.c b/src/pm/hydra/tools/ckpoint/ckpoint.c
index 3fef2a4..b730bd3 100644
--- a/src/pm/hydra/tools/ckpoint/ckpoint.c
+++ b/src/pm/hydra/tools/ckpoint/ckpoint.c
@@ -29,8 +29,7 @@ HYD_status HYDT_ckpoint_init(const char *user_ckpointlib, int user_ckpoint_num)
if (user_ckpointlib)
HYDT_ckpoint_info.ckpointlib = user_ckpointlib;
- else if (MPL_env2str("HYDRA_CKPOINTLIB", (const char **) &HYDT_ckpoint_info.ckpointlib) ==
- 0)
+ else if (MPL_env2str("HYDRA_CKPOINTLIB", (const char **) &HYDT_ckpoint_info.ckpointlib) == 0)
HYDT_ckpoint_info.ckpointlib = HYDRA_DEFAULT_CKPOINTLIB;
/* If there is no default checkpointlib, we bail out */
@@ -114,8 +113,7 @@ HYD_status HYDT_ckpoint_checkpoint(int pgid, int id, const char *user_ckpoint_pr
* join with it to free resources */
if (in_ckpt == HYDT_CKPOINT_FINISHED) {
ret = pthread_join(thread, NULL);
- HYDU_ERR_CHKANDJUMP(status, ret, HYD_FAILURE, "pthread_join failed: %s.",
- strerror(ret));
+ HYDU_ERR_CHKANDJUMP(status, ret, HYD_FAILURE, "pthread_join failed: %s.", strerror(ret));
}
/* set state, and start the thread to do the checkpoint */
diff --git a/src/pm/hydra/tools/demux/demux.c b/src/pm/hydra/tools/demux/demux.c
index fbda54c..de72774 100644
--- a/src/pm/hydra/tools/demux/demux.c
+++ b/src/pm/hydra/tools/demux/demux.c
@@ -76,8 +76,7 @@ HYD_status HYDT_dmx_init(char **demux)
}
HYD_status HYDT_dmx_register_fd(int num_fds, int *fd, HYD_event_t events, void *userp,
- HYD_status(*callback) (int fd, HYD_event_t events,
- void *userp))
+ HYD_status(*callback) (int fd, HYD_event_t events, void *userp))
{
struct HYDT_dmxu_callback *cb_element, *run;
#if defined HAVE_ERROR_CHECKING
@@ -107,8 +106,7 @@ HYD_status HYDT_dmx_register_fd(int num_fds, int *fd, HYD_event_t events, void *
}
#endif /* HAVE_ERROR_CHECKING */
- HYDU_MALLOC(cb_element, struct HYDT_dmxu_callback *, sizeof(struct HYDT_dmxu_callback),
- status);
+ HYDU_MALLOC(cb_element, struct HYDT_dmxu_callback *, sizeof(struct HYDT_dmxu_callback), status);
cb_element->num_fds = num_fds;
HYDU_MALLOC(cb_element->fd, int *, num_fds * sizeof(int), status);
memcpy(cb_element->fd, fd, num_fds * sizeof(int));
@@ -158,8 +156,7 @@ HYD_status HYDT_dmx_deregister_fd(int fd)
}
/* FD is not found */
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
- "could not find fd to deregister: %d\n", fd);
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "could not find fd to deregister: %d\n", fd);
fn_exit:
HYDU_FUNC_EXIT();
diff --git a/src/pm/hydra/tools/demux/demux.h b/src/pm/hydra/tools/demux/demux.h
index 736f459..71fcb0e 100644
--- a/src/pm/hydra/tools/demux/demux.h
+++ b/src/pm/hydra/tools/demux/demux.h
@@ -38,8 +38,7 @@ HYD_status HYDT_dmx_init(char **demux);
* event.
*/
HYD_status HYDT_dmx_register_fd(int num_fds, int *fd, HYD_event_t events, void *userp,
- HYD_status(*callback) (int fd, HYD_event_t events,
- void *userp));
+ HYD_status(*callback) (int fd, HYD_event_t events, void *userp));
/**
* \brief HYDT_dmx_deregister_fd - Deregister file descriptor
diff --git a/src/pm/hydra/tools/demux/demux_poll.c b/src/pm/hydra/tools/demux/demux_poll.c
index fd522bd..3b98f9a 100644
--- a/src/pm/hydra/tools/demux/demux_poll.c
+++ b/src/pm/hydra/tools/demux/demux_poll.c
@@ -15,8 +15,7 @@ HYD_status HYDT_dmxu_poll_wait_for_event(int wtime)
HYDU_FUNC_ENTER();
- HYDU_MALLOC(pollfds, struct pollfd *, HYDT_dmxu_num_cb_fds * sizeof(struct pollfd),
- status);
+ HYDU_MALLOC(pollfds, struct pollfd *, HYDT_dmxu_num_cb_fds * sizeof(struct pollfd), status);
for (i = 0, run = HYDT_dmxu_cb_list; run; run = run->next) {
for (j = 0; j < run->num_fds; j++) {
diff --git a/src/pm/hydra/tools/demux/demux_select.c b/src/pm/hydra/tools/demux/demux_select.c
index d9ae11f..13ccc62 100644
--- a/src/pm/hydra/tools/demux/demux_select.c
+++ b/src/pm/hydra/tools/demux/demux_select.c
@@ -51,8 +51,7 @@ HYD_status HYDT_dmxu_select_wait_for_event(int wtime)
status = HYD_SUCCESS;
goto fn_exit;
}
- HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "select error (%s)\n",
- HYDU_strerror(errno));
+ HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "select error (%s)\n", HYDU_strerror(errno));
}
work_done = 0;
diff --git a/src/pm/hydra/tools/nameserver/hydra_nameserver.c b/src/pm/hydra/tools/nameserver/hydra_nameserver.c
index 38361f0..af57689 100644
--- a/src/pm/hydra/tools/nameserver/hydra_nameserver.c
+++ b/src/pm/hydra/tools/nameserver/hydra_nameserver.c
@@ -129,8 +129,7 @@ static HYD_status request_cb(int fd, HYD_event_t events, void *userp)
HYDU_FUNC_ENTER();
- status =
- HYDU_sock_read(fd, &list_len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, &list_len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data\n");
if (closed) {
@@ -151,25 +150,21 @@ static HYD_status request_cb(int fd, HYD_event_t events, void *userp)
if (!strcmp(cmd, "PUBLISH")) {
HYDU_MALLOC(publish, struct HYDT_ns_publish *, sizeof(struct HYDT_ns_publish), status);
- status =
- HYDU_sock_read(fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data\n");
HYDU_ASSERT(!closed, status);
HYDU_MALLOC(publish->name, char *, len + 1, status);
- status =
- HYDU_sock_read(fd, publish->name, len, &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, publish->name, len, &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data\n");
HYDU_ASSERT(!closed, status);
- status =
- HYDU_sock_read(fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data\n");
HYDU_ASSERT(!closed, status);
HYDU_MALLOC(publish->info, char *, len + 1, status);
- status =
- HYDU_sock_read(fd, publish->info, len, &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, publish->info, len, &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data\n");
HYDU_ASSERT(!closed, status);
@@ -198,8 +193,7 @@ static HYD_status request_cb(int fd, HYD_event_t events, void *userp)
}
}
else if (!strcmp(cmd, "UNPUBLISH")) {
- status =
- HYDU_sock_read(fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data\n");
HYDU_ASSERT(!closed, status);
@@ -236,8 +230,7 @@ static HYD_status request_cb(int fd, HYD_event_t events, void *userp)
}
}
else if (!strcmp(cmd, "LOOKUP")) {
- status =
- HYDU_sock_read(fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_read(fd, &len, sizeof(int), &recvd, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error reading data\n");
HYDU_ASSERT(!closed, status);
diff --git a/src/pm/hydra/tools/topo/hwloc/topo_hwloc.c b/src/pm/hydra/tools/topo/hwloc/topo_hwloc.c
index e0a1455..38da519 100644
--- a/src/pm/hydra/tools/topo/hwloc/topo_hwloc.c
+++ b/src/pm/hydra/tools/topo/hwloc/topo_hwloc.c
@@ -134,8 +134,7 @@ static hwloc_obj_t find_obj_containing_pu(hwloc_obj_type_t type, int idx, int ca
return obj;
}
-static HYD_status get_nbobjs_by_type(hwloc_obj_type_t type, int *nbobjs,
- int *nbobjs_per_parent)
+static HYD_status get_nbobjs_by_type(hwloc_obj_type_t type, int *nbobjs, int *nbobjs_per_parent)
{
int x, nb;
hwloc_obj_type_t parent, t;
@@ -254,8 +253,7 @@ static HYD_status cache_to_cpu_type(int cache_depth, hwloc_obj_type_t * cpu_type
cache_obj->attr->cache.depth != cache_depth)
cache_obj = cache_obj->first_child;
if (cache_obj == NULL) {
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "cache level %d not found\n",
- cache_depth);
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "cache level %d not found\n", cache_depth);
}
cpu_obj = hwloc_get_root_obj(topology);
@@ -436,17 +434,13 @@ static HYD_status handle_bitmap_binding(const char *binding, const char *mapping
if (map_str[i] == 'T')
status = get_nbobjs_by_type(HWLOC_OBJ_PU, &total_nbobjs[i], &nbobjs_per_parent[i]);
else if (map_str[i] == 'C')
- status =
- get_nbobjs_by_type(HWLOC_OBJ_CORE, &total_nbobjs[i], &nbobjs_per_parent[i]);
+ status = get_nbobjs_by_type(HWLOC_OBJ_CORE, &total_nbobjs[i], &nbobjs_per_parent[i]);
else if (map_str[i] == 'S')
- status =
- get_nbobjs_by_type(HWLOC_OBJ_SOCKET, &total_nbobjs[i], &nbobjs_per_parent[i]);
+ status = get_nbobjs_by_type(HWLOC_OBJ_SOCKET, &total_nbobjs[i], &nbobjs_per_parent[i]);
else if (map_str[i] == 'N')
- status =
- get_nbobjs_by_type(HWLOC_OBJ_NODE, &total_nbobjs[i], &nbobjs_per_parent[i]);
+ status = get_nbobjs_by_type(HWLOC_OBJ_NODE, &total_nbobjs[i], &nbobjs_per_parent[i]);
else if (map_str[i] == 'B')
- status =
- get_nbobjs_by_type(HWLOC_OBJ_MACHINE, &total_nbobjs[i], &nbobjs_per_parent[i]);
+ status = get_nbobjs_by_type(HWLOC_OBJ_MACHINE, &total_nbobjs[i], &nbobjs_per_parent[i]);
HYDU_ERR_POP(status, "unable to get number of objects\n");
nbpu_per_obj[i] = HYDT_topo_hwloc_info.num_bitmaps / total_nbobjs[i];
@@ -564,8 +558,7 @@ HYD_status HYDT_topo_hwloc_bind(int idx)
HYDU_FUNC_ENTER();
hwloc_set_cpubind(topology, HYDT_topo_hwloc_info.bitmap[id], 0);
- hwloc_set_membind(topology, HYDT_topo_hwloc_info.bitmap[id],
- HYDT_topo_hwloc_info.membind, 0);
+ hwloc_set_membind(topology, HYDT_topo_hwloc_info.bitmap[id], HYDT_topo_hwloc_info.membind, 0);
HYDU_FUNC_EXIT();
return status;
diff --git a/src/pm/hydra/ui/mpich/mpiexec.c b/src/pm/hydra/ui/mpich/mpiexec.c
index 83fbcfa..653d3cd 100644
--- a/src/pm/hydra/ui/mpich/mpiexec.c
+++ b/src/pm/hydra/ui/mpich/mpiexec.c
@@ -102,7 +102,7 @@ static HYD_status qsort_node_list(void)
HYD_status status = HYD_SUCCESS;
for (count = 0, node = HYD_server_info.node_list; node; node = node->next, count++)
- /* skip */;
+ /* skip */ ;
HYDU_MALLOC(node_list, struct HYD_node **, count * sizeof(struct HYD_node *), status);
for (i = 0, node = HYD_server_info.node_list; node; node = node->next, i++)
diff --git a/src/pm/hydra/ui/mpich/utils.c b/src/pm/hydra/ui/mpich/utils.c
index 65eb3e0..a84d9da 100644
--- a/src/pm/hydra/ui/mpich/utils.c
+++ b/src/pm/hydra/ui/mpich/utils.c
@@ -57,8 +57,7 @@ static void help_help_fn(void)
printf(" -genv {name} {value} environment variable name and value\n");
printf(" -genvlist {env1,env2,...} environment variable list to pass\n");
printf(" -genvnone do not pass any environment variables\n");
- printf
- (" -genvall pass all environment variables not managed\n");
+ printf(" -genvall pass all environment variables not managed\n");
printf(" by the launcher (default)\n");
printf("\n");
@@ -66,8 +65,7 @@ static void help_help_fn(void)
printf(" -f {name} file containing the host names\n");
printf(" -hosts {host list} comma separated host list\n");
printf(" -wdir {dirname} working directory to use\n");
- printf
- (" -configfile {name} config file containing MPMD launch options\n");
+ printf(" -configfile {name} config file containing MPMD launch options\n");
printf("\n");
printf("\n");
@@ -121,8 +119,7 @@ static void help_help_fn(void)
printf("\n");
printf(" Demux engine options:\n");
- printf(" -demux demux engine (%s)\n",
- HYDRA_AVAILABLE_DEMUXES);
+ printf(" -demux demux engine (%s)\n", HYDRA_AVAILABLE_DEMUXES);
printf("\n");
printf(" Other Hydra options:\n");
@@ -136,8 +133,7 @@ static void help_help_fn(void)
printf(" -prepend-pattern prepend pattern to output\n");
printf(" -outfile-pattern direct stdout to file\n");
printf(" -errfile-pattern direct stderr to file\n");
- printf
- (" -nameserver name server information (host:port format)\n");
+ printf(" -nameserver name server information (host:port format)\n");
printf(" -disable-auto-cleanup don't cleanup processes on error\n");
printf(" -disable-hostname-propagation let MPICH auto-detect the hostname\n");
printf(" -order-nodes order nodes as ascending/descending cores\n");
@@ -336,8 +332,7 @@ static HYD_status mfile_fn(char *arg, char ***argv)
"duplicate host file setting\n");
if (strcmp(**argv, "HYDRA_USE_LOCALHOST")) {
- status =
- HYDU_parse_hostfile(**argv, &HYD_server_info.node_list, HYDU_process_mfile_token);
+ status = HYDU_parse_hostfile(**argv, &HYD_server_info.node_list, HYDU_process_mfile_token);
HYDU_ERR_POP(status, "error parsing hostfile\n");
}
else {
@@ -1208,11 +1203,9 @@ static HYD_status info_fn(char *arg, char ***argv)
HYD_status status = HYD_SUCCESS;
HYDU_dump_noprefix(stdout, "HYDRA build details:\n");
+ HYDU_dump_noprefix(stdout, " Version: %s\n", HYDRA_VERSION);
HYDU_dump_noprefix(stdout,
- " Version: %s\n", HYDRA_VERSION);
- HYDU_dump_noprefix(stdout,
- " Release Date: %s\n",
- HYDRA_RELEASE_DATE);
+ " Release Date: %s\n", HYDRA_RELEASE_DATE);
HYDU_dump_noprefix(stdout, " CC: %s\n", HYDRA_CC);
HYDU_dump_noprefix(stdout, " CXX: %s\n", HYDRA_CXX);
HYDU_dump_noprefix(stdout, " F77: %s\n", HYDRA_F77);
@@ -1228,8 +1221,7 @@ static HYD_status info_fn(char *arg, char ***argv)
" Topology libraries available: %s\n",
HYDRA_AVAILABLE_TOPOLIBS);
HYDU_dump_noprefix(stdout,
- " Resource management kernels available: %s\n",
- HYDRA_AVAILABLE_RMKS);
+ " Resource management kernels available: %s\n", HYDRA_AVAILABLE_RMKS);
HYDU_dump_noprefix(stdout,
" Checkpointing libraries available: %s\n",
HYDRA_AVAILABLE_CKPOINTLIBS);
@@ -1366,8 +1358,7 @@ static HYD_status hostname_propagation_fn(char *arg, char ***argv)
goto fn_exit;
}
- status = HYDU_set_int(arg, &hostname_propagation,
- strcmp(arg, "disable-hostname-propagation"));
+ status = HYDU_set_int(arg, &hostname_propagation, strcmp(arg, "disable-hostname-propagation"));
HYDU_ERR_POP(status, "error setting hostname propagation\n");
fn_exit:
@@ -1440,8 +1431,7 @@ static void usize_help_fn(void)
{
printf("\n");
printf("-usize: Universe size (SYSTEM, INFINITE, <value>\n");
- printf
- (" SYSTEM: Number of cores passed to mpiexec through hostfile or resource manager\n");
+ printf(" SYSTEM: Number of cores passed to mpiexec through hostfile or resource manager\n");
printf(" INFINITE: No limit\n");
printf(" <value>: Numeric value >= 0\n\n");
}
@@ -1520,10 +1510,8 @@ static HYD_status set_default_values(void)
tmp = NULL;
}
- if (HYD_server_info.node_list == NULL &&
- MPL_env2str("HYDRA_HOST_FILE", (const char **) &tmp)) {
- status =
- HYDU_parse_hostfile(tmp, &HYD_server_info.node_list, HYDU_process_mfile_token);
+ if (HYD_server_info.node_list == NULL && MPL_env2str("HYDRA_HOST_FILE", (const char **) &tmp)) {
+ status = HYDU_parse_hostfile(tmp, &HYD_server_info.node_list, HYDU_process_mfile_token);
HYDU_ERR_POP(status, "error parsing hostfile\n");
}
diff --git a/src/pm/hydra/utils/alloc/alloc.c b/src/pm/hydra/utils/alloc/alloc.c
index 4c44c71..fa5d429 100644
--- a/src/pm/hydra/utils/alloc/alloc.c
+++ b/src/pm/hydra/utils/alloc/alloc.c
@@ -182,8 +182,7 @@ void HYDU_free_pg_list(struct HYD_pg *pg_list)
}
}
-static HYD_status alloc_proxy(struct HYD_proxy **proxy, struct HYD_pg *pg,
- struct HYD_node *node)
+static HYD_status alloc_proxy(struct HYD_proxy **proxy, struct HYD_pg *pg, struct HYD_node *node)
{
HYD_status status = HYD_SUCCESS;
@@ -298,8 +297,7 @@ void HYDU_free_exec_list(struct HYD_exec *exec_list)
HYDU_FUNC_EXIT();
}
-static HYD_status add_exec_to_proxy(struct HYD_exec *exec, struct HYD_proxy *proxy,
- int num_procs)
+static HYD_status add_exec_to_proxy(struct HYD_exec *exec, struct HYD_proxy *proxy, int num_procs)
{
int i;
struct HYD_exec *texec;
@@ -420,8 +418,7 @@ HYD_status HYDU_create_proxy_list(struct HYD_exec *exec_list, struct HYD_node *n
exec = exec_list;
filler_round = 1;
- for (proxy = pg->proxy_list; proxy && proxy->filler_processes == 0;
- proxy = proxy->next);
+ for (proxy = pg->proxy_list; proxy && proxy->filler_processes == 0; proxy = proxy->next);
if (proxy == NULL) {
filler_round = 0;
proxy = pg->proxy_list;
@@ -448,8 +445,7 @@ HYD_status HYDU_create_proxy_list(struct HYD_exec *exec_list, struct HYD_node *n
proxy = pg->proxy_list;
}
- proxy_rem_cores =
- filler_round ? proxy->filler_processes : proxy->node->core_count;
+ proxy_rem_cores = filler_round ? proxy->filler_processes : proxy->node->core_count;
}
num_procs = (exec_rem_procs > proxy_rem_cores) ? proxy_rem_cores : exec_rem_procs;
diff --git a/src/pm/hydra/utils/args/args.c b/src/pm/hydra/utils/args/args.c
index 6f21887..56a5571 100644
--- a/src/pm/hydra/utils/args/args.c
+++ b/src/pm/hydra/utils/args/args.c
@@ -140,8 +140,7 @@ static HYD_status match_arg(char ***argv_p, struct HYD_arg_match_table *match_ta
if (**argv_p && (!strcmp(**argv_p, "-h") || !strcmp(**argv_p, "-help") ||
!strcmp(**argv_p, "--help"))) {
if (m->help_fn == NULL) {
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
- "No help message available\n");
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "No help message available\n");
}
else {
m->help_fn();
@@ -207,8 +206,7 @@ HYD_status HYDU_set_int(char *arg, int *var, int val)
{
HYD_status status = HYD_SUCCESS;
- HYDU_ERR_CHKANDJUMP(status, *var != -1, HYD_INTERNAL_ERROR,
- "duplicate setting: %s\n", arg);
+ HYDU_ERR_CHKANDJUMP(status, *var != -1, HYD_INTERNAL_ERROR, "duplicate setting: %s\n", arg);
*var = val;
@@ -289,8 +287,7 @@ HYD_status HYDU_process_mfile_token(char *token, int newline, struct HYD_node **
for (node = *node_list; node->next; node = node->next);
if (node->user)
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
- "duplicate username setting\n");
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "duplicate username setting\n");
node->user = HYDU_strdup(user);
}
@@ -319,8 +316,7 @@ HYD_status HYDU_parse_hostfile(const char *hostfile, struct HYD_node **node_list
HYDU_FUNC_ENTER();
if ((fp = fopen(hostfile, "r")) == NULL)
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
- "unable to open host file: %s\n", hostfile);
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "unable to open host file: %s\n", hostfile);
if (node_list)
*node_list = NULL;
@@ -402,8 +398,7 @@ HYD_status HYDU_send_strlist(int fd, char **strlist)
/* Check how many arguments we have */
list_len = HYDU_strlist_lastidx(strlist);
- status =
- HYDU_sock_write(fd, &list_len, sizeof(int), &sent, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_write(fd, &list_len, sizeof(int), &sent, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "unable to write data to proxy\n");
HYDU_ASSERT(!closed, status);
@@ -411,8 +406,7 @@ HYD_status HYDU_send_strlist(int fd, char **strlist)
for (i = 0; strlist[i]; i++) {
len = strlen(strlist[i]) + 1;
- status =
- HYDU_sock_write(fd, &len, sizeof(int), &sent, &closed, HYDU_SOCK_COMM_MSGWAIT);
+ status = HYDU_sock_write(fd, &len, sizeof(int), &sent, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "unable to write data to proxy\n");
HYDU_ASSERT(!closed, status);
diff --git a/src/pm/hydra/utils/dbg/dbg.c b/src/pm/hydra/utils/dbg/dbg.c
index 6572597..49b66d1 100644
--- a/src/pm/hydra/utils/dbg/dbg.c
+++ b/src/pm/hydra/utils/dbg/dbg.c
@@ -19,8 +19,7 @@ HYD_status HYDU_dbg_init(const char *str)
HYDU_ERR_POP(status, "unable to get local host name\n");
HYDU_MALLOC(HYD_dbg_prefix, char *, strlen(hostname) + 1 + strlen(str) + 1, status);
- HYDU_snprintf(HYD_dbg_prefix, strlen(hostname) + 1 + strlen(str) + 1, "%s@%s", str,
- hostname);
+ HYDU_snprintf(HYD_dbg_prefix, strlen(hostname) + 1 + strlen(str) + 1, "%s@%s", str, hostname);
fn_exit:
HYDU_FUNC_EXIT();
diff --git a/src/pm/hydra/utils/env/env.c b/src/pm/hydra/utils/env/env.c
index ec9af6a..be2bec6 100644
--- a/src/pm/hydra/utils/env/env.c
+++ b/src/pm/hydra/utils/env/env.c
@@ -273,8 +273,7 @@ HYD_status HYDU_putenv(struct HYD_env *env, HYD_env_overwrite_t overwrite)
HYDU_FUNC_ENTER();
/* If the overwrite flag is false, just exit */
- if (MPL_env2str(env->env_name, (const char **) &str) &&
- overwrite == HYD_ENV_OVERWRITE_FALSE)
+ if (MPL_env2str(env->env_name, (const char **) &str) && overwrite == HYD_ENV_OVERWRITE_FALSE)
goto fn_exit;
i = 0;
diff --git a/src/pm/hydra/utils/others/others.c b/src/pm/hydra/utils/others/others.c
index 67d72c4..4d0287d 100644
--- a/src/pm/hydra/utils/others/others.c
+++ b/src/pm/hydra/utils/others/others.c
@@ -18,8 +18,7 @@ int HYDU_dceil(int x, int y)
return z + 1;
}
-HYD_status HYDU_add_to_node_list(const char *hostname, int num_procs,
- struct HYD_node ** node_list)
+HYD_status HYDU_add_to_node_list(const char *hostname, int num_procs, struct HYD_node ** node_list)
{
struct HYD_node *node;
HYD_status status = HYD_SUCCESS;
diff --git a/src/pm/hydra/utils/sock/sock.c b/src/pm/hydra/utils/sock/sock.c
index af04cba..6c33727 100644
--- a/src/pm/hydra/utils/sock/sock.c
+++ b/src/pm/hydra/utils/sock/sock.c
@@ -93,8 +93,7 @@ HYD_status HYDU_sock_listen(int *listen_fd, char *port_range, uint16_t * port)
HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "no port to bind\n");
if (listen(*listen_fd, SOMAXCONN) < 0)
- HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "listen error (%s)\n",
- HYDU_strerror(errno));
+ HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "listen error (%s)\n", HYDU_strerror(errno));
/* We asked for any port, so we need to find out which port we
* actually got. */
@@ -136,8 +135,7 @@ HYD_status HYDU_sock_connect(const char *host, uint16_t port, int *fd, int retri
ht = gethostbyname(host);
if (ht == NULL)
HYDU_ERR_SETANDJUMP(status, HYD_INVALID_PARAM,
- "unable to get host address for %s (%s)\n", host,
- HYDU_herror(h_errno));
+ "unable to get host address for %s (%s)\n", host, HYDU_herror(h_errno));
memcpy(&sa.sin_addr, ht->h_addr_list[0], ht->h_length);
/* Create a socket and set the required options */
@@ -196,8 +194,7 @@ HYD_status HYDU_sock_accept(int listen_fd, int *fd)
*fd = accept(listen_fd, 0, 0);
if (*fd < 0)
- HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "accept error (%s)\n",
- HYDU_strerror(errno));
+ HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "accept error (%s)\n", HYDU_strerror(errno));
/* Disable nagle */
if (setsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(int)) < 0)
@@ -239,8 +236,7 @@ HYD_status HYDU_sock_read(int fd, void *buf, int maxlen, int *recvd, int *closed
} while (tmp < 0 && errno == EINTR);
if (tmp < 0) {
- HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "read error (%s)\n",
- HYDU_strerror(errno));
+ HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "read error (%s)\n", HYDU_strerror(errno));
}
else if (tmp == 0) {
*closed = 1;
@@ -287,8 +283,7 @@ HYD_status HYDU_sock_write(int fd, const void *buf, int maxlen, int *sent, int *
*closed = 1;
goto fn_exit;
}
- HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "write error (%s)\n",
- HYDU_strerror(errno));
+ HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "write error (%s)\n", HYDU_strerror(errno));
}
else {
*sent += tmp;
@@ -463,14 +458,12 @@ HYD_status HYDU_sock_get_iface_ip(char *iface, char **ip)
break;
if (!ifa)
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "unable to find interface %s\n",
- iface);
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "unable to find interface %s\n", iface);
sa = (struct sockaddr_in *) ifa->ifa_addr;
#if defined HAVE_INET_NTOP
(*ip) = HYDU_strdup((char *)
- inet_ntop(AF_INET, (const void *) &(sa->sin_addr), buf,
- MAX_HOSTNAME_LEN));
+ inet_ntop(AF_INET, (const void *) &(sa->sin_addr), buf, MAX_HOSTNAME_LEN));
#else
(*ip) = NULL;
#endif /* HAVE_INET_NTOP */
diff --git a/src/pm/hydra/utils/string/string.c b/src/pm/hydra/utils/string/string.c
index 1614374..3f8bf7f 100644
--- a/src/pm/hydra/utils/string/string.c
+++ b/src/pm/hydra/utils/string/string.c
@@ -233,8 +233,7 @@ char **HYDU_str_to_strlist(char *str)
HYDU_MALLOC(strlist, char **, HYD_NUM_TMP_STRINGS * sizeof(char *), status);
if (!strlist)
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
- "Unable to allocate mem for strlist\n");
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "Unable to allocate mem for strlist\n");
for (i = 0; i < HYD_NUM_TMP_STRINGS; i++)
strlist[i] = NULL;
http://git.mpich.org/mpich.git/commitdiff/6a39ab8721cbd4daca1803c186f8d41e9…
commit 6a39ab8721cbd4daca1803c186f8d41e97935f17
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu May 2 22:11:50 2013 -0500
Added new string stash/spit macros.
We have been allocating a "large enough" pool of temporary strings and
hoping that we don't overflow it for our temporary allocations. This
commit provides macros that better check for overflow problems without
making the code too clumsy.
No reviewer.
diff --git a/src/pm/hydra/include/hydra.h b/src/pm/hydra/include/hydra.h
index 491a2e9..31dd1e1 100644
--- a/src/pm/hydra/include/hydra.h
+++ b/src/pm/hydra/include/hydra.h
@@ -173,6 +173,52 @@ int killpg(int pgrp, int sig);
#define HYDRA_NAMESERVER_DEFAULT_PORT 6392
+struct HYD_string_stash {
+ char **strlist;
+ int max_count;
+ int cur_count;
+};
+
+#define HYD_STRING_STASH_INIT(stash) \
+ do { \
+ (stash).strlist = NULL; \
+ (stash).max_count = 0; \
+ (stash).cur_count = 0; \
+ } while (0)
+
+#define HYD_STRING_STASH(stash, str, status) \
+ do { \
+ if ((stash).cur_count >= (stash).max_count - 1) { \
+ HYDU_REALLOC((stash).strlist, char **, (stash).max_count + HYD_NUM_TMP_STRINGS, \
+ (status)); \
+ (stash).max_count += HYD_NUM_TMP_STRINGS; \
+ } \
+ (stash).strlist[(stash).cur_count++] = (str); \
+ (stash).strlist[(stash).cur_count] = NULL; \
+ } while (0)
+
+#define HYD_STRING_SPIT(stash, str, status) \
+ do { \
+ if ((stash).cur_count == 0) { \
+ (str) = HYDU_strdup(""); \
+ } \
+ else { \
+ (status) = HYDU_str_alloc_and_join((stash).strlist, &(str)); \
+ HYDU_ERR_POP((status), "unable to join strings\n"); \
+ HYDU_free_strlist((stash).strlist); \
+ HYDU_FREE((stash).strlist); \
+ HYD_STRING_STASH_INIT((stash)); \
+ } \
+ } while (0)
+
+#define HYD_STRING_STASH_FREE(stash) \
+ do { \
+ HYDU_free_strlist((stash).strlist); \
+ HYDU_FREE((stash).strlist); \
+ (stash).max_count = 0; \
+ (stash).cur_count = 0; \
+ } while (0)
+
enum HYD_bool {
HYD_FALSE = 0,
HYD_TRUE = 1
@@ -618,19 +664,6 @@ HYD_status HYDU_sock_cloexec(int fd);
HYDU_free((void *) p); \
}
-#define HYDU_STRLIST_CONSOLIDATE(strlist, i, status) \
- { \
- char *out; \
- if ((i) >= (HYD_NUM_TMP_STRINGS / 2)) { \
- (strlist)[(i)] = NULL; \
- (status) = HYDU_str_alloc_and_join((strlist), &out); \
- HYDU_ERR_POP((status), "unable to join strings\n"); \
- HYDU_free_strlist((strlist)); \
- strlist[0] = out; \
- (i) = 1; \
- } \
- }
-
HYD_status HYDU_list_append_strlist(char **exec, char **client_arg);
HYD_status HYDU_print_strlist(char **args);
void HYDU_free_strlist(char **args);
diff --git a/src/pm/hydra/pm/pmiserv/pmip_cb.c b/src/pm/hydra/pm/pmiserv/pmip_cb.c
index 8b6710d..e268293 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_cb.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_cb.c
@@ -468,7 +468,7 @@ static HYD_status launch_procs(void)
int i, j, arg, process_id;
int using_pmi_port = 0;
char *str, *envstr, *list, *pmi_port;
- char *client_args[HYD_NUM_TMP_STRINGS];
+ struct HYD_string_stash stash;
struct HYD_env *env, *force_env = NULL;
struct HYD_exec *exec;
struct HYD_pmcd_hdr hdr;
@@ -691,11 +691,11 @@ static HYD_status launch_procs(void)
HYDU_FREE(str);
}
+ HYD_STRING_STASH_INIT(stash);
for (j = 0, arg = 0; exec->exec[j]; j++)
- client_args[arg++] = HYDU_strdup(exec->exec[j]);
- client_args[arg++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup(exec->exec[j]), status);
- status = HYDU_create_process(client_args, force_env,
+ status = HYDU_create_process(stash.strlist, force_env,
HYD_pmcd_pmip.downstream.pmi_rank[process_id] ? NULL :
&HYD_pmcd_pmip.downstream.in,
&HYD_pmcd_pmip.downstream.out[process_id],
@@ -709,7 +709,7 @@ static HYD_status launch_procs(void)
HYDU_ERR_POP(status, "unable to set stdin socket to non-blocking\n");
}
- HYDU_free_strlist(client_args);
+ HYD_STRING_STASH_FREE(stash);
if (pmi_fds[1] != HYD_FD_UNSET) {
close(pmi_fds[1]);
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
index 6c190b8..7269176 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
@@ -183,10 +183,10 @@ static HYD_status fn_init(int fd, char *args[])
static HYD_status fn_initack(int fd, char *args[])
{
int id, i;
- char *val;
+ char *val, *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -209,22 +209,19 @@ static HYD_status fn_initack(int fd, char *args[])
}
HYDU_ASSERT(i < HYD_pmcd_pmip.local.proxy_process_count, status);
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=initack\ncmd=set size=");
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=initack\ncmd=set size="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count),
+ status);
- /* FIXME: allow for multiple ranks per PMI ID */
- tmp[i++] = HYDU_strdup("\ncmd=set rank=");
- tmp[i++] = HYDU_int_to_str(id);
+ HYD_STRING_STASH(stash, HYDU_strdup("\ncmd=set rank="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(id), status);
- tmp[i++] = HYDU_strdup("\ncmd=set debug=");
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.user_global.debug);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("\ncmd=set debug="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.user_global.debug), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "error while joining strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -241,25 +238,22 @@ static HYD_status fn_initack(int fd, char *args[])
static HYD_status fn_get_maxes(int fd, char *args[])
{
- int i;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=maxes kvsname_max=");
- tmp[i++] = HYDU_int_to_str(PMI_MAXKVSLEN);
- tmp[i++] = HYDU_strdup(" keylen_max=");
- tmp[i++] = HYDU_int_to_str(PMI_MAXKEYLEN);
- tmp[i++] = HYDU_strdup(" vallen_max=");
- tmp[i++] = HYDU_int_to_str(PMI_MAXVALLEN);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=maxes kvsname_max="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(PMI_MAXKVSLEN), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(" keylen_max="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(PMI_MAXKEYLEN), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(" vallen_max="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(PMI_MAXVALLEN), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
+
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -277,7 +271,8 @@ static HYD_status fn_get_appnum(int fd, char *args[])
{
int i, idx;
struct HYD_exec *exec;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -296,15 +291,12 @@ static HYD_status fn_get_appnum(int fd, char *args[])
break;
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=appnum appnum=");
- tmp[i++] = HYDU_int_to_str(exec->appnum);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=appnum appnum="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(exec->appnum), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -320,21 +312,18 @@ static HYD_status fn_get_appnum(int fd, char *args[])
static HYD_status fn_get_my_kvsname(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
- int i;
+ struct HYD_string_stash stash;
+ char *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=my_kvsname kvsname=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=my_kvsname kvsname="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -350,26 +339,25 @@ static HYD_status fn_get_my_kvsname(int fd, char *args[])
static HYD_status fn_get_usize(int fd, char *args[])
{
- int i;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=universe_size size=");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=universe_size size="), status);
if (HYD_pmcd_pmip.user_global.usize == HYD_USIZE_SYSTEM)
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_core_map.global_count);
+ HYD_STRING_STASH(stash,
+ HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_core_map.global_count),
+ status);
else if (HYD_pmcd_pmip.user_global.usize == HYD_USIZE_INFINITE)
- tmp[i++] = HYDU_int_to_str(-1);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(-1), status);
else
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.user_global.usize);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.user_global.usize), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -385,7 +373,8 @@ static HYD_status fn_get_usize(int fd, char *args[])
static HYD_status fn_get(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *key, *val;
+ struct HYD_string_stash stash;
+ char *cmd, *key, *val;
struct HYD_pmcd_token *tokens;
int token_count, i;
HYD_status status = HYD_SUCCESS;
@@ -400,15 +389,13 @@ static HYD_status fn_get(int fd, char *args[])
"unable to find token: key\n");
if (!strcmp(key, "PMI_process_mapping")) {
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=get_result rc=0 msg=success value=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=get_result rc=0 msg=success value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping),
+ status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -423,23 +410,20 @@ static HYD_status fn_get(int fd, char *args[])
}
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=get_result rc=");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=get_result rc="), status);
if (val) {
- tmp[i++] = HYDU_strdup("0 msg=success value=");
- tmp[i++] = HYDU_strdup(val);
+ HYD_STRING_STASH(stash, HYDU_strdup("0 msg=success value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
}
else {
- tmp[i++] = HYDU_strdup("-1 msg=key_");
- tmp[i++] = HYDU_strdup(key);
- tmp[i++] = HYDU_strdup("_not_found value=unknown");
+ HYD_STRING_STASH(stash, HYDU_strdup("-1 msg=key_"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(key), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("_not_found value=unknown"), status);
}
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending command downstream\n");
@@ -457,10 +441,11 @@ static HYD_status fn_get(int fd, char *args[])
static HYD_status fn_put(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
char *key, *val;
struct HYD_pmcd_token *tokens;
- int token_count, i;
+ int token_count;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -477,15 +462,12 @@ static HYD_status fn_put(int fd, char *args[])
val = HYDU_strdup("");
/* add to the cache */
- i = 0;
- tmp[i++] = HYDU_strdup(key);
- tmp[i++] = HYDU_strdup("=");
- tmp[i++] = HYDU_strdup(val);
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(key), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
cache_put.keyval[cache_put.keyval_len++] = cmd;
debug("cached command: %s\n", cmd);
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
index 4246057..8d2c66d 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
@@ -17,25 +17,23 @@ static struct HYD_pmcd_pmi_v2_reqs *pending_reqs = NULL;
static HYD_status send_cmd_upstream(const char *start, int fd, char *args[])
{
- int i, j, sent, closed;
- char *tmp[HYD_NUM_TMP_STRINGS], *buf;
+ int i, sent, closed;
+ struct HYD_string_stash stash;
+ char *buf;
struct HYD_pmcd_hdr hdr;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- j = 0;
- tmp[j++] = HYDU_strdup(start);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(start), status);
for (i = 0; args[i]; i++) {
- tmp[j++] = HYDU_strdup(args[i]);
+ HYD_STRING_STASH(stash, HYDU_strdup(args[i]), status);
if (args[i + 1])
- tmp[j++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[j] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &buf);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, buf, status);
HYD_pmcd_init_header(&hdr);
hdr.cmd = PMI_CMD;
@@ -152,7 +150,8 @@ static HYD_status fn_fullinit(int fd, char *args[])
{
int id, i;
char *rank_str;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -177,30 +176,29 @@ static HYD_status fn_fullinit(int fd, char *args[])
}
HYDU_ASSERT(i < HYD_pmcd_pmip.local.proxy_process_count, status);
- i = 0;
- /* FIXME: allow for multiple ranks per PMI ID */
- tmp[i++] = HYDU_strdup("cmd=fullinit-response;pmi-version=2;pmi-subversion=0;rank=");
- tmp[i++] = HYDU_int_to_str(id);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash,
+ HYDU_strdup("cmd=fullinit-response;pmi-version=2;pmi-subversion=0;rank="),
+ status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(id), status);
- tmp[i++] = HYDU_strdup(";size=");
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count);
- tmp[i++] = HYDU_strdup(";appnum=0");
+ HYD_STRING_STASH(stash, HYDU_strdup(";size="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count),
+ status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";appnum=0"), status);
if (HYD_pmcd_pmip.local.spawner_kvsname) {
- tmp[i++] = HYDU_strdup(";spawner-jobid=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.spawner_kvsname);
+ HYD_STRING_STASH(stash, HYDU_strdup(";spawner-jobid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.local.spawner_kvsname), status);
}
if (HYD_pmcd_pmip.user_global.debug) {
- tmp[i++] = HYDU_strdup(";debugged=TRUE;pmiverbose=TRUE");
+ HYD_STRING_STASH(stash, HYDU_strdup(";debugged=TRUE;pmiverbose=TRUE"), status);
}
else {
- tmp[i++] = HYDU_strdup(";debugged=FALSE;pmiverbose=FALSE");
+ HYD_STRING_STASH(stash, HYDU_strdup(";debugged=FALSE;pmiverbose=FALSE"), status);
}
- tmp[i++] = HYDU_strdup(";rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "error while joining strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -216,8 +214,8 @@ static HYD_status fn_fullinit(int fd, char *args[])
static HYD_status fn_job_getid(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid;
- int i;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -229,22 +227,18 @@ static HYD_status fn_job_getid(int fd, char *args[])
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=job-getid-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=job-getid-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("jobid=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname);
- tmp[i++] = HYDU_strdup(";rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("jobid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
-
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -259,11 +253,10 @@ static HYD_status fn_job_getid(int fd, char *args[])
static HYD_status fn_info_putnodeattr(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
- char *key, *val, *thrid;
- int i, ret;
+ struct HYD_string_stash stash;
+ char *key, *val, *thrid, *cmd;
struct HYD_pmcd_token *tokens;
- int token_count;
+ int token_count, ret;
struct HYD_pmcd_pmi_v2_reqs *req;
HYD_status status = HYD_SUCCESS;
@@ -284,21 +277,18 @@ static HYD_status fn_info_putnodeattr(int fd, char *args[])
status = HYD_pmcd_pmi_add_kvs(key, val, HYD_pmcd_pmip.local.kvs, &ret);
HYDU_ERR_POP(status, "unable to put data into kvs\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-putnodeattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-putnodeattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("rc=");
- tmp[i++] = HYDU_int_to_str(ret);
- tmp[i++] = HYDU_strdup(";");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(ret), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -322,10 +312,11 @@ static HYD_status fn_info_putnodeattr(int fd, char *args[])
static HYD_status fn_info_getnodeattr(int fd, char *args[])
{
- int i, found;
+ int found;
struct HYD_pmcd_pmi_kvs_pair *run;
char *key, *waitval, *thrid;
- char *tmp[HYD_NUM_TMP_STRINGS] = { 0 }, *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -353,21 +344,18 @@ static HYD_status fn_info_getnodeattr(int fd, char *args[])
}
if (found) { /* We found the attribute */
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-getnodeattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getnodeattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("found=TRUE;value=");
- tmp[i++] = HYDU_strdup(run->val);
- tmp[i++] = HYDU_strdup(";rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("found=TRUE;value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(run->val), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -381,19 +369,16 @@ static HYD_status fn_info_getnodeattr(int fd, char *args[])
}
else {
/* Tell the client that we can't find the attribute */
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-getnodeattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getnodeattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("found=FALSE;rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("found=FALSE;rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -409,9 +394,10 @@ static HYD_status fn_info_getnodeattr(int fd, char *args[])
static HYD_status fn_info_getjobattr(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *key, *thrid;
+ struct HYD_string_stash stash;
+ char *cmd, *key, *thrid;
struct HYD_pmcd_token *tokens;
- int token_count, i;
+ int token_count;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -426,21 +412,19 @@ static HYD_status fn_info_getjobattr(int fd, char *args[])
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
if (!strcmp(key, "PMI_process_mapping")) {
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-getjobattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getjobattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("found=TRUE;value=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping);
- tmp[i++] = HYDU_strdup(";rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("found=TRUE;value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping),
+ status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -462,9 +446,10 @@ static HYD_status fn_info_getjobattr(int fd, char *args[])
static HYD_status fn_finalize(int fd, char *args[])
{
char *thrid;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
struct HYD_pmcd_token *tokens;
- int token_count, i;
+ int token_count;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -474,19 +459,16 @@ static HYD_status fn_finalize(int fd, char *args[])
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=finalize-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=finalize-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c
index 380a752..c705c33 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c
@@ -94,7 +94,8 @@ static HYD_status ui_cmd_cb(int fd, HYD_event_t events, void *userp)
HYD_status HYD_pmci_launch_procs(void)
{
struct HYD_proxy *proxy;
- char *proxy_args[HYD_NUM_TMP_STRINGS] = { NULL }, *control_port = NULL;
+ struct HYD_string_stash proxy_stash;
+ char *control_port = NULL;
int node_count, i, *control_fd;
HYD_status status = HYD_SUCCESS;
@@ -115,7 +116,7 @@ HYD_status HYD_pmci_launch_procs(void)
if (HYD_server_info.user_global.debug)
HYDU_dump(stdout, "Got a control port string of %s\n", control_port);
- status = HYD_pmcd_pmi_fill_in_proxy_args(proxy_args, control_port, 0);
+ status = HYD_pmcd_pmi_fill_in_proxy_args(&proxy_stash, control_port, 0);
HYDU_ERR_POP(status, "unable to fill in proxy arguments\n");
status = HYD_pmcd_pmi_fill_in_exec_launch_info(&HYD_server_info.pg_list);
@@ -129,8 +130,8 @@ HYD_status HYD_pmci_launch_procs(void)
for (i = 0; i < node_count; i++)
control_fd[i] = HYD_FD_UNSET;
- status =
- HYDT_bsci_launch_procs(proxy_args, HYD_server_info.pg_list.proxy_list, control_fd);
+ status = HYDT_bsci_launch_procs(proxy_stash.strlist, HYD_server_info.pg_list.proxy_list,
+ control_fd);
HYDU_ERR_POP(status, "launcher cannot launch processes\n");
for (i = 0, proxy = HYD_server_info.pg_list.proxy_list; proxy; proxy = proxy->next, i++)
@@ -147,7 +148,7 @@ HYD_status HYD_pmci_launch_procs(void)
fn_exit:
if (control_port)
HYDU_FREE(control_port);
- HYDU_free_strlist(proxy_args);
+ HYD_STRING_STASH_FREE(proxy_stash);
HYDU_FUNC_EXIT();
return status;
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c
index faf019e..ff96bd0 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi.c
@@ -63,7 +63,8 @@ HYD_status HYD_pmcd_pmi_free_publish(struct HYD_pmcd_pmi_publish * publish)
HYD_status HYD_pmcd_pmi_publish(char *name, char *port, int *success)
{
struct HYD_pmcd_pmi_publish *r, *publish;
- char *ns, *ns_host, *ns_port_str, *tmp[HYD_NUM_TMP_STRINGS];
+ struct HYD_string_stash stash;
+ char *ns, *ns_host, *ns_port_str;
int ns_port, ns_fd, i;
HYD_status status = HYD_SUCCESS;
@@ -115,15 +116,14 @@ HYD_status HYD_pmcd_pmi_publish(char *name, char *port, int *success)
status = HYDU_sock_connect(ns_host, (uint16_t) ns_port, &ns_fd, 0, HYD_CONNECT_DELAY);
HYDU_ERR_POP(status, "error connecting to the nameserver\n");
- i = 0;
- tmp[i++] = HYDU_strdup("PUBLISH");
- tmp[i++] = HYDU_strdup(name);
- tmp[i++] = HYDU_strdup(port);
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("PUBLISH"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(name), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(port), status);
- status = HYDU_send_strlist(ns_fd, tmp);
+ status = HYDU_send_strlist(ns_fd, stash.strlist);
HYDU_ERR_POP(status, "error sending string list\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_STASH_FREE(stash);
status = HYDU_sock_read(ns_fd, &len, sizeof(int), &recvd, &closed,
HYDU_SOCK_COMM_MSGWAIT);
@@ -156,7 +156,8 @@ HYD_status HYD_pmcd_pmi_publish(char *name, char *port, int *success)
HYD_status HYD_pmcd_pmi_unpublish(char *name, int *success)
{
struct HYD_pmcd_pmi_publish *r, *publish;
- char *ns, *ns_host, *ns_port_str, *tmp[HYD_NUM_TMP_STRINGS];
+ struct HYD_string_stash stash;
+ char *ns, *ns_host, *ns_port_str;
int ns_port, ns_fd, i;
HYD_status status = HYD_SUCCESS;
@@ -213,13 +214,13 @@ HYD_status HYD_pmcd_pmi_unpublish(char *name, int *success)
status = HYDU_sock_connect(ns_host, (uint16_t) ns_port, &ns_fd, 0, HYD_CONNECT_DELAY);
HYDU_ERR_POP(status, "error connecting to the nameserver\n");
- i = 0;
- tmp[i++] = HYDU_strdup("UNPUBLISH");
- tmp[i++] = HYDU_strdup(name);
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("UNPUBLISH"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(name), status);
- status = HYDU_send_strlist(ns_fd, tmp);
+ status = HYDU_send_strlist(ns_fd, stash.strlist);
HYDU_ERR_POP(status, "error sending string list\n");
+ HYD_STRING_STASH_FREE(stash);
status = HYDU_sock_read(ns_fd, &len, sizeof(int), &recvd, &closed,
HYDU_SOCK_COMM_MSGWAIT);
@@ -249,7 +250,8 @@ HYD_status HYD_pmcd_pmi_unpublish(char *name, int *success)
HYD_status HYD_pmcd_pmi_lookup(char *name, char **value)
{
struct HYD_pmcd_pmi_publish *publish;
- char *ns, *ns_host, *ns_port_str, *tmp[HYD_NUM_TMP_STRINGS];
+ struct HYD_string_stash stash;
+ char *ns, *ns_host, *ns_port_str;
int ns_port, ns_fd, i;
HYD_status status = HYD_SUCCESS;
@@ -286,13 +288,13 @@ HYD_status HYD_pmcd_pmi_lookup(char *name, char **value)
status = HYDU_sock_connect(ns_host, (uint16_t) ns_port, &ns_fd, 0, HYD_CONNECT_DELAY);
HYDU_ERR_POP(status, "error connecting to the nameserver\n");
- i = 0;
- tmp[i++] = HYDU_strdup("LOOKUP");
- tmp[i++] = HYDU_strdup(name);
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("LOOKUP"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(name), status);
- status = HYDU_send_strlist(ns_fd, tmp);
+ status = HYDU_send_strlist(ns_fd, stash.strlist);
HYDU_ERR_POP(status, "error sending string list\n");
+ HYD_STRING_STASH_FREE(stash);
status = HYDU_sock_read(ns_fd, &len, sizeof(int), &recvd, &closed,
HYDU_SOCK_COMM_MSGWAIT);
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
index cbc4c08..26915f2 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
@@ -242,8 +242,9 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
int token_count, i, j, k, new_pgid, total_spawns;
int argcnt, num_segments;
- char *control_port, *proxy_args[HYD_NUM_TMP_STRINGS] = { NULL };
- char *tmp[HYD_NUM_TMP_STRINGS];
+ struct HYD_string_stash proxy_stash;
+ char *control_port;
+ struct HYD_string_stash stash;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -398,15 +399,12 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
if (path == NULL)
execname = HYDU_strdup(val);
else {
- i = 0;
- tmp[i++] = HYDU_strdup(path);
- tmp[i++] = HYDU_strdup("/");
- tmp[i++] = HYDU_strdup(val);
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &execname);
- HYDU_ERR_POP(status, "error while joining strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(path), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("/"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
+
+ HYD_STRING_SPIT(stash, execname, status);
}
i = 0;
@@ -502,27 +500,25 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
/* Go to the last PG */
for (pg = &HYD_server_info.pg_list; pg->next; pg = pg->next);
- status = HYD_pmcd_pmi_fill_in_proxy_args(proxy_args, control_port, new_pgid);
+ HYD_STRING_STASH_INIT(proxy_stash);
+ status = HYD_pmcd_pmi_fill_in_proxy_args(&proxy_stash, control_port, new_pgid);
HYDU_ERR_POP(status, "unable to fill in proxy arguments\n");
HYDU_FREE(control_port);
status = HYD_pmcd_pmi_fill_in_exec_launch_info(pg);
HYDU_ERR_POP(status, "unable to fill in executable arguments\n");
- status = HYDT_bsci_launch_procs(proxy_args, pg->proxy_list, NULL);
+ status = HYDT_bsci_launch_procs(proxy_stash.strlist, pg->proxy_list, NULL);
HYDU_ERR_POP(status, "launcher cannot launch processes\n");
{
- char *cmd_str[HYD_NUM_TMP_STRINGS], *cmd;
+ char *cmd;
- i = 0;
- cmd_str[i++] = HYDU_strdup("cmd=spawn_result rc=0");
- cmd_str[i++] = HYDU_strdup("\n");
- cmd_str[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=spawn_result rc=0"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(cmd_str, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(cmd_str);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "error writing PMI line\n");
@@ -535,7 +531,7 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
fn_exit:
HYD_pmcd_pmi_free_tokens(tokens, token_count);
- HYDU_free_strlist(proxy_args);
+ HYD_STRING_STASH_FREE(proxy_stash);
if (segment_list)
HYDU_FREE(segment_list);
HYDU_FUNC_EXIT();
@@ -547,8 +543,9 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
static HYD_status fn_publish_name(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *val;
- int i, token_count;
+ struct HYD_string_stash stash;
+ char *cmd, *val;
+ int token_count;
struct HYD_pmcd_token *tokens;
char *name, *port;
int success = 0;
@@ -570,16 +567,16 @@ static HYD_status fn_publish_name(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_publish(name, port, &success);
HYDU_ERR_POP(status, "error publishing service\n");
- i = 0;
+ HYD_STRING_STASH_INIT(stash);
if (success)
- tmp[i++] = HYDU_strdup("cmd=publish_result info=ok rc=0 msg=success\n");
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=publish_result info=ok rc=0 msg=success\n"),
+ status);
else
- tmp[i++] = HYDU_strdup("cmd=publish_result info=ok rc=1 msg=key_already_present\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash,
+ HYDU_strdup("cmd=publish_result info=ok rc=1 msg=key_already_present\n"),
+ status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -595,8 +592,9 @@ static HYD_status fn_publish_name(int fd, int pid, int pgid, char *args[])
static HYD_status fn_unpublish_name(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *name;
- int i, token_count;
+ struct HYD_string_stash stash;
+ char *cmd, *name;
+ int token_count;
struct HYD_pmcd_token *tokens;
int success = 0;
HYD_status status = HYD_SUCCESS;
@@ -612,16 +610,16 @@ static HYD_status fn_unpublish_name(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_unpublish(name, &success);
HYDU_ERR_POP(status, "error unpublishing service\n");
- i = 0;
+ HYD_STRING_STASH_INIT(stash);
if (success)
- tmp[i++] = HYDU_strdup("cmd=unpublish_result info=ok rc=0 msg=success\n");
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=unpublish_result info=ok rc=0 msg=success\n"),
+ status);
else
- tmp[i++] = HYDU_strdup("cmd=unpublish_result info=ok rc=1 msg=service_not_found\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash,
+ HYDU_strdup("cmd=unpublish_result info=ok rc=1 msg=service_not_found\n"),
+ status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -637,8 +635,9 @@ static HYD_status fn_unpublish_name(int fd, int pid, int pgid, char *args[])
static HYD_status fn_lookup_name(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *name, *value;
- int i, token_count;
+ struct HYD_string_stash stash;
+ char *cmd, *name, *value;
+ int token_count;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -653,21 +652,18 @@ static HYD_status fn_lookup_name(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_lookup(name, &value);
HYDU_ERR_POP(status, "error while looking up service\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=lookup_result");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=lookup_result"), status);
if (value) {
- tmp[i++] = HYDU_strdup(" port=");
- tmp[i++] = HYDU_strdup(value);
- tmp[i++] = HYDU_strdup(" info=ok rc=0 msg=success\n");
+ HYD_STRING_STASH(stash, HYDU_strdup(" port="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(value), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(" info=ok rc=0 msg=success\n"), status);
}
else {
- tmp[i++] = HYDU_strdup(" rc=1 msg=service_not_found\n");
+ HYD_STRING_STASH(stash, HYDU_strdup(" rc=1 msg=service_not_found\n"), status);
}
- tmp[i++] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
index 87ff14f..3e2f51b 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
@@ -111,13 +111,12 @@ static HYD_status poke_progress(char *key)
static HYD_status fn_info_getjobattr(int fd, int pid, int pgid, char *args[])
{
- int i;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
struct HYD_pmcd_pmi_kvs_pair *run;
const char *key;
- char *thrid, *val;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ char *thrid, *val, *cmd;
+ struct HYD_string_stash stash;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -149,28 +148,24 @@ static HYD_status fn_info_getjobattr(int fd, int pid, int pgid, char *args[])
}
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-getjobattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getjobattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("found=");
+ HYD_STRING_STASH(stash, HYDU_strdup("found="), status);
if (val) {
- tmp[i++] = HYDU_strdup("TRUE;value=");
- tmp[i++] = HYDU_strdup(val);
- tmp[i++] = HYDU_strdup(";rc=0;");
+ HYD_STRING_STASH(stash, HYDU_strdup("TRUE;value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
}
else {
- tmp[i++] = HYDU_strdup("FALSE;rc=0;");
+ HYD_STRING_STASH(stash, HYDU_strdup("FALSE;rc=0;"), status);
}
- tmp[i++] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
-
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -188,9 +183,9 @@ static HYD_status fn_info_getjobattr(int fd, int pid, int pgid, char *args[])
static HYD_status fn_kvs_put(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
- char *key, *val, *thrid;
- int i, ret;
+ struct HYD_string_stash stash;
+ char *key, *val, *thrid, *cmd;
+ int ret;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
struct HYD_pmcd_token *tokens;
@@ -222,22 +217,18 @@ static HYD_status fn_kvs_put(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_add_kvs(key, val, pg_scratch->kvs, &ret);
HYDU_ERR_POP(status, "unable to put data into kvs\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=kvs-put-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=kvs-put-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("rc=");
- tmp[i++] = HYDU_int_to_str(ret);
- tmp[i++] = HYDU_strdup(";");
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
+ HYD_STRING_STASH(stash, HYDU_strdup("rc="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(ret), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -268,8 +259,8 @@ static HYD_status fn_kvs_get(int fd, int pid, int pgid, char *args[])
struct HYD_pg *pg;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_kvs_pair *run;
- char *key, *thrid;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ char *key, *thrid, *cmd;
+ struct HYD_string_stash stash;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -322,27 +313,24 @@ static HYD_status fn_kvs_get(int fd, int pid, int pgid, char *args[])
}
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=kvs-get-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=kvs-get-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
if (found) {
- tmp[i++] = HYDU_strdup("found=TRUE;value=");
- tmp[i++] = HYDU_strdup(run->val);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("found=TRUE;value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(run->val), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
else {
- tmp[i++] = HYDU_strdup("found=FALSE;");
+ HYD_STRING_STASH(stash, HYDU_strdup("found=FALSE;"), status);
}
- tmp[i++] = HYDU_strdup("rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -361,7 +349,8 @@ static HYD_status fn_kvs_fence(int fd, int pid, int pgid, char *args[])
{
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid;
struct HYD_pmcd_token *tokens;
int token_count, i;
static int fence_count = 0;
@@ -396,19 +385,16 @@ static HYD_status fn_kvs_fence(int fd, int pid, int pgid, char *args[])
pg_scratch->ecount[i].epoch = 1;
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=kvs-fence-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=kvs-fence-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -471,8 +457,9 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
int token_count, i, j, k, new_pgid;
int argcnt, num_segments;
- char *control_port, *proxy_args[HYD_NUM_TMP_STRINGS] = { NULL };
- char *tmp[HYD_NUM_TMP_STRINGS];
+ struct HYD_string_stash proxy_stash;
+ char *control_port;
+ struct HYD_string_stash stash;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -613,15 +600,12 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
if (path == NULL)
execname = HYDU_strdup(val);
else {
- i = 0;
- tmp[i++] = HYDU_strdup(path);
- tmp[i++] = HYDU_strdup("/");
- tmp[i++] = HYDU_strdup(val);
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &execname);
- HYDU_ERR_POP(status, "error while joining strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(path), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("/"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
+
+ HYD_STRING_SPIT(stash, execname, status);
}
i = 0;
@@ -716,36 +700,33 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
/* Go to the last PG */
for (pg = &HYD_server_info.pg_list; pg->next; pg = pg->next);
- status = HYD_pmcd_pmi_fill_in_proxy_args(proxy_args, control_port, new_pgid);
+ status = HYD_pmcd_pmi_fill_in_proxy_args(&proxy_stash, control_port, new_pgid);
HYDU_ERR_POP(status, "unable to fill in proxy arguments\n");
HYDU_FREE(control_port);
status = HYD_pmcd_pmi_fill_in_exec_launch_info(pg);
HYDU_ERR_POP(status, "unable to fill in executable arguments\n");
- status = HYDT_bsci_launch_procs(proxy_args, pg->proxy_list, NULL);
+ status = HYDT_bsci_launch_procs(proxy_stash.strlist, pg->proxy_list, NULL);
HYDU_ERR_POP(status, "launcher cannot launch processes\n");
{
- char *cmd_str[HYD_NUM_TMP_STRINGS], *cmd;
+ char *cmd;
- i = 0;
- cmd_str[i++] = HYDU_strdup("cmd=spawn-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=spawn-response;"), status);
if (thrid) {
- cmd_str[i++] = HYDU_strdup("thrid=");
- cmd_str[i++] = HYDU_strdup(thrid);
- cmd_str[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- cmd_str[i++] = HYDU_strdup("rc=0;");
- cmd_str[i++] = HYDU_strdup("jobid=");
- cmd_str[i++] = HYDU_strdup(pg_scratch->kvs->kvsname);
- cmd_str[i++] = HYDU_strdup(";");
- cmd_str[i++] = HYDU_strdup("nerrs=0;");
- cmd_str[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("jobid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(pg_scratch->kvs->kvsname), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("nerrs=0;"), status);
- status = HYDU_str_alloc_and_join(cmd_str, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(cmd_str);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -754,7 +735,7 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
fn_exit:
HYD_pmcd_pmi_free_tokens(tokens, token_count);
- HYDU_free_strlist(proxy_args);
+ HYD_STRING_STASH_FREE(proxy_stash);
if (segment_list)
HYDU_FREE(segment_list);
HYDU_FUNC_EXIT();
@@ -766,9 +747,9 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
static HYD_status fn_name_publish(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid, *val;
- char *name, *port;
- int i, token_count, success;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid, *val, *name, *port;
+ int token_count, success;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -790,25 +771,22 @@ static HYD_status fn_name_publish(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_publish(name, port, &success);
HYDU_ERR_POP(status, "error publishing service\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=name-publish-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=name-publish-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
if (!success) {
- tmp[i++] = HYDU_strdup("rc=1;errmsg=duplicate_service_");
- tmp[i++] = HYDU_strdup(name);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=1;errmsg=duplicate_service_"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(name), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
else
- tmp[i++] = HYDU_strdup("rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -824,8 +802,9 @@ static HYD_status fn_name_publish(int fd, int pid, int pgid, char *args[])
static HYD_status fn_name_unpublish(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid, *name;
- int i, token_count, success;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid, *name;
+ int token_count, success;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -842,25 +821,22 @@ static HYD_status fn_name_unpublish(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_unpublish(name, &success);
HYDU_ERR_POP(status, "error unpublishing service\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=name-unpublish-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=name-unpublish-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
if (success)
- tmp[i++] = HYDU_strdup("rc=0;");
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
else {
- tmp[i++] = HYDU_strdup("rc=1;errmsg=service_");
- tmp[i++] = HYDU_strdup(name);
- tmp[i++] = HYDU_strdup("_not_found;");
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=1;errmsg=service_"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(name), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("_not_found;"), status);
}
- tmp[i++] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -876,9 +852,10 @@ static HYD_status fn_name_unpublish(int fd, int pid, int pgid, char *args[])
static HYD_status fn_name_lookup(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid, *name, *value;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid, *name, *value;
struct HYD_pmcd_pmi_publish *publish;
- int i, token_count;
+ int token_count;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -898,26 +875,23 @@ static HYD_status fn_name_lookup(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_lookup(name, &value);
HYDU_ERR_POP(status, "error while looking up service\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=name-lookup-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=name-lookup-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
if (value) {
- tmp[i++] = HYDU_strdup("port=");
- tmp[i++] = HYDU_strdup(value);
- tmp[i++] = HYDU_strdup(";found=TRUE;rc=0;");
+ HYD_STRING_STASH(stash, HYDU_strdup("port="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(value), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";found=TRUE;rc=0;"), status);
}
else {
- tmp[i++] = HYDU_strdup("found=FALSE;rc=1;");
+ HYD_STRING_STASH(stash, HYDU_strdup("found=FALSE;rc=1;"), status);
}
- tmp[i++] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
index 45222aa..7823905 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
@@ -10,14 +10,14 @@
#include "pmiserv_pmi.h"
#include "pmiserv_utils.h"
-HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port, int pgid)
+HYD_status HYD_pmcd_pmi_fill_in_proxy_args(struct HYD_string_stash *proxy_stash,
+ char *control_port, int pgid)
{
- int i, arg, use_ddd, use_valgrind, use_strace, retries, ret;
- char *path_str[HYD_NUM_TMP_STRINGS];
+ int use_ddd, use_valgrind, use_strace, retries, ret;
+ char *str;
+ struct HYD_string_stash stash;
HYD_status status = HYD_SUCCESS;
- arg = 0;
-
/* Hack to use ddd and valgrind with the proxy */
if (MPL_env2bool("HYDRA_USE_DDD", &use_ddd) == 0)
use_ddd = 0;
@@ -26,81 +26,80 @@ HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port
if (MPL_env2bool("HYDRA_USE_STRACE", &use_strace) == 0)
use_strace = 0;
+ HYD_STRING_STASH_INIT(*proxy_stash);
if (use_ddd) {
- proxy_args[arg++] = HYDU_strdup("ddd");
- proxy_args[arg++] = HYDU_strdup("--args");
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("ddd"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--args"), status);
}
if (use_valgrind) {
- proxy_args[arg++] = HYDU_strdup("valgrind");
- proxy_args[arg++] = HYDU_strdup("--leak-check=full");
- proxy_args[arg++] = HYDU_strdup("--show-reachable=yes");
- proxy_args[arg++] = HYDU_strdup("--track-origins=yes");
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("valgrind"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--leak-check=full"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--show-reachable=yes"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--track-origins=yes"), status);
}
if (use_strace) {
- proxy_args[arg++] = HYDU_strdup("strace");
- proxy_args[arg++] = HYDU_strdup("-o");
- proxy_args[arg++] = HYDU_strdup("hydra_strace");
- proxy_args[arg++] = HYDU_strdup("-ff");
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("strace"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("-o"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("hydra_strace"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("-ff"), status);
}
- i = 0;
- path_str[i++] = HYDU_strdup(HYD_server_info.base_path);
- path_str[i++] = HYDU_strdup("hydra_pmi_proxy");
- path_str[i] = NULL;
- status = HYDU_str_alloc_and_join(path_str, &proxy_args[arg++]);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(path_str);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_server_info.base_path), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("hydra_pmi_proxy"), status);
+ HYD_STRING_SPIT(stash, str, status);
+
+ HYD_STRING_STASH(*proxy_stash, str, status);
- proxy_args[arg++] = HYDU_strdup("--control-port");
- proxy_args[arg++] = HYDU_strdup(control_port);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--control-port"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup(control_port), status);
if (HYD_server_info.user_global.debug)
- proxy_args[arg++] = HYDU_strdup("--debug");
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--debug"), status);
if (HYDT_bsci_info.rmk) {
- proxy_args[arg++] = HYDU_strdup("--rmk");
- proxy_args[arg++] = HYDU_strdup(HYDT_bsci_info.rmk);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--rmk"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup(HYDT_bsci_info.rmk), status);
}
if (HYDT_bsci_info.launcher) {
- proxy_args[arg++] = HYDU_strdup("--launcher");
- proxy_args[arg++] = HYDU_strdup(HYDT_bsci_info.launcher);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--launcher"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup(HYDT_bsci_info.launcher), status);
}
if (HYDT_bsci_info.launcher_exec) {
- proxy_args[arg++] = HYDU_strdup("--launcher-exec");
- proxy_args[arg++] = HYDU_strdup(HYDT_bsci_info.launcher_exec);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--launcher-exec"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup(HYDT_bsci_info.launcher_exec), status);
}
- proxy_args[arg++] = HYDU_strdup("--demux");
- proxy_args[arg++] = HYDU_strdup(HYD_server_info.user_global.demux);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--demux"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup(HYD_server_info.user_global.demux), status);
if (HYD_server_info.user_global.iface) {
- proxy_args[arg++] = HYDU_strdup("--iface");
- proxy_args[arg++] = HYDU_strdup(HYD_server_info.user_global.iface);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--iface"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup(HYD_server_info.user_global.iface), status);
}
- proxy_args[arg++] = HYDU_strdup("--pgid");
- proxy_args[arg++] = HYDU_int_to_str(pgid);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--pgid"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_int_to_str(pgid), status);
ret = MPL_env2int("HYDRA_PROXY_RETRY_COUNT", &retries);
if (ret == 0)
retries = HYD_DEFAULT_RETRY_COUNT;
- proxy_args[arg++] = HYDU_strdup("--retries");
- proxy_args[arg++] = HYDU_int_to_str(retries);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--retries"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_int_to_str(retries), status);
- proxy_args[arg++] = HYDU_strdup("--usize");
- proxy_args[arg++] = HYDU_int_to_str(HYD_server_info.user_global.usize);
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--usize"), status);
+ HYD_STRING_STASH(*proxy_stash, HYDU_int_to_str(HYD_server_info.user_global.usize), status);
- proxy_args[arg++] = HYDU_strdup("--proxy-id");
- proxy_args[arg++] = NULL;
+ HYD_STRING_STASH(*proxy_stash, HYDU_strdup("--proxy-id"), status);
if (HYD_server_info.user_global.debug) {
HYDU_dump_noprefix(stdout, "\nProxy launch args: ");
- HYDU_print_strlist(proxy_args);
+ HYDU_print_strlist(proxy_stash->strlist);
HYDU_dump_noprefix(stdout, "\n");
}
@@ -113,8 +112,8 @@ HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port
static HYD_status pmi_process_mapping(struct HYD_pg *pg, char **process_mapping_str)
{
- int i, is_equal, filler_round, core_count;
- char *tmp[HYD_NUM_TMP_STRINGS];
+ int is_equal, filler_round, core_count;
+ struct HYD_string_stash stash;
struct block {
int start_idx;
int num_nodes;
@@ -204,28 +203,23 @@ static HYD_status pmi_process_mapping(struct HYD_pg *pg, char **process_mapping_
create_mapping_key:
/* Create the mapping out of the blocks */
- i = 0;
- tmp[i++] = HYDU_strdup("(");
- tmp[i++] = HYDU_strdup("vector,");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("("), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("vector,"), status);
for (block = blocklist_head; block; block = block->next) {
- tmp[i++] = HYDU_strdup("(");
- tmp[i++] = HYDU_int_to_str(block->start_idx);
- tmp[i++] = HYDU_strdup(",");
- tmp[i++] = HYDU_int_to_str(block->num_nodes);
- tmp[i++] = HYDU_strdup(",");
- tmp[i++] = HYDU_int_to_str(block->core_count);
- tmp[i++] = HYDU_strdup(")");
+ HYD_STRING_STASH(stash, HYDU_strdup("("), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(block->start_idx), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(","), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(block->num_nodes), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(","), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(block->core_count), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(")"), status);
if (block->next)
- tmp[i++] = HYDU_strdup(",");
- HYDU_STRLIST_CONSOLIDATE(tmp, i, status);
+ HYD_STRING_STASH(stash, HYDU_strdup(","), status);
}
- tmp[i++] = HYDU_strdup(")");
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, process_mapping_str);
- HYDU_ERR_POP(status, "error while joining strings\n");
+ HYD_STRING_STASH(stash, HYDU_strdup(")"), status);
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, *process_mapping_str, status);
for (block = blocklist_head; block; block = nblock) {
nblock = block->next;
@@ -242,16 +236,16 @@ static HYD_status pmi_process_mapping(struct HYD_pg *pg, char **process_mapping_
HYD_status HYD_pmcd_pmi_fill_in_exec_launch_info(struct HYD_pg *pg)
{
- int i, arg, inherited_env_count, user_env_count, system_env_count, exec_count;
- int total_args, proxy_count, total_filler_processes, total_core_count;
+ int i, inherited_env_count, user_env_count, system_env_count, exec_count;
+ int proxy_count, total_filler_processes, total_core_count;
int pmi_id, *filler_pmi_ids = NULL, *nonfiller_pmi_ids = NULL;
struct HYD_env *env;
struct HYD_proxy *proxy;
struct HYD_exec *exec;
struct HYD_node *node;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
- char *mapping = NULL, *map = NULL;
- char *tmp[HYD_NUM_TMP_STRINGS];
+ char *mapping = NULL, *map;
+ struct HYD_string_stash stash, exec_stash;
HYD_status status = HYD_SUCCESS;
status = pmi_process_mapping(pg, &mapping);
@@ -301,216 +295,210 @@ HYD_status HYD_pmcd_pmi_fill_in_exec_launch_info(struct HYD_pg *pg)
for (exec_count = 0, exec = proxy->exec_list; exec; exec = exec->next)
exec_count++;
- total_args = HYD_NUM_TMP_STRINGS; /* For the basic arguments */
-
- /* Environments */
- total_args += inherited_env_count;
- total_args += user_env_count;
- total_args += system_env_count;
-
- /* For each exec add a few strings */
- total_args += (exec_count * HYD_NUM_TMP_STRINGS);
-
- /* Add a few strings for the remaining arguments */
- total_args += HYD_NUM_TMP_STRINGS;
+ HYD_STRING_STASH_INIT(exec_stash);
- HYDU_MALLOC(proxy->exec_launch_info, char **, total_args * sizeof(char *), status);
-
- arg = 0;
- proxy->exec_launch_info[arg++] = HYDU_strdup("--version");
- proxy->exec_launch_info[arg++] = HYDU_strdup(HYDRA_VERSION);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--version"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(HYDRA_VERSION), status);
if (HYD_server_info.iface_ip_env_name) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--iface-ip-env-name");
- proxy->exec_launch_info[arg++] = HYDU_strdup(HYD_server_info.iface_ip_env_name);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--iface-ip-env-name"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(HYD_server_info.iface_ip_env_name), status);
}
- proxy->exec_launch_info[arg++] = HYDU_strdup("--hostname");
- proxy->exec_launch_info[arg++] = HYDU_strdup(proxy->node->hostname);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--hostname"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(proxy->node->hostname), status);
/* This map has three fields: filler cores on this node,
* remaining cores on this node, total cores in the system */
- proxy->exec_launch_info[arg++] = HYDU_strdup("--global-core-map");
- tmp[0] = HYDU_int_to_str(proxy->filler_processes);
- tmp[1] = HYDU_strdup(",");
- tmp[2] = HYDU_int_to_str(proxy->node->core_count);
- tmp[3] = HYDU_strdup(",");
- tmp[4] = HYDU_int_to_str(total_core_count);
- tmp[5] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &map);
- HYDU_ERR_POP(status, "unable to join strings\n");
- proxy->exec_launch_info[arg++] = map;
- HYDU_free_strlist(tmp);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--global-core-map"), status);
+
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(proxy->filler_processes), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(","), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(proxy->node->core_count), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(","), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(total_core_count), status);
+ HYD_STRING_SPIT(stash, map, status);
+
+ HYD_STRING_STASH(exec_stash, map, status);
/* This map has two fields: start PMI ID during the filler
* phase, start PMI ID for the remaining phase */
- proxy->exec_launch_info[arg++] = HYDU_strdup("--pmi-id-map");
- tmp[0] = HYDU_int_to_str(filler_pmi_ids[proxy_count]);
- tmp[1] = HYDU_strdup(",");
- tmp[2] = HYDU_int_to_str(nonfiller_pmi_ids[proxy_count]);
- tmp[3] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &map);
- HYDU_ERR_POP(status, "unable to join strings\n");
- proxy->exec_launch_info[arg++] = map;
- HYDU_free_strlist(tmp);
-
- proxy->exec_launch_info[arg++] = HYDU_strdup("--global-process-count");
- proxy->exec_launch_info[arg++] = HYDU_int_to_str(pg->pg_process_count);
-
- proxy->exec_launch_info[arg++] = HYDU_strdup("--auto-cleanup");
- proxy->exec_launch_info[arg++] =
- HYDU_int_to_str(HYD_server_info.user_global.auto_cleanup);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--pmi-id-map"), status);
+
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(filler_pmi_ids[proxy_count]), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(","), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(nonfiller_pmi_ids[proxy_count]), status);
+ HYD_STRING_SPIT(stash, map, status);
+
+ HYD_STRING_STASH(exec_stash, map, status);
+
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--global-process-count"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(pg->pg_process_count), status);
+
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--auto-cleanup"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(HYD_server_info.user_global.auto_cleanup),
+ status);
pg_scratch = (struct HYD_pmcd_pmi_pg_scratch *) pg->pg_scratch;
- proxy->exec_launch_info[arg++] = HYDU_strdup("--pmi-kvsname");
- proxy->exec_launch_info[arg++] = HYDU_strdup(pg_scratch->kvs->kvsname);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--pmi-kvsname"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(pg_scratch->kvs->kvsname), status);
if (pg->spawner_pg) {
pg_scratch = (struct HYD_pmcd_pmi_pg_scratch *) pg->spawner_pg->pg_scratch;
- proxy->exec_launch_info[arg++] = HYDU_strdup("--pmi-spawner-kvsname");
- proxy->exec_launch_info[arg++] = HYDU_strdup(pg_scratch->kvs->kvsname);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--pmi-spawner-kvsname"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(pg_scratch->kvs->kvsname), status);
}
- proxy->exec_launch_info[arg++] = HYDU_strdup("--pmi-process-mapping");
- proxy->exec_launch_info[arg++] = HYDU_strdup(mapping);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--pmi-process-mapping"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(mapping), status);
if (proxy->node->local_binding) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--binding");
- proxy->exec_launch_info[arg++] = HYDU_strdup(proxy->node->local_binding);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--binding"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(proxy->node->local_binding), status);
}
else if (HYD_server_info.user_global.binding) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--binding");
- proxy->exec_launch_info[arg++] = HYDU_strdup(HYD_server_info.user_global.binding);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--binding"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(HYD_server_info.user_global.binding), status);
}
if (HYD_server_info.user_global.mapping) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--mapping");
- proxy->exec_launch_info[arg++] = HYDU_strdup(HYD_server_info.user_global.mapping);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--mapping"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(HYD_server_info.user_global.mapping), status);
}
if (HYD_server_info.user_global.membind) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--membind");
- proxy->exec_launch_info[arg++] = HYDU_strdup(HYD_server_info.user_global.membind);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--membind"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(HYD_server_info.user_global.membind), status);
}
if (HYD_server_info.user_global.topolib) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--topolib");
- proxy->exec_launch_info[arg++] = HYDU_strdup(HYD_server_info.user_global.topolib);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--topolib"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(HYD_server_info.user_global.topolib), status);
}
if (HYD_server_info.user_global.ckpointlib) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--ckpointlib");
- proxy->exec_launch_info[arg++] =
- HYDU_strdup(HYD_server_info.user_global.ckpointlib);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--ckpointlib"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(HYD_server_info.user_global.ckpointlib),
+ status);
}
if (HYD_server_info.user_global.ckpoint_prefix) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--ckpoint-prefix");
- proxy->exec_launch_info[arg++] =
- HYDU_strdup(HYD_server_info.user_global.ckpoint_prefix);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--ckpoint-prefix"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(HYD_server_info.user_global.ckpoint_prefix),
+ status);
}
if (HYD_server_info.user_global.ckpoint_num) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--ckpoint-num");
- proxy->exec_launch_info[arg++] =
- HYDU_int_to_str(HYD_server_info.user_global.ckpoint_num);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--ckpoint-num"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(HYD_server_info.user_global.ckpoint_num),
+ status);
}
- proxy->exec_launch_info[arg++] = HYDU_strdup("--global-inherited-env");
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--global-inherited-env"), status);
for (i = 0, env = HYD_server_info.user_global.global_env.inherited; env;
env = env->next, i++);
- proxy->exec_launch_info[arg++] = HYDU_int_to_str(i);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(i), status);
for (env = HYD_server_info.user_global.global_env.inherited; env; env = env->next) {
- status = HYDU_env_to_str(env, &proxy->exec_launch_info[arg++]);
+ char *envstr;
+
+ status = HYDU_env_to_str(env, &envstr);
HYDU_ERR_POP(status, "error converting env to string\n");
+
+ HYD_STRING_STASH(exec_stash, envstr, status);
}
- proxy->exec_launch_info[arg++] = NULL;
- arg = HYDU_strlist_lastidx(proxy->exec_launch_info);
- proxy->exec_launch_info[arg++] = HYDU_strdup("--global-user-env");
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--global-user-env"), status);
for (i = 0, env = HYD_server_info.user_global.global_env.user; env;
env = env->next, i++);
- proxy->exec_launch_info[arg++] = HYDU_int_to_str(i);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(i), status);
for (env = HYD_server_info.user_global.global_env.user; env; env = env->next) {
- status = HYDU_env_to_str(env, &proxy->exec_launch_info[arg++]);
+ char *envstr;
+
+ status = HYDU_env_to_str(env, &envstr);
HYDU_ERR_POP(status, "error converting env to string\n");
+
+ HYD_STRING_STASH(exec_stash, envstr, status);
}
- proxy->exec_launch_info[arg++] = NULL;
- arg = HYDU_strlist_lastidx(proxy->exec_launch_info);
- proxy->exec_launch_info[arg++] = HYDU_strdup("--global-system-env");
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--global-system-env"), status);
for (i = 0, env = HYD_server_info.user_global.global_env.system; env;
env = env->next, i++);
- proxy->exec_launch_info[arg++] = HYDU_int_to_str(i);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(i), status);
for (env = HYD_server_info.user_global.global_env.system; env; env = env->next) {
- status = HYDU_env_to_str(env, &proxy->exec_launch_info[arg++]);
+ char *envstr;
+
+ status = HYDU_env_to_str(env, &envstr);
HYDU_ERR_POP(status, "error converting env to string\n");
+
+ HYD_STRING_STASH(exec_stash, envstr, status);
}
- proxy->exec_launch_info[arg++] = NULL;
- arg = HYDU_strlist_lastidx(proxy->exec_launch_info);
if (HYD_server_info.user_global.global_env.prop) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--genv-prop");
- proxy->exec_launch_info[arg++] =
- HYDU_strdup(HYD_server_info.user_global.global_env.prop);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--genv-prop"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(HYD_server_info.user_global.global_env.prop),
+ status);
}
- proxy->exec_launch_info[arg++] = HYDU_strdup("--proxy-core-count");
- proxy->exec_launch_info[arg++] = HYDU_int_to_str(proxy->node->core_count);
- proxy->exec_launch_info[arg++] = NULL;
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--proxy-core-count"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(proxy->node->core_count), status);
/* Now pass the local executable information */
for (exec = proxy->exec_list; exec; exec = exec->next) {
- arg = HYDU_strlist_lastidx(proxy->exec_launch_info);
- proxy->exec_launch_info[arg++] = HYDU_strdup("--exec");
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--exec"), status);
- proxy->exec_launch_info[arg++] = HYDU_strdup("--exec-appnum");
- proxy->exec_launch_info[arg++] = HYDU_int_to_str(exec->appnum);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--exec-appnum"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(exec->appnum), status);
- proxy->exec_launch_info[arg++] = HYDU_strdup("--exec-proc-count");
- proxy->exec_launch_info[arg++] = HYDU_int_to_str(exec->proc_count);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--exec-proc-count"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(exec->proc_count), status);
- proxy->exec_launch_info[arg++] = HYDU_strdup("--exec-local-env");
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--exec-local-env"), status);
for (i = 0, env = exec->user_env; env; env = env->next, i++);
- proxy->exec_launch_info[arg++] = HYDU_int_to_str(i);
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(i), status);
for (env = exec->user_env; env; env = env->next) {
- status = HYDU_env_to_str(env, &proxy->exec_launch_info[arg++]);
+ char *envstr;
+
+ status = HYDU_env_to_str(env, &envstr);
HYDU_ERR_POP(status, "error converting env to string\n");
+
+ HYD_STRING_STASH(exec_stash, envstr, status);
}
- proxy->exec_launch_info[arg++] = NULL;
if (exec->env_prop) {
- arg = HYDU_strlist_lastidx(proxy->exec_launch_info);
- proxy->exec_launch_info[arg++] = HYDU_strdup("--exec-env-prop");
- proxy->exec_launch_info[arg++] = HYDU_strdup(exec->env_prop);
- proxy->exec_launch_info[arg++] = NULL;
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--exec-env-prop"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(exec->env_prop), status);
}
- arg = HYDU_strlist_lastidx(proxy->exec_launch_info);
-
if (exec->wdir) {
- proxy->exec_launch_info[arg++] = HYDU_strdup("--exec-wdir");
- proxy->exec_launch_info[arg++] = HYDU_strdup(exec->wdir);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--exec-wdir"), status);
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(exec->wdir), status);
}
- proxy->exec_launch_info[arg++] = HYDU_strdup("--exec-args");
+ HYD_STRING_STASH(exec_stash, HYDU_strdup("--exec-args"), status);
for (i = 0; exec->exec[i]; i++);
- proxy->exec_launch_info[arg++] = HYDU_int_to_str(i);
- proxy->exec_launch_info[arg++] = NULL;
+ HYD_STRING_STASH(exec_stash, HYDU_int_to_str(i), status);
- HYDU_list_append_strlist(exec->exec, proxy->exec_launch_info);
+ for (i = 0; exec->exec[i]; i++)
+ HYD_STRING_STASH(exec_stash, HYDU_strdup(exec->exec[i]), status);
}
if (HYD_server_info.user_global.debug) {
HYDU_dump_noprefix(stdout, "Arguments being passed to proxy %d:\n", proxy_count);
- HYDU_print_strlist(proxy->exec_launch_info);
+ HYDU_print_strlist(stash.strlist);
HYDU_dump_noprefix(stdout, "\n");
}
+ status = HYDU_strdup_list(exec_stash.strlist, &proxy->exec_launch_info);
+ HYDU_ERR_POP(status, "unable to dup strlist\n");
+
+ HYD_STRING_STASH_FREE(exec_stash);
+
proxy_count++;
}
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_utils.h b/src/pm/hydra/pm/pmiserv/pmiserv_utils.h
index 4f7543b..992bb6a 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_utils.h
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_utils.h
@@ -10,7 +10,8 @@
#include "demux.h"
#include "pmiserv_pmi.h"
-HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port, int pgid);
+HYD_status HYD_pmcd_pmi_fill_in_proxy_args(struct HYD_string_stash *stash,
+ char *control_port, int pgid);
HYD_status HYD_pmcd_pmi_fill_in_exec_launch_info(struct HYD_pg *pg);
HYD_status HYD_pmcd_pmi_alloc_pg_scratch(struct HYD_pg *pg);
HYD_status HYD_pmcd_pmi_free_pg_scratch(struct HYD_pg *pg);
-----------------------------------------------------------------------
Summary of changes:
src/pm/hydra/include/hydra.h | 62 +++-
src/pm/hydra/pm/pmiserv/common.c | 12 +-
src/pm/hydra/pm/pmiserv/common.h | 18 +-
src/pm/hydra/pm/pmiserv/pmi_v2_common.c | 3 +-
src/pm/hydra/pm/pmiserv/pmip_cb.c | 46 +--
src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c | 181 +++++------
src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c | 204 +++++------
src/pm/hydra/pm/pmiserv/pmip_utils.c | 3 +-
src/pm/hydra/pm/pmiserv/pmiserv_cb.c | 45 +--
src/pm/hydra/pm/pmiserv/pmiserv_pmci.c | 11 +-
src/pm/hydra/pm/pmiserv/pmiserv_pmi.c | 51 ++--
src/pm/hydra/pm/pmiserv/pmiserv_pmi.h | 2 +-
src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c | 100 +++---
src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c | 249 ++++++--------
src/pm/hydra/pm/pmiserv/pmiserv_utils.c | 364 ++++++++++----------
src/pm/hydra/pm/pmiserv/pmiserv_utils.h | 3 +-
.../bootstrap/external/external_common_launch.c | 15 +-
src/pm/hydra/tools/bootstrap/external/ll.h | 3 +-
src/pm/hydra/tools/bootstrap/external/ll_launch.c | 3 +-
src/pm/hydra/tools/bootstrap/external/pbs.h | 3 +-
src/pm/hydra/tools/bootstrap/external/pbs_launch.c | 9 +-
src/pm/hydra/tools/bootstrap/external/pbs_wait.c | 3 +-
src/pm/hydra/tools/bootstrap/external/slurm.h | 3 +-
.../hydra/tools/bootstrap/external/slurm_launch.c | 3 +-
.../hydra/tools/bootstrap/persist/persist_launch.c | 6 +-
.../hydra/tools/bootstrap/persist/persist_server.c | 9 +-
src/pm/hydra/tools/bootstrap/src/bsci_init.c.in | 3 +-
src/pm/hydra/tools/ckpoint/blcr/ckpoint_blcr.c | 21 +-
src/pm/hydra/tools/ckpoint/ckpoint.c | 6 +-
src/pm/hydra/tools/demux/demux.c | 9 +-
src/pm/hydra/tools/demux/demux.h | 3 +-
src/pm/hydra/tools/demux/demux_poll.c | 3 +-
src/pm/hydra/tools/demux/demux_select.c | 3 +-
src/pm/hydra/tools/nameserver/hydra_nameserver.c | 21 +-
src/pm/hydra/tools/topo/hwloc/topo_hwloc.c | 21 +-
src/pm/hydra/ui/mpich/mpiexec.c | 2 +-
src/pm/hydra/ui/mpich/utils.c | 36 +--
src/pm/hydra/utils/alloc/alloc.c | 12 +-
src/pm/hydra/utils/args/args.c | 18 +-
src/pm/hydra/utils/dbg/dbg.c | 3 +-
src/pm/hydra/utils/env/env.c | 3 +-
src/pm/hydra/utils/others/others.c | 3 +-
src/pm/hydra/utils/sock/sock.c | 21 +-
src/pm/hydra/utils/string/string.c | 3 +-
44 files changed, 716 insertions(+), 886 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-223-gc532aac
by noreply@mpich.org 18 May '13
by noreply@mpich.org 18 May '13
18 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via c532aacc14f77a04ffca0c212731700a5d3d9a01 (commit)
via 76b46a77b7bffd88a19db4011b1b4165f718f44d (commit)
from 533b8b374eec4562d4a50d5ef87e1695c43efad1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/c532aacc14f77a04ffca0c212731700a5…
commit c532aacc14f77a04ffca0c212731700a5d3d9a01
Author: Jed Brown <jedbrown(a)mcs.anl.gov>
Date: Sat May 18 12:55:38 2013 -0500
test: add attrdeleteget, MPI_Attr_get called from delete_fn
With MS-MPI 64-bit from HPC Pack 2008 and 2012, MPI_Attr_get returns
error code 773 when called from delete_fn on a communicator obtained
from MPI_Comm_split.
The standard is not explicit that the 'comm' argument of delete_fn must
be valid, so this test is only in effect when !USE_STRICT_MPI.
Signed-off-by: Jed Brown <jedbrown(a)mcs.anl.gov>
Signed-off-by: Satish Balay <balay(a)mcs.anl.gov>
diff --git a/test/mpi/.gitignore b/test/mpi/.gitignore
index 3aadba2..0bdcd15 100644
--- a/test/mpi/.gitignore
+++ b/test/mpi/.gitignore
@@ -51,6 +51,7 @@
/attr/attrerr
/attr/attrerrcomm
/attr/attrerrtype
+/attr/attrdeleteget
/attr/attric
/attr/attrorder
/attr/attrordercomm
diff --git a/test/mpi/attr/Makefile.am b/test/mpi/attr/Makefile.am
index a672192..e1d788b 100644
--- a/test/mpi/attr/Makefile.am
+++ b/test/mpi/attr/Makefile.am
@@ -18,6 +18,7 @@ noinst_PROGRAMS = \
attrerr \
attrerrcomm \
attrerrtype \
+ attrdeleteget \
attr2type \
attrorder \
attrordercomm \
diff --git a/test/mpi/attr/attrdeleteget.c b/test/mpi/attr/attrdeleteget.c
new file mode 100644
index 0000000..4d63eeb
--- /dev/null
+++ b/test/mpi/attr/attrdeleteget.c
@@ -0,0 +1,49 @@
+/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
+/*
+ *
+ * (C) 2013 by Argonne National Laboratory.
+ * See COPYRIGHT in top-level directory.
+ */
+
+#include <stdio.h>
+#include "mpi.h"
+#include "mpitest.h"
+
+int key = MPI_KEYVAL_INVALID;
+char a[100];
+
+int delete_fn (MPI_Comm, int, void *, void *);
+
+int main(int argc,char **argv)
+{
+ MPI_Comm scomm;
+ int errs = 0;
+
+ MTest_Init(&argc, &argv);
+ MPI_Comm_split(MPI_COMM_WORLD, 1, 0, &scomm);
+ MPI_Comm_create_keyval(MPI_NULL_COPY_FN, delete_fn, &key, &errs);
+ MPI_Comm_set_attr(scomm, key, a);
+ MPI_Comm_free(&scomm);
+ MTest_Finalize(errs);
+ MPI_Finalize();
+ return 0;
+}
+
+int delete_fn(MPI_Comm comm,int keyval,void *attr_val,void *extra_state)
+{
+#ifndef USE_STRICT_MPI
+ int err,flg,*errs = extra_state;
+ void *ptr;
+
+ if (comm == MPI_COMM_NULL) {
+ printf("MPI_COMM_NULL passed to delete_fn\n");
+ (*errs)++;
+ }
+ err = MPI_Comm_get_attr(comm,key,&ptr,&flg);
+ if (err != MPI_SUCCESS) {
+ printf("MPI_Comm_get_attr returned error %d, presumably due to invalid communicator\n", err);
+ (*errs)++;
+ }
+#endif
+ return 0;
+}
diff --git a/test/mpi/attr/testlist b/test/mpi/attr/testlist
index 61bd613..4db94df 100644
--- a/test/mpi/attr/testlist
+++ b/test/mpi/attr/testlist
@@ -7,6 +7,7 @@ attrend2 1
attrend2 5
attrerrcomm 1
attrerrtype 1
+attrdeleteget 1
attr2type 1
attrorder 1
attrordercomm 1
http://git.mpich.org/mpich.git/commitdiff/76b46a77b7bffd88a19db4011b1b4165f…
commit 76b46a77b7bffd88a19db4011b1b4165f718f44d
Author: Jed Brown <jedbrown(a)mcs.anl.gov>
Date: Fri May 17 22:41:48 2013 -0500
config: change PAC_FUNC_NEEDS_DECL to check by assignment
The old method attempts to create a failed compile when the function
*is* already declared, by creating an incompatible declaration. That is
insufficient with clang-3.2, which only warns in case of incompatible
redeclaration of a library function:
conftest.c:44:5: warning: incompatible redeclaration of library function 'strncmp'
int strncmp(double, int, double, const char *);
^
/usr/include/string.h:143:12: note: 'strncmp' is a builtin with type 'int (const char *, const char *, size_t)'
extern int strncmp (const char *__s1, const char *__s2, size_t __n)
^
1 warning generated.
Instead, we take the opposite approach, generating a failed compile when
the library function has *not* been declared in the header.
void (*fptr)(void) = (void(*)(void))strncmp;
Signed-off-by: Jed Brown <jedbrown(a)mcs.anl.gov>
diff --git a/confdb/aclocal_cc.m4 b/confdb/aclocal_cc.m4
index 7a92a8a..10964e1 100644
--- a/confdb/aclocal_cc.m4
+++ b/confdb/aclocal_cc.m4
@@ -1205,25 +1205,22 @@ dnl Sets 'NEEDS_<funcname>_DECL' if 'funcname' is not declared by the
dnl headerfiles.
dnl
dnl Approach:
-dnl Try to compile a program with the function, but passed with an incorrect
-dnl calling sequence. If the compilation fails, then the declaration
-dnl is provided within the header files. If the compilation succeeds,
-dnl the declaration is required.
+dnl Attempt to assign library function to function pointer. If the function
+dnl is not declared in a header, this will fail. Use a non-static global so
+dnl the compiler does not warn about an unused variable.
dnl
-dnl We use a 'double' as the first argument to try and catch varargs
-dnl routines that may use an int or pointer as the first argument.
+dnl Simply calling the function is not enough because C89 compilers allow
+dnl calls to implicitly-defined functions. Re-declaring a library function
+dnl with an incompatible prototype is also not sufficient because some
+dnl compilers (notably clang-3.2) only produce a warning in this case.
dnl
-dnl There is one difficulty - if the compiler has been instructed to
-dnl fail on implicitly defined functions, then this test will always
-dnl fail.
-dnl
dnl D*/
AC_DEFUN([PAC_FUNC_NEEDS_DECL],[
AC_CACHE_CHECK([whether $2 needs a declaration],
pac_cv_func_decl_$2,[
AC_TRY_COMPILE([$1
-int $2(double, int, double, const char *);],[int a=$2(1.0,27,1.0,"foo");],
-pac_cv_func_decl_$2=yes,pac_cv_func_decl_$2=no)])
+void (*fptr)(void) = (void(*)(void))$2;],[],
+pac_cv_func_decl_$2=no,pac_cv_func_decl_$2=yes)])
if test "$pac_cv_func_decl_$2" = "yes" ; then
changequote(<<,>>)dnl
define(<<PAC_FUNC_NAME>>, translit(NEEDS_$2_DECL, [a-z *], [A-Z__]))dnl
-----------------------------------------------------------------------
Summary of changes:
confdb/aclocal_cc.m4 | 21 +++++++----------
test/mpi/.gitignore | 1 +
test/mpi/attr/Makefile.am | 1 +
test/mpi/attr/attrdeleteget.c | 49 +++++++++++++++++++++++++++++++++++++++++
test/mpi/attr/testlist | 1 +
5 files changed, 61 insertions(+), 12 deletions(-)
create mode 100644 test/mpi/attr/attrdeleteget.c
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-221-g533b8b3
by noreply@mpich.org 18 May '13
by noreply@mpich.org 18 May '13
18 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 533b8b374eec4562d4a50d5ef87e1695c43efad1 (commit)
via 11fecdc39d1a05c369fde7adae78c941166bb27a (commit)
via ac596401399adc5a21268b14cd4354c55694d994 (commit)
via 8ac5694719b68dad966c5b1fe03f85c46ccdf7e9 (commit)
via 02b0a83fa24fc4232b8b494d04bdf2f003670702 (commit)
from cf31e37add0a36154ca5849c9390be38f870f750 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/533b8b374eec4562d4a50d5ef87e1695c…
commit 533b8b374eec4562d4a50d5ef87e1695c43efad1
Author: Su Huang <suhuang(a)us.ibm.com>
Date: Wed Apr 17 07:45:23 2013 -0400
Hardcoded to wrong value 400000 if MP_POLLING_INTERVAL not set
(ibm) D189371
(ibm) b02a38e0680dbd1471884439214ee6afe13baeb4
(ibm) c8ebe0da80732297de985c3640caa4c5623c55d4
(ibm) 48d1993041c3820a468d2ee6c838ff0a5bc1154a
diff --git a/src/mpid/pamid/src/mpidi_util.c b/src/mpid/pamid/src/mpidi_util.c
index 0f59a78..ee8eda9 100644
--- a/src/mpid/pamid/src/mpidi_util.c
+++ b/src/mpid/pamid/src/mpidi_util.c
@@ -42,17 +42,26 @@
#define ONEM (1<<20)
#define ONEG (1<<30)
-
+#define PAMI_ASYNC_EXT_ATTR 2000
#if (MPIDI_PRINTENV || MPIDI_STATISTICS || MPIDI_BANNER)
MPIDI_printenv_t *mpich_env;
extern char* mp_euilib;
char mp_euidevice[20];
extern pami_extension_t pe_extension;
+extern pamix_extension_info_t PAMIX_Extensions;
+ typedef enum {
+ /* Attribute usage : type : default : description */
+ PAMI_ASYNC_ATTR
+ = PAMI_ASYNC_EXT_ATTR,
+ PAMI_CONTEXT_TIMER_INTERVAL, /**< U: size_t : N/A : current timer interval in PAMI context */
+ } pamix_attribute_name_async_t;
+
void MPIDI_Set_mpich_env(int rank, int size) {
static char polling_buf[32]="";
int rc;
+ pami_configuration_t config;
mpich_env->this_task = rank;
mpich_env->nprocs = size;
@@ -60,14 +69,20 @@ void MPIDI_Set_mpich_env(int rank, int size) {
mpich_env->use_token_flow_control=MPIDI_Process.is_token_flow_control_on;
mpich_env->mp_statistics=MPIDI_Process.mp_statistics;
if (mpich_env->polling_interval == 0) {
- mpich_env->polling_interval = 400000;
+ bzero(&config, sizeof(config));
+ config.name = (pami_attribute_name_t)PAMI_CONTEXT_TIMER_INTERVAL;
+ rc= PAMI_Context_query(MPIDI_Context[0], &config, 1);
+ mpich_env->polling_interval = config.value.intval;;
sprintf(polling_buf, "MP_POLLING_INTERVAL=%d",
mpich_env->polling_interval); /* microseconds */
rc = putenv(polling_buf);
}
if (mpich_env->retransmit_interval == 0) {
- mpich_env->retransmit_interval = 400000;
- sprintf(polling_buf, "MP_POLLING_INTERVAL=%d",
+ bzero(&config, sizeof(config));
+ config.name = (pami_attribute_name_ext_t)PAMI_CONTEXT_RETRANSMIT_INTERVAL;
+ rc= PAMI_Context_query(MPIDI_Context[0], &config, 1);
+ mpich_env->retransmit_interval = config.value.intval;
+ sprintf(polling_buf, "MP_RETRANSMIT_INTERVAL=%d",
mpich_env->retransmit_interval); /* microseconds */
rc = putenv(polling_buf);
}
@@ -135,11 +150,10 @@ void MPIDI_Setup_networkenv()
* mpi_printenv variable can print them out.
*/
if ( mpich_env->retransmit_interval == 0 ) {
- if (mpich_env->transport_type == IS_US) { /* default for IP is 10000 loops */
- mpich_env->retransmit_interval = 4000000;
- } else {
- mpich_env->retransmit_interval = 10000;
- }
+ bzero(&config, sizeof(config));
+ config.name = (pami_attribute_name_t)PAMI_CONTEXT_RETRANSMIT_INTERVAL;
+ rc= PAMI_Context_query(MPIDI_Context[0], &config, 1);
+ mpich_env->retransmit_interval = config.value.intval;
}
}
http://git.mpich.org/mpich.git/commitdiff/11fecdc39d1a05c369fde7adae78c9411…
commit 11fecdc39d1a05c369fde7adae78c941166bb27a
Author: Sameh Sharkawi <sssharka(a)us.ibm.com>
Date: Mon Apr 22 15:19:49 2013 -0400
pami_tune -o option renames directory
1 - Fixes for command line paramters
2 - Fix for allgather PAMI_IN_PLACE handling in collective selection path
(ibm) D189995
(ibm) 7Z8
(ibm) bad205a6147cebce9a40f3b50560df80d3ddb354
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/coll/allgather/mpido_allgather.c b/src/mpid/pamid/src/coll/allgather/mpido_allgather.c
index 5b53acd..36e7fe7 100644
--- a/src/mpid/pamid/src/coll/allgather/mpido_allgather.c
+++ b/src/mpid/pamid/src/coll/allgather/mpido_allgather.c
@@ -677,6 +677,8 @@ MPIDO_Allgather_simple(const void *sendbuf,
MPID_Segment_pack(&segment, 0, &last, snd_noncontig_buff);
}
}
+ else
+ sbuf = PAMI_IN_PLACE;
TRACE_ERR("Using PAMI-level allgather protocol\n");
pami_xfer_t allgather;
diff --git a/src/mpid/pamid/src/mpidi_util.c b/src/mpid/pamid/src/mpidi_util.c
index a3b565e..0f59a78 100644
--- a/src/mpid/pamid/src/mpidi_util.c
+++ b/src/mpid/pamid/src/mpidi_util.c
@@ -26,11 +26,16 @@
*/
#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
#include <limits.h>
#include <nl_types.h>
#include <mpidimpl.h>
#include "mpidi_util.h"
+#define PAMI_TUNE_MAX_ITER 2000
+
/* Short hand for sizes */
#define ONE (1)
#define ONEK (1<<10)
@@ -1283,7 +1288,7 @@ Options:\n\
-g Comma separated list of geometry sizes to benchmark\n\
(Default: Powers of 2 (plus and minus one as well))\n\n\
-i Number of benchmark iterations per algorithm\n\
- (Default: 1000)\n\n\
+ (Default: 1000. Maximum is 2000)\n\n\
-f <file> Input INI file containing benchmark parameters\n\
You can override a parameter with a command line argument\n\n\
-o <file> Output XML file containing benchmark results\n\
@@ -1308,9 +1313,9 @@ static void MPIDI_collsel_init_advisor_params(advisor_params_t *params)
params->procs_per_node = NULL;
params->geometry_sizes = NULL;
params->message_sizes = NULL;
- params->iter = 1000;
/* Set the following to -1, so that we can
check if the user has set them or not */
+ params->iter = -1;
params->verify = -1;
params->verbose = -1;
params->checkpoint = -1;
@@ -1527,13 +1532,20 @@ static int MPIDI_collsel_process_output_file(char *filename, char **out_file)
{
char *newname;
int i, filename_len, ret = 0;
+ struct stat ost;
filename_len = strlen(filename);
/* Check if file already exists */
- if(access(filename, F_OK) == 0)
+ if(stat(filename, &ost) == 0)
{
+ if(!S_ISREG(ost.st_mode))
+ {
+ fprintf(stderr, "Error: %s exists and is not a regular file\n", filename);
+ return 1;
+ }
fprintf(stderr, "File %s already exists, renaming existing file\n", filename);
+
newname = (char *) MPIU_Malloc(filename_len + 5);
for (i = 0; i < 500; ++i)
{
@@ -1599,15 +1611,27 @@ static int MPIDI_collsel_process_ini_file(const char *filename, advisor_params_t
{
char *line, *start, *name, *value;
int ret = 0;
+ struct stat ist;
+
+ if(stat(filename, &ist) == 0)
+ {
+ if(!S_ISREG(ist.st_mode))
+ {
+ fprintf(stderr, "Error: %s is not a regular file\n", filename);
+ return 1;
+ }
+ }
+
FILE *file = fopen(filename, "r");
if(!file)
{
- fprintf(stderr, "Error. Can't open file %s\n", filename);
+ fprintf(stderr, "Error: Cannot open file %s: %s\n",
+ filename, strerror(errno));
return 1;
}
- line = (char *) MPIU_Malloc(1000);
+ line = (char *) MPIU_Malloc(2000);
- while (fgets(line, 1000, file) != NULL)
+ while (fgets(line, 2000, file) != NULL)
{
start = MPIDI_collsel_ltrim(MPIDI_collsel_rtrim(line));
/* Skip comments and sections */
@@ -1642,10 +1666,10 @@ static int MPIDI_collsel_process_ini_file(const char *filename, advisor_params_t
}
else if(strcmp(name, "iterations") == 0)
{
- if(params->iter == 1000)
+ if(params->iter == -1)
{
params->iter = atoi(value);
- if(params->iter <= 0)
+ if(params->iter <= 0 || params->iter > PAMI_TUNE_MAX_ITER)
{
if(!task_id)
fprintf(stderr, "Invalid iteration count: %s in file: %s\n", value, filename);
@@ -1685,6 +1709,7 @@ static int MPIDI_collsel_process_ini_file(const char *filename, advisor_params_t
static int MPIDI_collsel_process_arg(int argc, char *argv[], advisor_params_t *params, char ** out_file)
{
int i,c,ret = 0;
+ char *in_file = NULL;
MPIDI_collsel_init_xfer_tables();
params->verify = 0;
@@ -1704,7 +1729,7 @@ static int MPIDI_collsel_process_arg(int argc, char *argv[], advisor_params_t *p
ret = MPIDI_collsel_process_geo_sizes(optarg, params);
break;
case 'f':
- ret = MPIDI_collsel_process_ini_file(optarg, params, out_file);
+ in_file = (char *) optarg;
break;
case 'o':
if(!task_id) /* Only task 0 creates o/p file */
@@ -1712,7 +1737,7 @@ static int MPIDI_collsel_process_arg(int argc, char *argv[], advisor_params_t *p
break;
case 'i':
params->iter = atoi(optarg);
- if(params->iter <= 0)
+ if(params->iter <= 0 || params->iter > PAMI_TUNE_MAX_ITER)
{
if(!task_id)
fprintf(stderr, "Invalid iteration count %s\n", optarg);
@@ -1756,6 +1781,17 @@ static int MPIDI_collsel_process_arg(int argc, char *argv[], advisor_params_t *p
}
if(ret) return ret;
}
+ /* INI file is processed last as we don't wan't to override
+ * command line parameters. Also any invalid value in the INI
+ * file if overriden by a command line flag should not generate
+ * an error
+ */
+ if(in_file != NULL)
+ {
+ ret = MPIDI_collsel_process_ini_file(in_file, params, out_file);
+ if(ret) return ret;
+ }
+
if(!task_id)
{
if (optind < argc)
@@ -1778,7 +1814,8 @@ static int MPIDI_collsel_process_arg(int argc, char *argv[], advisor_params_t *p
params->collectives[params->num_collectives++] = i;
}
}
- /* If user did not set any of the following parameters, disable them */
+ /* If user did not set any of the following parameters, set default value */
+ if(params->iter == -1) params->iter = 1000;
if(params->verbose == -1) params->verbose = 0;
if(params->verify == -1) params->verify = 0;
if(params->checkpoint == -1) params->checkpoint = 0;
@@ -1806,7 +1843,7 @@ static void MPIDI_collsel_print_params(advisor_params_t *params, char *output_fi
}
printf("\n Iterations : %d\n", params->iter);
printf(" Output file : %s\n", output_file);
- printf(" Checkpoint mode : %d\n", params->checkpoint);
+/* printf(" Checkpoint mode : %d\n", params->checkpoint); */
printf(" Diagnostics mode : %d\n", params->verify);
printf(" Verbose mode : %d\n", params->verbose);
}
http://git.mpich.org/mpich.git/commitdiff/ac596401399adc5a21268b14cd4354c55…
commit ac596401399adc5a21268b14cd4354c55694d994
Author: Sameh Sharkawi <sssharka(a)us.ibm.com>
Date: Thu Apr 18 16:34:50 2013 -0400
One more fix for correctly displaying warnings in tune mode
+ build fix
(ibm) D189887
(ibm) 556b0b576c22ef4cc8b745d2ebc57bf4cf354818
(ibm) cee6d5876ad57094c8631e6c3faaef1bb213377a
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/mpidi_util.c b/src/mpid/pamid/src/mpidi_util.c
index 9605035..a3b565e 100644
--- a/src/mpid/pamid/src/mpidi_util.c
+++ b/src/mpid/pamid/src/mpidi_util.c
@@ -1379,27 +1379,27 @@ static int MPIDI_collsel_process_collectives(char *coll_arg, advisor_params_t *p
{
if(strcmp(coll, xfer_array_str[i]) == 0)
{
- if(i == 4 )
+ if(i == 4)
{
- if(infolevel)
+ if(infolevel >= 1)
fprintf(stderr,"WARNING: MPICH (pami_tune) doesn't support tuning for ALLGATHERV. ALLGATHERV tuning will be skipped.\nTune for ALLGATHERV_INT instead\n");
break;
}
- else if(i == 7 )
+ else if(i == 7)
{
- if(infolevel)
+ if(infolevel >= 1)
fprintf(stderr,"WARNING: MPICH (pami_tune) doesn't support tuning for SCATTERV. SCATTERV tuning will be skipped.\nTune for SCATTERV_INT instead\n");
break;
}
- else if(i == 10 )
+ else if(i == 10)
{
- if(infolevel)
+ if(infolevel >= 1)
fprintf(stderr,"WARNING: MPICH (pami_tune) doesn't support tuning for GATHERV. GATHERV tuning will be skipped.\nTune for GATHERV_INT instead\n");
break;
}
- else if(i == 14 )
+ else if(i == 14)
{
- if(infolevel)
+ if(infolevel >= 1)
fprintf(stderr,"WARNING: MPICH (pami_tune) doesn't support tuning for ALLTOALLV. ALLTOALLV tuning will be skipped.\nTune for ALLTOALLV_INT instead\n");
break;
}
http://git.mpich.org/mpich.git/commitdiff/8ac5694719b68dad966c5b1fe03f85c46…
commit 8ac5694719b68dad966c5b1fe03f85c46ccdf7e9
Author: Sameh Sharkawi <sssharka(a)us.ibm.com>
Date: Thu Apr 18 15:29:12 2013 -0400
Changing default iter count to 1000
(ibm) D189889
(ibm) 7Z8
(ibm) b987ee6281ea76879793f596a0f6c93c425716d7
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/mpidi_util.c b/src/mpid/pamid/src/mpidi_util.c
index 0d51f1c..9605035 100644
--- a/src/mpid/pamid/src/mpidi_util.c
+++ b/src/mpid/pamid/src/mpidi_util.c
@@ -1281,10 +1281,10 @@ Options:\n\
-m Comma separated list of message sizes to benchmark\n\
(Default: 1 to 2^k, where k <= 20)\n\n\
-g Comma separated list of geometry sizes to benchmark\n\
- (Default: 2 to 2^k, where k <= world geometry size)\n\n\
+ (Default: Powers of 2 (plus and minus one as well))\n\n\
-i Number of benchmark iterations per algorithm\n\
- (Default: 100)\n\n\
- -f <file> Input file containing benchmark parameters\n\
+ (Default: 1000)\n\n\
+ -f <file> Input INI file containing benchmark parameters\n\
You can override a parameter with a command line argument\n\n\
-o <file> Output XML file containing benchmark results\n\
(Default: pami_tune_results.xml)\n\n\
@@ -1308,7 +1308,7 @@ static void MPIDI_collsel_init_advisor_params(advisor_params_t *params)
params->procs_per_node = NULL;
params->geometry_sizes = NULL;
params->message_sizes = NULL;
- params->iter = 100;
+ params->iter = 1000;
/* Set the following to -1, so that we can
check if the user has set them or not */
params->verify = -1;
@@ -1534,7 +1534,7 @@ static int MPIDI_collsel_process_output_file(char *filename, char **out_file)
if(access(filename, F_OK) == 0)
{
fprintf(stderr, "File %s already exists, renaming existing file\n", filename);
- newname = (char *) MPIU_Malloc(filename_len + 4);
+ newname = (char *) MPIU_Malloc(filename_len + 5);
for (i = 0; i < 500; ++i)
{
sprintf(newname,"%s.%d", filename, i);
@@ -1642,7 +1642,7 @@ static int MPIDI_collsel_process_ini_file(const char *filename, advisor_params_t
}
else if(strcmp(name, "iterations") == 0)
{
- if(params->iter == 100)
+ if(params->iter == 1000)
{
params->iter = atoi(value);
if(params->iter <= 0)
http://git.mpich.org/mpich.git/commitdiff/02b0a83fa24fc4232b8b494d04bdf2f00…
commit 02b0a83fa24fc4232b8b494d04bdf2f003670702
Author: Sameh Sharkawi <sssharka(a)us.ibm.com>
Date: Thu Apr 18 15:19:20 2013 -0400
Alltoallv_int is missing in the xml file
1 - A fix where all (v) algorithms are disabled in collective selection
and only (v)_int algorithms are enabled since MPICH only supports
(v)_int algorithms. IN the tune case, (v) collectives are skipped
even if user selected them. Also a warning message is displayed to stderr
if infolevel is >= 1 in collective selection and tuning cases.
2 - Another fix for one task geometries where the fast_query object was
not initialized but was still used and may cause core dump.
(ibm) D189887
(ibm) 7Z8
(ibm) 0ea3f16a9fd6e2fbc1cfffeb5401cce20a861e96
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
This is the 2nd commit message:
BGQ build break fix
diff --git a/src/mpid/pamid/src/coll/allgather/mpido_allgather.c b/src/mpid/pamid/src/coll/allgather/mpido_allgather.c
index 47e9eb4..5b53acd 100644
--- a/src/mpid/pamid/src/coll/allgather/mpido_allgather.c
+++ b/src/mpid/pamid/src/coll/allgather/mpido_allgather.c
@@ -616,35 +616,35 @@ MPIDO_Allgather_simple(const void *sendbuf,
send_size = recv_size;
- if(MPIDI_Pamix_collsel_advise != NULL)
- {
- advisor_algorithm_t advisor_algorithms[1];
- int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_ALLGATHER, send_size, advisor_algorithms, 1);
- if(num_algorithms)
- {
- if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
- {
- return MPIR_Allgather(sendbuf, sendcount, sendtype,
- recvbuf, recvcount, recvtype,
- comm_ptr, mpierrno);
- }
- }
- }
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
+ {
+ advisor_algorithm_t advisor_algorithms[1];
+ int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_ALLGATHER, send_size, advisor_algorithms, 1);
+ if(num_algorithms)
+ {
+ if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
+ {
+ return MPIR_Allgather(sendbuf, sendcount, sendtype,
+ recvbuf, recvcount, recvtype,
+ comm_ptr, mpierrno);
+ }
+ }
+ }
rbuf = (char *)recvbuf+recv_true_lb;
- if(!rcv_data_contig)
- {
- rcv_noncontig_buff = MPIU_Malloc(recv_size * size);
- rbuf = rcv_noncontig_buff;
- if(rcv_noncontig_buff == NULL)
- {
- MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
- "Fatal: Cannot allocate pack buffer");
- }
- if(sendbuf == MPI_IN_PLACE)
+ if(!rcv_data_contig)
+ {
+ rcv_noncontig_buff = MPIU_Malloc(recv_size * size);
+ rbuf = rcv_noncontig_buff;
+ if(rcv_noncontig_buff == NULL)
+ {
+ MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
+ "Fatal: Cannot allocate pack buffer");
+ }
+ if(sendbuf == MPI_IN_PLACE)
{
- sbuf = PAMI_IN_PLACE;
+ sbuf = PAMI_IN_PLACE;
size_t extent;
MPID_Datatype_get_extent_macro(recvtype,extent);
MPIR_Localcopy(recvbuf + (rank*recvcount*extent), recvcount, recvtype,
diff --git a/src/mpid/pamid/src/coll/allgatherv/mpido_allgatherv.c b/src/mpid/pamid/src/coll/allgatherv/mpido_allgatherv.c
index 3fd0eb6..cec19d4 100644
--- a/src/mpid/pamid/src/coll/allgatherv/mpido_allgatherv.c
+++ b/src/mpid/pamid/src/coll/allgatherv/mpido_allgatherv.c
@@ -657,9 +657,9 @@ MPIDO_Allgatherv_simple(const void *sendbuf,
dt_null,
recv_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
- {
- advisor_algorithm_t advisor_algorithms[1];
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
+ {
+ advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_ALLGATHERV_INT, rcvtypelen * recvcounts[0], advisor_algorithms, 1);
if(num_algorithms)
{
diff --git a/src/mpid/pamid/src/coll/allreduce/mpido_allreduce.c b/src/mpid/pamid/src/coll/allreduce/mpido_allreduce.c
index b948b8e..b921f9d 100644
--- a/src/mpid/pamid/src/coll/allreduce/mpido_allreduce.c
+++ b/src/mpid/pamid/src/coll/allreduce/mpido_allreduce.c
@@ -423,7 +423,7 @@ int MPIDO_Allreduce_simple(const void *sendbuf,
data_contig, data_size, data_ptr, data_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_ALLREDUCE, data_size * count, advisor_algorithms, 1);
diff --git a/src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c b/src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c
index 39a008f..8246b21 100644
--- a/src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c
+++ b/src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c
@@ -242,51 +242,51 @@ int MPIDO_Alltoall_simple(const void *sendbuf,
rbuf = (char *)recvbuf + rdt_true_lb;
recv_size = rcvlen * recvcount;
- if(MPIDI_Pamix_collsel_advise != NULL)
- {
- advisor_algorithm_t advisor_algorithms[1];
- int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_ALLTOALL, recv_size, advisor_algorithms, 1);
- if(num_algorithms)
- {
- if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
- {
- return MPIR_Alltoall_intra(sendbuf, sendcount, sendtype,
- recvbuf, recvcount, recvtype,
- comm_ptr, mpierrno);
- }
- }
- }
-
- if(sendbuf != MPI_IN_PLACE)
- {
- MPIDI_Datatype_get_info(1, sendtype, snd_contig, sndlen, sdt, sdt_true_lb);
- sbuf = (char *)sendbuf + sdt_true_lb;
- send_size = sndlen * sendcount;
- if(!snd_contig)
- {
- snd_noncontig_buff = MPIU_Malloc(send_size);
- sbuf = snd_noncontig_buff;
- if(snd_noncontig_buff == NULL)
- {
- MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
- "Fatal: Cannot allocate pack buffer");
- }
- DLOOP_Offset last = send_size;
- MPID_Segment_init(sendbuf, sendcount, sendtype, &segment, 0);
- MPID_Segment_pack(&segment, 0, &last, snd_noncontig_buff);
-
- }
- }
-
- if(!rcv_contig)
- {
- rcv_noncontig_buff = MPIU_Malloc(recv_size);
- rbuf = rcv_noncontig_buff;
- if(rcv_noncontig_buff == NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
+ {
+ advisor_algorithm_t advisor_algorithms[1];
+ int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_ALLTOALL, recv_size, advisor_algorithms, 1);
+ if(num_algorithms)
+ {
+ if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
{
- MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
- "Fatal: Cannot allocate pack buffer");
+ return MPIR_Alltoall_intra(sendbuf, sendcount, sendtype,
+ recvbuf, recvcount, recvtype,
+ comm_ptr, mpierrno);
+ }
+ }
+ }
+
+ if(sendbuf != MPI_IN_PLACE)
+ {
+ MPIDI_Datatype_get_info(1, sendtype, snd_contig, sndlen, sdt, sdt_true_lb);
+ sbuf = (char *)sendbuf + sdt_true_lb;
+ send_size = sndlen * sendcount;
+ if(!snd_contig)
+ {
+ snd_noncontig_buff = MPIU_Malloc(send_size);
+ sbuf = snd_noncontig_buff;
+ if(snd_noncontig_buff == NULL)
+ {
+ MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
+ "Fatal: Cannot allocate pack buffer");
}
+ DLOOP_Offset last = send_size;
+ MPID_Segment_init(sendbuf, sendcount, sendtype, &segment, 0);
+ MPID_Segment_pack(&segment, 0, &last, snd_noncontig_buff);
+
+ }
+ }
+
+ if(!rcv_contig)
+ {
+ rcv_noncontig_buff = MPIU_Malloc(recv_size);
+ rbuf = rcv_noncontig_buff;
+ if(rcv_noncontig_buff == NULL)
+ {
+ MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
+ "Fatal: Cannot allocate pack buffer");
+ }
if(sendbuf == MPI_IN_PLACE)
{
size_t extent;
diff --git a/src/mpid/pamid/src/coll/alltoallv/mpido_alltoallv.c b/src/mpid/pamid/src/coll/alltoallv/mpido_alltoallv.c
index 3934877..d2b1c14 100644
--- a/src/mpid/pamid/src/coll/alltoallv/mpido_alltoallv.c
+++ b/src/mpid/pamid/src/coll/alltoallv/mpido_alltoallv.c
@@ -440,16 +440,16 @@ int MPIDO_Alltoallv_simple(const void *sendbuf,
/* Check if collsel has MPICH algorithm as the best performing one, if so, call MPICH now w/o doing any conversions */
- MPIDI_Datatype_get_info(1, recvtype, rcv_contig, rcvtypelen, rdt, rdt_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
- {
- advisor_algorithm_t advisor_algorithms[1];
- int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_ALLTOALLV_INT, rcvtypelen * recvcounts[0], advisor_algorithms, 1);
- if(num_algorithms)
- {
- if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
- {
- return MPIR_Alltoallv(sendbuf, sendcounts, senddispls, sendtype,
+ MPIDI_Datatype_get_info(1, recvtype, rcv_contig, rcvtypelen, rdt, rdt_true_lb);
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
+ {
+ advisor_algorithm_t advisor_algorithms[1];
+ int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_ALLTOALLV_INT, rcvtypelen * recvcounts[0], advisor_algorithms, 1);
+ if(num_algorithms)
+ {
+ if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
+ {
+ return MPIR_Alltoallv(sendbuf, sendcounts, senddispls, sendtype,
recvbuf, recvcounts, recvdispls, recvtype,
comm_ptr, mpierrno);
}
diff --git a/src/mpid/pamid/src/coll/bcast/mpido_bcast.c b/src/mpid/pamid/src/coll/bcast/mpido_bcast.c
index fc7a237..05d0c60 100644
--- a/src/mpid/pamid/src/coll/bcast/mpido_bcast.c
+++ b/src/mpid/pamid/src/coll/bcast/mpido_bcast.c
@@ -289,12 +289,11 @@ int MPIDO_Bcast_simple(void *buffer,
const struct MPIDI_Comm* const mpid = &(comm_ptr->mpid);
const int rank = comm_ptr->rank;
-
/* Must calculate data_size based on count=1 in case it's total size is > integer */
int data_size_one;
MPIDI_Datatype_get_info(1, datatype,
data_contig, data_size_one, data_ptr, data_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_BROADCAST, data_size_one * count, advisor_algorithms, 1);
diff --git a/src/mpid/pamid/src/coll/gather/mpido_gather.c b/src/mpid/pamid/src/coll/gather/mpido_gather.c
index d521c1f..6e9fff3 100644
--- a/src/mpid/pamid/src/coll/gather/mpido_gather.c
+++ b/src/mpid/pamid/src/coll/gather/mpido_gather.c
@@ -393,7 +393,7 @@ int MPIDO_Gather_simple(const void *sendbuf,
{
MPIDI_Datatype_get_info(sendcount, sendtype, snd_contig,
send_size, data_ptr, true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_GATHER, send_size, advisor_algorithms, 1);
@@ -425,7 +425,7 @@ int MPIDO_Gather_simple(const void *sendbuf,
}
else
{
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
MPIDI_Datatype_get_info(recvcount, recvtype, rcv_contig,
recv_size, data_ptr, true_lb);
diff --git a/src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c b/src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c
index 0c5f284..8dddd72 100644
--- a/src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c
+++ b/src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c
@@ -264,55 +264,55 @@ int MPIDO_Gatherv_simple(const void *sendbuf,
{
MPIDI_Datatype_get_info(sendcount, sendtype, snd_contig,
send_size, data_ptr, send_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
- {
- advisor_algorithm_t advisor_algorithms[1];
- int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_GATHERV_INT, 64, advisor_algorithms, 1);
- if(num_algorithms)
- {
- if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
- {
- return MPIR_Gatherv(sendbuf, sendcount, sendtype,
- recvbuf, recvcounts, displs, recvtype,
- root, comm_ptr, mpierrno);
- }
- }
- }
-
- sbuf = (char *)sendbuf + send_true_lb;
- if (!snd_contig)
- {
- snd_noncontig_buff = MPIU_Malloc(send_size);
- sbuf = snd_noncontig_buff;
- if(snd_noncontig_buff == NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
+ {
+ advisor_algorithm_t advisor_algorithms[1];
+ int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_GATHERV_INT, 64, advisor_algorithms, 1);
+ if(num_algorithms)
+ {
+ if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
{
- MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
- "Fatal: Cannot allocate pack buffer");
+ return MPIR_Gatherv(sendbuf, sendcount, sendtype,
+ recvbuf, recvcounts, displs, recvtype,
+ root, comm_ptr, mpierrno);
}
- DLOOP_Offset last = send_size;
- MPID_Segment_init(sendbuf, sendcount, sendtype, &segment, 0);
- MPID_Segment_pack(&segment, 0, &last, snd_noncontig_buff);
- }
- }
- else
- {
- MPIDI_Datatype_get_info(1, recvtype, rcv_contig,
- rcvlen, data_ptr, recv_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
- {
- advisor_algorithm_t advisor_algorithms[1];
- int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_GATHERV_INT, 64, advisor_algorithms, 1);
- if(num_algorithms)
- {
- if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
- {
- return MPIR_Gatherv(sendbuf, sendcount, sendtype,
- recvbuf, recvcounts, displs, recvtype,
- root, comm_ptr, mpierrno);
- }
- }
- }
- }
+ }
+ }
+
+ sbuf = (char *)sendbuf + send_true_lb;
+ if(!snd_contig)
+ {
+ snd_noncontig_buff = MPIU_Malloc(send_size);
+ sbuf = snd_noncontig_buff;
+ if(snd_noncontig_buff == NULL)
+ {
+ MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
+ "Fatal: Cannot allocate pack buffer");
+ }
+ DLOOP_Offset last = send_size;
+ MPID_Segment_init(sendbuf, sendcount, sendtype, &segment, 0);
+ MPID_Segment_pack(&segment, 0, &last, snd_noncontig_buff);
+ }
+ }
+ else
+ {
+ MPIDI_Datatype_get_info(1, recvtype, rcv_contig,
+ rcvlen, data_ptr, recv_true_lb);
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
+ {
+ advisor_algorithm_t advisor_algorithms[1];
+ int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_GATHERV_INT, 64, advisor_algorithms, 1);
+ if(num_algorithms)
+ {
+ if(advisor_algorithms[0].algorithm_type == COLLSEL_EXTERNAL_ALGO)
+ {
+ return MPIR_Gatherv(sendbuf, sendcount, sendtype,
+ recvbuf, recvcounts, displs, recvtype,
+ root, comm_ptr, mpierrno);
+ }
+ }
+ }
+ }
pami_xfer_t gatherv;
rbuf = (char *)recvbuf + recv_true_lb;
@@ -354,52 +354,52 @@ int MPIDO_Gatherv_simple(const void *sendbuf,
MPID_Datatype_get_extent_macro(recvtype,extent);
MPIR_Localcopy(recvbuf + displs[rank]*extent, recvcounts[rank], recvtype,
rcv_noncontig_buff + rdispls[rank], rcounts[rank],MPI_CHAR);
- }
}
- if(sendbuf == MPI_IN_PLACE)
- {
- gatherv.cmd.xfer_gatherv_int.sndbuf = PAMI_IN_PLACE;
- }
- else
- {
- gatherv.cmd.xfer_gatherv_int.sndbuf = sbuf;
- }
- gatherv.cmd.xfer_gatherv_int.stype = PAMI_TYPE_BYTE;/* stype is ignored when sndbuf == PAMI_IN_PLACE */
- gatherv.cmd.xfer_gatherv_int.stypecount = send_size;
-
- }
- else
- {
+ }
+ if(sendbuf == MPI_IN_PLACE)
+ {
+ gatherv.cmd.xfer_gatherv_int.sndbuf = PAMI_IN_PLACE;
+ }
+ else
+ {
gatherv.cmd.xfer_gatherv_int.sndbuf = sbuf;
- gatherv.cmd.xfer_gatherv_int.stype = PAMI_TYPE_BYTE;
- gatherv.cmd.xfer_gatherv_int.stypecount = send_size;
- }
+ }
+ gatherv.cmd.xfer_gatherv_int.stype = PAMI_TYPE_BYTE;/* stype is ignored when sndbuf == PAMI_IN_PLACE */
+ gatherv.cmd.xfer_gatherv_int.stypecount = send_size;
+ }
+ else
+ {
+ gatherv.cmd.xfer_gatherv_int.sndbuf = sbuf;
+ gatherv.cmd.xfer_gatherv_int.stype = PAMI_TYPE_BYTE;
+ gatherv.cmd.xfer_gatherv_int.stypecount = send_size;
+ }
- gatherv.cb_done = cb_gatherv;
- gatherv.cookie = (void *)&gatherv_active;
- gatherv.cmd.xfer_gatherv_int.root = MPIDI_Task_to_endpoint(MPID_VCR_GET_LPID(comm_ptr->vcr, root), 0);
- gatherv.cmd.xfer_gatherv_int.rcvbuf = rbuf;
- gatherv.cmd.xfer_gatherv_int.rtype = rtype;
- gatherv.cmd.xfer_gatherv_int.rtypecounts = (int *) rcounts;
- gatherv.cmd.xfer_gatherv_int.rdispls = (int *) rdispls;
+ gatherv.cb_done = cb_gatherv;
+ gatherv.cookie = (void *)&gatherv_active;
+ gatherv.cmd.xfer_gatherv_int.root = MPIDI_Task_to_endpoint(MPID_VCR_GET_LPID(comm_ptr->vcr, root), 0);
+ gatherv.cmd.xfer_gatherv_int.rcvbuf = rbuf;
+ gatherv.cmd.xfer_gatherv_int.rtype = rtype;
+ gatherv.cmd.xfer_gatherv_int.rtypecounts = (int *) rcounts;
+ gatherv.cmd.xfer_gatherv_int.rdispls = (int *) rdispls;
- const pami_metadata_t *my_gatherv_md;
- gatherv.algorithm = mpid->coll_algorithm[PAMI_XFER_GATHERV_INT][0][0];
- my_gatherv_md = &mpid->coll_metadata[PAMI_XFER_GATHERV_INT][0][0];
+ const pami_metadata_t *my_gatherv_md;
- MPIDI_Update_last_algorithm(comm_ptr, my_gatherv_md->name);
+ gatherv.algorithm = mpid->coll_algorithm[PAMI_XFER_GATHERV_INT][0][0];
+ my_gatherv_md = &mpid->coll_metadata[PAMI_XFER_GATHERV_INT][0][0];
- MPIDI_Post_coll_t gatherv_post;
- TRACE_ERR("%s gatherv\n", MPIDI_Process.context_post.active>0?"Posting":"Invoking");
- MPIDI_Context_post(MPIDI_Context[0], &gatherv_post.state,
- MPIDI_Pami_post_wrapper, (void *)&gatherv);
- TRACE_ERR("Gatherv %s\n", MPIDI_Process.context_post.active>0?"posted":"invoked");
-
- TRACE_ERR("Waiting on active %d\n", gatherv_active);
- MPID_PROGRESS_WAIT_WHILE(gatherv_active);
+ MPIDI_Update_last_algorithm(comm_ptr, my_gatherv_md->name);
+
+ MPIDI_Post_coll_t gatherv_post;
+ TRACE_ERR("%s gatherv\n", MPIDI_Process.context_post.active>0?"Posting":"Invoking");
+ MPIDI_Context_post(MPIDI_Context[0], &gatherv_post.state,
+ MPIDI_Pami_post_wrapper, (void *)&gatherv);
+ TRACE_ERR("Gatherv %s\n", MPIDI_Process.context_post.active>0?"posted":"invoked");
+
+ TRACE_ERR("Waiting on active %d\n", gatherv_active);
+ MPID_PROGRESS_WAIT_WHILE(gatherv_active);
if(!rcv_contig || recvok != PAMI_SUCCESS)
{
diff --git a/src/mpid/pamid/src/coll/reduce/mpido_reduce.c b/src/mpid/pamid/src/coll/reduce/mpido_reduce.c
index b6a7cd2..abc45fd 100644
--- a/src/mpid/pamid/src/coll/reduce/mpido_reduce.c
+++ b/src/mpid/pamid/src/coll/reduce/mpido_reduce.c
@@ -260,7 +260,7 @@ int MPIDO_Reduce_simple(const void *sendbuf,
const struct MPIDI_Comm* const mpid = &(comm_ptr->mpid);
MPIDI_Datatype_get_info(count, datatype, dt_contig, tsize, dt_null, true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_REDUCE, tsize, advisor_algorithms, 1);
diff --git a/src/mpid/pamid/src/coll/scan/mpido_scan.c b/src/mpid/pamid/src/coll/scan/mpido_scan.c
index 6f58dd9..f7a055b 100644
--- a/src/mpid/pamid/src/coll/scan/mpido_scan.c
+++ b/src/mpid/pamid/src/coll/scan/mpido_scan.c
@@ -272,7 +272,7 @@ int MPIDO_Doscan_simple(const void *sendbuf, void *recvbuf,
pami_xfer_t scan;
volatile unsigned scan_active = 1;
MPIDI_Datatype_get_info(count, datatype, dt_contig, tsize, dt_null, true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_SCAN, tsize, advisor_algorithms, 1);
diff --git a/src/mpid/pamid/src/coll/scatter/mpido_scatter.c b/src/mpid/pamid/src/coll/scatter/mpido_scatter.c
index 5f3be7d..b2e9a9d 100644
--- a/src/mpid/pamid/src/coll/scatter/mpido_scatter.c
+++ b/src/mpid/pamid/src/coll/scatter/mpido_scatter.c
@@ -341,7 +341,7 @@ int MPIDO_Scatter_simple(const void *sendbuf,
{
MPIDI_Datatype_get_info(sendcount, sendtype, snd_contig,
send_size, data_ptr, snd_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_SCATTER, send_size, advisor_algorithms, 1);
@@ -361,7 +361,7 @@ int MPIDO_Scatter_simple(const void *sendbuf,
{
MPIDI_Datatype_get_info(recvcount, recvtype, rcv_contig,
recv_size, data_ptr, rcv_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_SCATTER, recv_size, advisor_algorithms, 1);
diff --git a/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c b/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c
index 49ddb89..fcafbe0 100644
--- a/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c
+++ b/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c
@@ -466,7 +466,7 @@ int MPIDO_Scatterv_simple(const void *sendbuf,
if (rank == root && sendtype != MPI_DATATYPE_NULL && sendcounts[0] >= 0)
{
MPIDI_Datatype_get_info(1, sendtype, snd_contig, ssize, dt_ptr, send_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_SCATTERV_INT, 64, advisor_algorithms, 1);
@@ -486,7 +486,7 @@ int MPIDO_Scatterv_simple(const void *sendbuf,
{
MPIDI_Datatype_get_info(recvcount, recvtype, rcv_contig,
recv_size, dt_ptr, recv_true_lb);
- if(MPIDI_Pamix_collsel_advise != NULL)
+ if(MPIDI_Pamix_collsel_advise != NULL && mpid->collsel_fast_query != NULL)
{
advisor_algorithm_t advisor_algorithms[1];
int num_algorithms = MPIDI_Pamix_collsel_advise(mpid->collsel_fast_query, PAMI_XFER_SCATTERV_INT, 64, advisor_algorithms, 1);
diff --git a/src/mpid/pamid/src/comm/mpid_selectcolls.c b/src/mpid/pamid/src/comm/mpid_selectcolls.c
index 4569a0b..3f4e247 100644
--- a/src/mpid/pamid/src/comm/mpid_selectcolls.c
+++ b/src/mpid/pamid/src/comm/mpid_selectcolls.c
@@ -470,6 +470,7 @@ void MPIDI_Comm_coll_envvars(MPID_Comm *comm)
/* If automatic collective selection is enabled and user didn't specifically overwrite
it, then use auto coll sel.. Otherwise, go through the manual coll sel code path. */
+ comm->mpid.collsel_fast_query = NULL; /* Init to NULL.. Should only have a value if we create query */
if(MPIDI_Process.optimized.auto_select_colls != MPID_AUTO_SELECT_COLLS_NONE && MPIDI_Process.optimized.auto_select_colls != MPID_AUTO_SELECT_COLLS_TUNE && comm->local_size > 1)
{
/* Create a fast query object, cache it on the comm/geometry and use it in each collective */
diff --git a/src/mpid/pamid/src/mpid_init.c b/src/mpid/pamid/src/mpid_init.c
index 45b6ff2..90922d5 100644
--- a/src/mpid/pamid/src/mpid_init.c
+++ b/src/mpid/pamid/src/mpid_init.c
@@ -472,6 +472,11 @@ void MPIDI_Init_collsel_extension()
MPIDI_Process.optimized.auto_select_colls |= MPID_AUTO_SELECT_COLLS_ALLGATHER;
break;
case PAMI_XFER_ALLGATHERV:
+#if (MPIDI_STATISTICS || MPIDI_PRINTENV)
+ if(MPIDI_Process.mp_infolevel >= 1)
+ fprintf(stderr,"WARNING: MPICH (collective selection) doesn't support ALLGATHERV, only ALLGATHERV_INT is supported\n");
+#endif
+ break;
case PAMI_XFER_ALLGATHERV_INT:
MPIDI_Process.optimized.auto_select_colls |= MPID_AUTO_SELECT_COLLS_ALLGATHERV;
break;
@@ -479,6 +484,11 @@ void MPIDI_Init_collsel_extension()
MPIDI_Process.optimized.auto_select_colls |= MPID_AUTO_SELECT_COLLS_SCATTER;
break;
case PAMI_XFER_SCATTERV:
+#if (MPIDI_STATISTICS || MPIDI_PRINTENV)
+ if(MPIDI_Process.mp_infolevel >= 1)
+ fprintf(stderr,"WARNING: MPICH (collective selection) doesn't support SCATTERV, only SCATTERV_INT is supported\n");
+#endif
+ break;
case PAMI_XFER_SCATTERV_INT:
MPIDI_Process.optimized.auto_select_colls |= MPID_AUTO_SELECT_COLLS_SCATTERV;
break;
@@ -486,6 +496,11 @@ void MPIDI_Init_collsel_extension()
MPIDI_Process.optimized.auto_select_colls |= MPID_AUTO_SELECT_COLLS_GATHER;
break;
case PAMI_XFER_GATHERV:
+#if (MPIDI_STATISTICS || MPIDI_PRINTENV)
+ if(MPIDI_Process.mp_infolevel >= 1)
+ fprintf(stderr,"WARNING: MPICH (collective selection) doesn't support GATHERV, only GATHERV_INT is supported\n");
+#endif
+ break;
case PAMI_XFER_GATHERV_INT:
MPIDI_Process.optimized.auto_select_colls |= MPID_AUTO_SELECT_COLLS_GATHERV;
break;
@@ -496,6 +511,11 @@ void MPIDI_Init_collsel_extension()
MPIDI_Process.optimized.auto_select_colls |= MPID_AUTO_SELECT_COLLS_ALLTOALL;
break;
case PAMI_XFER_ALLTOALLV:
+#if (MPIDI_STATISTICS || MPIDI_PRINTENV)
+ if(MPIDI_Process.mp_infolevel >= 1)
+ fprintf(stderr,"WARNING: MPICH (collective selection) doesn't support ALLTOALLV, only ALLTOALLV_INT is supported\n");
+#endif
+ break;
case PAMI_XFER_ALLTOALLV_INT:
MPIDI_Process.optimized.auto_select_colls |= MPID_AUTO_SELECT_COLLS_ALLTOALLV;
break;
diff --git a/src/mpid/pamid/src/mpidi_util.c b/src/mpid/pamid/src/mpidi_util.c
index 315a1a7..0d51f1c 100644
--- a/src/mpid/pamid/src/mpidi_util.c
+++ b/src/mpid/pamid/src/mpidi_util.c
@@ -1357,6 +1357,11 @@ static int MPIDI_collsel_process_collectives(char *coll_arg, advisor_params_t *p
int i, ret = 0, arg_len = strlen(coll_arg);
char *collectives = (char *) MPIU_Malloc(arg_len + 1);
char *coll;
+ int infolevel = 0;
+#if (MPIDI_STATISTICS || MPIDI_PRINTENV)
+ if(MPIDI_Process.mp_infolevel >= 1)
+ infolevel = 1;
+#endif
/* if already set via config file, free it */
if(params->collectives)
{
@@ -1374,8 +1379,35 @@ static int MPIDI_collsel_process_collectives(char *coll_arg, advisor_params_t *p
{
if(strcmp(coll, xfer_array_str[i]) == 0)
{
- params->collectives[params->num_collectives++] = i;
- break;
+ if(i == 4 )
+ {
+ if(infolevel)
+ fprintf(stderr,"WARNING: MPICH (pami_tune) doesn't support tuning for ALLGATHERV. ALLGATHERV tuning will be skipped.\nTune for ALLGATHERV_INT instead\n");
+ break;
+ }
+ else if(i == 7 )
+ {
+ if(infolevel)
+ fprintf(stderr,"WARNING: MPICH (pami_tune) doesn't support tuning for SCATTERV. SCATTERV tuning will be skipped.\nTune for SCATTERV_INT instead\n");
+ break;
+ }
+ else if(i == 10 )
+ {
+ if(infolevel)
+ fprintf(stderr,"WARNING: MPICH (pami_tune) doesn't support tuning for GATHERV. GATHERV tuning will be skipped.\nTune for GATHERV_INT instead\n");
+ break;
+ }
+ else if(i == 14 )
+ {
+ if(infolevel)
+ fprintf(stderr,"WARNING: MPICH (pami_tune) doesn't support tuning for ALLTOALLV. ALLTOALLV tuning will be skipped.\nTune for ALLTOALLV_INT instead\n");
+ break;
+ }
+ else
+ {
+ params->collectives[params->num_collectives++] = i;
+ break;
+ }
}
}
/* arg did not match any collective */
@@ -1741,6 +1773,8 @@ static int MPIDI_collsel_process_arg(int argc, char *argv[], advisor_params_t *p
params->collectives = (pami_xfer_type_t *)MPIU_Malloc(sizeof(pami_xfer_type_t)*PAMI_XFER_COUNT);
for(i = 0; i < PAMI_XFER_COUNT; i++)
{
+ if(i == 4 || i == 7 || i == 10 || i == 14)
+ i++;
params->collectives[params->num_collectives++] = i;
}
}
-----------------------------------------------------------------------
Summary of changes:
.../pamid/src/coll/allgather/mpido_allgather.c | 52 +++---
.../pamid/src/coll/allgatherv/mpido_allgatherv.c | 6 +-
.../pamid/src/coll/allreduce/mpido_allreduce.c | 2 +-
src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c | 86 +++++-----
.../pamid/src/coll/alltoallv/mpido_alltoallv.c | 20 ++--
src/mpid/pamid/src/coll/bcast/mpido_bcast.c | 3 +-
src/mpid/pamid/src/coll/gather/mpido_gather.c | 4 +-
src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c | 168 ++++++++++----------
src/mpid/pamid/src/coll/reduce/mpido_reduce.c | 2 +-
src/mpid/pamid/src/coll/scan/mpido_scan.c | 2 +-
src/mpid/pamid/src/coll/scatter/mpido_scatter.c | 4 +-
src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c | 4 +-
src/mpid/pamid/src/comm/mpid_selectcolls.c | 1 +
src/mpid/pamid/src/mpid_init.c | 20 +++
src/mpid/pamid/src/mpidi_util.c | 137 +++++++++++++---
15 files changed, 309 insertions(+), 202 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0