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
June 2013
- 1 participants
- 32 discussions
[mpich] MPICH primary repository branch, master, updated. v3.0.4-294-ga5719ca
by noreply@mpich.org 09 Jun '13
by noreply@mpich.org 09 Jun '13
09 Jun '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 a5719ca872c316e5d4545acf7e2be0eaad5e7d92 (commit)
from 933ba2260c0107f474c902acff3db6f8aa0d737c (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/a5719ca872c316e5d4545acf7e2be0eaa…
commit a5719ca872c316e5d4545acf7e2be0eaad5e7d92
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Jun 9 09:20:41 2013 -0500
Fix typo in picking the right process manager.
diff --git a/configure.ac b/configure.ac
index 017e96c..6c20767 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1644,7 +1644,7 @@ if test "$with_pmi" = "uni" -a "$with_pm" = "default" ; then
with_pm="no"
fi
if test "$with_pm" = "default" -o "$with_pm" = "yes" ; then
- if test -z "$MPID_DEFAULT_PM" ; then
+ if test ! -z "$MPID_DEFAULT_PM" ; then
with_pm=${MPID_DEFAULT_PM}
else
with_pm=hydra
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 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-293-g933ba22
by noreply@mpich.org 09 Jun '13
by noreply@mpich.org 09 Jun '13
09 Jun '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 933ba2260c0107f474c902acff3db6f8aa0d737c (commit)
via b07eeac6314fe966312f21ee820a757ce0b1d33d (commit)
via 2f17bd3f021086ce48479ba44dad97768bb6eb13 (commit)
via 3c2da592b28366b0cd7eb22295cce18d176c87b0 (commit)
from 5ebed0363a14a822eb7c8aa48678386df314d526 (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/933ba2260c0107f474c902acff3db6f8a…
commit 933ba2260c0107f474c902acff3db6f8aa0d737c
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Jun 9 00:39:27 2013 -0500
Added CHANGES log for mpich-3.1b1.
diff --git a/CHANGES b/CHANGES
index 51b88e3..d827e2a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,27 @@
===============================================================================
+ Changes in 3.1
+===============================================================================
+
+ # OVERALL: Integrated MPICH-PAMI code base for Blue Gene/Q and other
+ IBM platforms.
+
+ # OVERALL: Added environment variables to control a lot more
+ capabilities for collectives. See the README.envvar file for more
+ information.
+
+ # BUILD: Enable shared library builds by default.
+
+ # PM/PMI: Upgraded hwloc to 1.7.1.
+
+ # PM/PMI: Several improvements to the Hydra-SLURM integration.
+
+ # Several other minor bug fixes, memory leak fixes, and code cleanup.
+ A full list of changes is available at the following link:
+
+ http://git.mpich.org/mpich.git/shortlog/v3.0.4..v3.1b1
+
+
+===============================================================================
Changes in 3.0.4
===============================================================================
http://git.mpich.org/mpich.git/commitdiff/b07eeac6314fe966312f21ee820a757ce…
commit b07eeac6314fe966312f21ee820a757ce0b1d33d
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Jun 9 00:32:05 2013 -0500
Updated version information for the 3.1b1 release.
The ABI string is updated to 11:x:y since we added the C++ binding for
distgraph. No interfaces were deleted, so 'x' goes to 0, and 'y' goes
to 1.
diff --git a/maint/version.m4 b/maint/version.m4
index e64f652..892fdd6 100644
--- a/maint/version.m4
+++ b/maint/version.m4
@@ -14,7 +14,7 @@
# changing this by playing with diversions, but then we would probably be
# playing with autotools-fire.
-m4_define([MPICH_VERSION_m4],[3.0.4])dnl
+m4_define([MPICH_VERSION_m4],[3.1b1])dnl
m4_define([MPICH_RELEASE_DATE_m4],[unreleased development copy])dnl
# For libtool ABI versioning rules see:
@@ -31,6 +31,6 @@ m4_define([MPICH_RELEASE_DATE_m4],[unreleased development copy])dnl
#
# 4. If any interfaces have been removed since the last public
# release, then set age to 0.
-m4_define([libmpich_so_version_m4],[10:4:0])dnl
+m4_define([libmpich_so_version_m4],[11:0:1])dnl
[#] end of __file__
http://git.mpich.org/mpich.git/commitdiff/2f17bd3f021086ce48479ba44dad97768…
commit 2f17bd3f021086ce48479ba44dad97768bb6eb13
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 [2bda6bc7] and [49b74176].
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])
http://git.mpich.org/mpich.git/commitdiff/3c2da592b28366b0cd7eb22295cce18d1…
commit 3c2da592b28366b0cd7eb22295cce18d176c87b0
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Jun 9 00:20:03 2013 -0500
Upgraded to hwloc-1.7.1
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/VERSION b/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
index 5cc8694..b057041 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
@@ -16,7 +16,7 @@ release=1
# requirement is that it must be entirely printable ASCII characters
# and have no white space.
-greek=rc1
+greek=rc2
# If want_repo_rev=1, then the SVN r number will be included in the overall
# hwloc version number in some form.
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 b9ab48f..02b1e6f 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
@@ -441,25 +441,7 @@ EOF])
])
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_FUNCS([sysctl sysctlbyname])
case ${target} in
*-*-mingw*|*-*-cygwin*)
@@ -1250,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])
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 eddec79..7e13ca1 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_SYS_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_SYS_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:
CHANGES | 23 ++++++++++++++++++++
maint/version.m4 | 4 +-
src/pm/hydra/tools/topo/hwloc/hwloc/VERSION | 2 +-
.../tools/topo/hwloc/hwloc/src/topology-freebsd.c | 4 +-
4 files changed, 28 insertions(+), 5 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-289-g5ebed03
by noreply@mpich.org 08 Jun '13
by noreply@mpich.org 08 Jun '13
08 Jun '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 5ebed0363a14a822eb7c8aa48678386df314d526 (commit)
via 1564681401cee51a0ffc11961f91542dd74c2de6 (commit)
via 10fe9459add3c4a5a83a260b7e1ad86d8e69b2fb (commit)
from 2c8dbec59a75cb3cb4503f1e579137895f286067 (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/5ebed0363a14a822eb7c8aa48678386df…
commit 5ebed0363a14a822eb7c8aa48678386df314d526
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 23:02:11 2013 -0500
Squash memory leaks in the slurm code.
diff --git a/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c b/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
index 652c5b0..4479ce0 100644
--- a/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
+++ b/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
@@ -14,19 +14,14 @@ static struct HYD_node *global_node_list = NULL;
static HYD_status group_to_nodes(char *str)
{
- char *pre, *nodes, *tnodes, *tmp, *start_str, *end_str, **set;
+ char *nodes, *tnodes, *tmp, *start_str, *end_str, **set;
int start, end, i, j, k = 0;
- struct HYD_node *node;
HYD_status status = HYD_SUCCESS;
- pre = HYDU_strdup(str);
- for (tmp = pre; *tmp != '[' && *tmp != 0; tmp++);
+ for (tmp = str; *tmp != '[' && *tmp != 0; tmp++);
if (*tmp == 0) { /* only one node in the group */
- status = HYDU_alloc_node(&node);
- HYDU_ERR_POP(status, "unable to allocate note\n");
-
- status = HYDU_add_to_node_list(pre, tasks_per_node[k++], &global_node_list);
+ status = HYDU_add_to_node_list(str, tasks_per_node[k++], &global_node_list);
HYDU_ERR_POP(status, "unable to add to node list\n");
goto fn_exit;
@@ -63,7 +58,7 @@ static HYD_status group_to_nodes(char *str)
for (j = start; j <= end; j++) {
char *node_str[HYD_NUM_TMP_STRINGS];
- node_str[0] = HYDU_strdup(pre);
+ node_str[0] = HYDU_strdup(str);
node_str[1] = HYDU_int_to_str_pad(j, strlen(start_str));
node_str[2] = NULL;
@@ -133,9 +128,9 @@ static HYD_status list_to_groups(char *str)
static HYD_status extract_tasks_per_node(int nnodes, char *task_list)
{
- char *task_set, **tmp_core_list;
+ char *task_set, **tmp_core_list = NULL;
char *nodes, *cores;
- int i, j, k, p, count;
+ int i, j, k, p, count = 0;
HYD_status status = HYD_SUCCESS;
HYDU_MALLOC(tasks_per_node, int *, nnodes * sizeof(int), status);
@@ -168,6 +163,9 @@ static HYD_status extract_tasks_per_node(int nnodes, char *task_list)
}
fn_exit:
+ for (i = 0; i < count; i++)
+ HYDU_FREE(tmp_core_list[i]);
+ HYDU_FREE(tmp_core_list);
return status;
fn_fail:
@@ -197,7 +195,6 @@ HYD_status HYDT_bscd_slurm_query_node_list(struct HYD_node **node_list)
*node_list = NULL;
goto fn_exit;
}
- task_list = HYDU_strdup(task_list);
status = extract_tasks_per_node(nnodes, task_list);
HYDU_ERR_POP(status, "unable to extract the number of tasks per node\n");
@@ -206,6 +203,7 @@ HYD_status HYDT_bscd_slurm_query_node_list(struct HYD_node **node_list)
*node_list = global_node_list;
fn_exit:
+ HYDU_FREE(tasks_per_node);
HYDU_FUNC_EXIT();
return status;
http://git.mpich.org/mpich.git/commitdiff/1564681401cee51a0ffc11961f91542dd…
commit 1564681401cee51a0ffc11961f91542dd74c2de6
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 22:57:18 2013 -0500
Fix the slurm node query code when only one node is allocated.
diff --git a/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c b/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
index 61f1536..652c5b0 100644
--- a/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
+++ b/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
@@ -16,7 +16,7 @@ static HYD_status group_to_nodes(char *str)
{
char *pre, *nodes, *tnodes, *tmp, *start_str, *end_str, **set;
int start, end, i, j, k = 0;
- struct HYD_node *node, *tnode;
+ struct HYD_node *node;
HYD_status status = HYD_SUCCESS;
pre = HYDU_strdup(str);
@@ -26,15 +26,8 @@ static HYD_status group_to_nodes(char *str)
status = HYDU_alloc_node(&node);
HYDU_ERR_POP(status, "unable to allocate note\n");
- node->hostname = HYDU_strdup(pre);
- node->core_count = tasks_per_node[k++];
-
- if (global_node_list == NULL)
- global_node_list = node;
- else {
- for (tnode = global_node_list; tnode->next; tnode = tnode->next);
- tnode->next = node;
- }
+ status = HYDU_add_to_node_list(pre, tasks_per_node[k++], &global_node_list);
+ HYDU_ERR_POP(status, "unable to add to node list\n");
goto fn_exit;
}
@@ -79,8 +72,7 @@ static HYD_status group_to_nodes(char *str)
HYDU_free_strlist(node_str);
- status =
- HYDU_add_to_node_list(HYDU_strdup(tmp), tasks_per_node[k++], &global_node_list);
+ status = HYDU_add_to_node_list(tmp, tasks_per_node[k++], &global_node_list);
HYDU_ERR_POP(status, "unable to add to node list\n");
}
}
http://git.mpich.org/mpich.git/commitdiff/10fe9459add3c4a5a83a260b7e1ad86d8…
commit 10fe9459add3c4a5a83a260b7e1ad86d8e69b2fb
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 22:50:52 2013 -0500
Fix error in SLURM environment detection.
diff --git a/src/pm/hydra/tools/bootstrap/external/slurm_query_native_int.c b/src/pm/hydra/tools/bootstrap/external/slurm_query_native_int.c
index a29ec57..6814e4c 100644
--- a/src/pm/hydra/tools/bootstrap/external/slurm_query_native_int.c
+++ b/src/pm/hydra/tools/bootstrap/external/slurm_query_native_int.c
@@ -22,8 +22,6 @@ HYD_status HYDT_bscd_slurm_query_native_int(int *ret)
*ret = 0;
if (!HYDTI_bscd_env_is_avail("SLURM_TASKS_PER_NODE"))
*ret = 0;
- if (!HYDTI_bscd_env_is_avail("SLURM_NODEID"))
- *ret = 0;
fn_exit:
HYDU_FUNC_EXIT();
-----------------------------------------------------------------------
Summary of changes:
.../bootstrap/external/slurm_query_native_int.c | 2 -
.../bootstrap/external/slurm_query_node_list.c | 34 +++++++-------------
2 files changed, 12 insertions(+), 24 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-286-g2c8dbec
by noreply@mpich.org 08 Jun '13
by noreply@mpich.org 08 Jun '13
08 Jun '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 2c8dbec59a75cb3cb4503f1e579137895f286067 (commit)
via 57483cc6b0cda2c69f97ed39d3e67ebbbc43b108 (commit)
via 9660b206c3163d02585fb7f89f0c6c60cc2d7865 (commit)
via 3e24fc0bfbe6f70a0fea8fa4bc7da153e1a5fb1a (commit)
via 3269d074c09238d7f7639c2a5cf349a171e26263 (commit)
via 533caea3104f24bfc0e83de8548fd91fe25d1a2c (commit)
from d3394d85e8c3dfd6567bf2b2a20c6cfb1ab5ea5c (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/2c8dbec59a75cb3cb4503f1e579137895…
commit 2c8dbec59a75cb3cb4503f1e579137895f286067
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 21:10:58 2013 -0500
Throw warning when async thread is not started.
If the user asked for an asynchronous thread, but the device does not
provide MPI_THREAD_MULTIPLE support, throw a warning.
diff --git a/src/mpi/init/init.c b/src/mpi/init/init.c
index 344f062..bc19b0c 100644
--- a/src/mpi/init/init.c
+++ b/src/mpi/init/init.c
@@ -121,11 +121,16 @@ int MPI_Init( int *argc, char ***argv )
mpi_errno = MPIR_Init_thread( argc, argv, threadLevel, &provided );
if (mpi_errno != MPI_SUCCESS) goto fn_fail;
- if (MPIR_PARAM_ASYNC_PROGRESS && provided == MPI_THREAD_MULTIPLE) {
- mpi_errno = MPIR_Init_async_thread();
- if (mpi_errno) goto fn_fail;
+ if (MPIR_PARAM_ASYNC_PROGRESS) {
+ if (provided == MPI_THREAD_MULTIPLE) {
+ mpi_errno = MPIR_Init_async_thread();
+ if (mpi_errno) goto fn_fail;
- MPIR_async_thread_initialized = 1;
+ MPIR_async_thread_initialized = 1;
+ }
+ else {
+ printf("WARNING: No MPI_THREAD_MULTIPLE support (needed for async progress)\n");
+ }
}
/* ... end of body of routine ... */
diff --git a/src/mpi/init/initthread.c b/src/mpi/init/initthread.c
index daecdeb..042f13d 100644
--- a/src/mpi/init/initthread.c
+++ b/src/mpi/init/initthread.c
@@ -593,11 +593,16 @@ int MPI_Init_thread( int *argc, char ***argv, int required, int *provided )
mpi_errno = MPIR_Init_thread( argc, argv, reqd, provided );
if (mpi_errno != MPI_SUCCESS) goto fn_fail;
- if (MPIR_PARAM_ASYNC_PROGRESS && *provided == MPI_THREAD_MULTIPLE) {
- mpi_errno = MPIR_Init_async_thread();
- if (mpi_errno) goto fn_fail;
+ if (MPIR_PARAM_ASYNC_PROGRESS) {
+ if (*provided == MPI_THREAD_MULTIPLE) {
+ mpi_errno = MPIR_Init_async_thread();
+ if (mpi_errno) goto fn_fail;
- MPIR_async_thread_initialized = 1;
+ MPIR_async_thread_initialized = 1;
+ }
+ else {
+ printf("WARNING: No MPI_THREAD_MULTIPLE support (needed for async progress)\n");
+ }
}
/* ... end of body of routine ... */
http://git.mpich.org/mpich.git/commitdiff/57483cc6b0cda2c69f97ed39d3e67ebbb…
commit 57483cc6b0cda2c69f97ed39d3e67ebbbc43b108
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 20:56:10 2013 -0500
Remove arbitrary restriction on the thread-level.
diff --git a/configure.ac b/configure.ac
index 50a8231..017e96c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1333,11 +1333,7 @@ case "$enable_threads" in
esac
# Check that the requested thread level is available.
threadLevelOK=yes
-if test -z "$MPID_MAX_THREAD_LEVEL" ; then
- if test "$MPICH_THREAD_LEVEL" = "MPI_THREAD_MULTIPLE" -o "$MPICH_THREAD_LEVEL" = "MPI_THREAD_SERIALIZED" ; then
- threadLevelOK=no
- fi
-else
+if test ! -z "$MPID_MAX_THREAD_LEVEL" ; then
# Check that MPID_MAX_THREAD_LEVEL is at least as large as the
# selected MPICH_THREAD_LEVEL
case $MPICH_THREAD_LEVEL in
http://git.mpich.org/mpich.git/commitdiff/9660b206c3163d02585fb7f89f0c6c60c…
commit 9660b206c3163d02585fb7f89f0c6c60cc2d7865
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 18:46:59 2013 -0500
Control default thread level from the environment.
1. Use the params interface to control the default thread level.
2. Don't restrict support for the default thread level only in
THREAD_MULTIPLE installations.
diff --git a/src/mpi/init/init.c b/src/mpi/init/init.c
index 40c28f2..344f062 100644
--- a/src/mpi/init/init.c
+++ b/src/mpi/init/init.c
@@ -100,34 +100,18 @@ int MPI_Init( int *argc, char ***argv )
mpi_errno = MPIR_Param_init_params();
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
-#if (MPICH_THREAD_LEVEL == MPI_THREAD_MULTIPLE)
- /* If we support all thread levels, allow the use of an environment
- variable to set the default thread level */
- {
- const char *str = 0;
- threadLevel = MPI_THREAD_SINGLE;
- if (MPL_env2str( "MPICH_THREADLEVEL_DEFAULT", &str )) {
- if (strcmp(str,"MULTIPLE") == 0 || strcmp(str,"multiple") == 0) {
- threadLevel = MPI_THREAD_MULTIPLE;
- }
- else if (strcmp(str,"SERIALIZED") == 0 || strcmp(str,"serialized") == 0) {
- threadLevel = MPI_THREAD_SERIALIZED;
- }
- else if (strcmp(str,"FUNNELED") == 0 || strcmp(str,"funneled") == 0) {
- threadLevel = MPI_THREAD_FUNNELED;
- }
- else if (strcmp(str,"SINGLE") == 0 || strcmp(str,"single") == 0) {
- threadLevel = MPI_THREAD_SINGLE;
- }
- else {
- MPIU_Error_printf( "Unrecognized thread level %s\n", str );
- exit(1);
- }
- }
+ if (!strcmp(MPIR_PARAM_DEFAULT_THREAD_LEVEL, "MPI_THREAD_MULTIPLE"))
+ threadLevel = MPI_THREAD_MULTIPLE;
+ else if (!strcmp(MPIR_PARAM_DEFAULT_THREAD_LEVEL, "MPI_THREAD_SERIALIZED"))
+ threadLevel = MPI_THREAD_SERIALIZED;
+ else if (!strcmp(MPIR_PARAM_DEFAULT_THREAD_LEVEL, "MPI_THREAD_FUNNELED"))
+ threadLevel = MPI_THREAD_FUNNELED;
+ else if (!strcmp(MPIR_PARAM_DEFAULT_THREAD_LEVEL, "MPI_THREAD_SINGLE"))
+ threadLevel = MPI_THREAD_SINGLE;
+ else {
+ MPIU_Error_printf("Unrecognized thread level %s\n", MPIR_PARAM_DEFAULT_THREAD_LEVEL);
+ exit(1);
}
-#else
- threadLevel = MPI_THREAD_SINGLE;
-#endif
/* If the user requested for asynchronous progress, request for
* THREAD_MULTIPLE. */
diff --git a/src/mpid/pamid/src/mpidi_env.c b/src/mpid/pamid/src/mpidi_env.c
index ee1c799..b85c40d 100644
--- a/src/mpid/pamid/src/mpidi_env.c
+++ b/src/mpid/pamid/src/mpidi_env.c
@@ -69,7 +69,7 @@
* libraries (gcc, xl, xl.ndebug) and MPI_Init_thread() is called with
* MPI_THREAD_MULTIPLE.
* - NOTE: This environment variable has the same effect as setting
- * MPICH_THREADLEVEL_DEFAULT=multiple
+ * MPIR_PARAM_DEFAULT_THREAD_LEVEL=multiple
*
* - PAMID_CONTEXT_MAX - This variable sets the maximum allowable number
* of contexts. Contexts are a method of dividing hardware resources
diff --git a/src/util/param/params.yml b/src/util/param/params.yml
index fced791..394a7fc 100644
--- a/src/util/param/params.yml
+++ b/src/util/param/params.yml
@@ -362,6 +362,14 @@ parameters:
If set to true, MPICH will spawn an additional thread to make
asynchronous progress on all communication operations.
+ - category : threads
+ name : DEFAULT_THREAD_LEVEL
+ type : string
+ default : "MPI_THREAD_SINGLE"
+ class : device
+ description : >-
+ Sets the default thread level to use when using MPI_INIT.
+
##############################################################
# other MPI-level parameters
- category : developer
http://git.mpich.org/mpich.git/commitdiff/3e24fc0bfbe6f70a0fea8fa4bc7da153e…
commit 3e24fc0bfbe6f70a0fea8fa4bc7da153e1a5fb1a
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 18:41:55 2013 -0500
ASYNC_THREAD improvements.
Use the params interface to check the ASYNC_PROGRESS variable.
diff --git a/src/mpi/init/init.c b/src/mpi/init/init.c
index a9a06a4..40c28f2 100644
--- a/src/mpi/init/init.c
+++ b/src/mpi/init/init.c
@@ -97,6 +97,9 @@ int MPI_Init( int *argc, char ***argv )
/* ... body of routine ... */
+ mpi_errno = MPIR_Param_init_params();
+ if (mpi_errno) MPIU_ERR_POP(mpi_errno);
+
#if (MPICH_THREAD_LEVEL == MPI_THREAD_MULTIPLE)
/* If we support all thread levels, allow the use of an environment
variable to set the default thread level */
@@ -128,15 +131,13 @@ int MPI_Init( int *argc, char ***argv )
/* If the user requested for asynchronous progress, request for
* THREAD_MULTIPLE. */
- rc = 0;
- MPL_env2bool("MPICH_ASYNC_PROGRESS", &rc);
- if (rc)
+ if (MPIR_PARAM_ASYNC_PROGRESS)
threadLevel = MPI_THREAD_MULTIPLE;
mpi_errno = MPIR_Init_thread( argc, argv, threadLevel, &provided );
if (mpi_errno != MPI_SUCCESS) goto fn_fail;
- if (rc && provided == MPI_THREAD_MULTIPLE) {
+ if (MPIR_PARAM_ASYNC_PROGRESS && provided == MPI_THREAD_MULTIPLE) {
mpi_errno = MPIR_Init_async_thread();
if (mpi_errno) goto fn_fail;
diff --git a/src/mpi/init/initthread.c b/src/mpi/init/initthread.c
index 4fae2d2..daecdeb 100644
--- a/src/mpi/init/initthread.c
+++ b/src/mpi/init/initthread.c
@@ -587,15 +587,13 @@ int MPI_Init_thread( int *argc, char ***argv, int required, int *provided )
/* If the user requested for asynchronous progress, request for
* THREAD_MULTIPLE. */
- rc = 0;
- MPL_env2bool("MPICH_ASYNC_PROGRESS", &rc);
- if (rc)
+ if (MPIR_PARAM_ASYNC_PROGRESS)
reqd = MPI_THREAD_MULTIPLE;
mpi_errno = MPIR_Init_thread( argc, argv, reqd, provided );
if (mpi_errno != MPI_SUCCESS) goto fn_fail;
- if (rc && *provided == MPI_THREAD_MULTIPLE) {
+ if (MPIR_PARAM_ASYNC_PROGRESS && *provided == MPI_THREAD_MULTIPLE) {
mpi_errno = MPIR_Init_async_thread();
if (mpi_errno) goto fn_fail;
diff --git a/src/util/param/params.yml b/src/util/param/params.yml
index 635f8a3..fced791 100644
--- a/src/util/param/params.yml
+++ b/src/util/param/params.yml
@@ -353,6 +353,15 @@ parameters:
for the eager allocation protocol. If the application is running
out of context IDs, reducing this value may help.
+ - category : threads
+ name : ASYNC_PROGRESS
+ type : boolean
+ default : false
+ class : device
+ description : >-
+ If set to true, MPICH will spawn an additional thread to make
+ asynchronous progress on all communication operations.
+
##############################################################
# other MPI-level parameters
- category : developer
http://git.mpich.org/mpich.git/commitdiff/3269d074c09238d7f7639c2a5cf349a17…
commit 3269d074c09238d7f7639c2a5cf349a171e26263
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 17:40:16 2013 -0500
Thread package is no longer required for SERIALIZED mode.
diff --git a/configure.ac b/configure.ac
index 858ef02..50a8231 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1320,9 +1320,7 @@ case "$enable_threads" in
MPICH_THREAD_LEVEL=MPI_THREAD_FUNNELED
;;
serialized)
- # We require a thread package even in serialized mode, since we
- # use that for the aynchronous threads
- thread_pkg_required=yes
+ thread_pkg_required=no
MPICH_THREAD_LEVEL=MPI_THREAD_SERIALIZED
;;
multiple)
http://git.mpich.org/mpich.git/commitdiff/533caea3104f24bfc0e83de8548fd91fe…
commit 533caea3104f24bfc0e83de8548fd91fe25d1a2c
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 17:39:00 2013 -0500
Initiate the asynchronous thread only in MULTIPLE mode.
We were originally initiating the asynchronous thread in SERIALIZED
mode as well. But this is incorrect, since the remaining threads do
not acquire a lock and will conflict with this thread.
diff --git a/src/mpi/init/async.c b/src/mpi/init/async.c
index 4fc2e2f..c003827 100644
--- a/src/mpi/init/async.c
+++ b/src/mpi/init/async.c
@@ -10,13 +10,15 @@
#ifndef MPICH_MPI_FROM_PMPI
-#if MPICH_THREAD_LEVEL >= MPI_THREAD_SERIALIZED
+#if MPICH_THREAD_LEVEL == MPI_THREAD_MULTIPLE
static MPID_Comm *progress_comm_ptr;
static MPIU_Thread_id_t progress_thread_id;
static MPIU_Thread_mutex_t progress_mutex;
static MPIU_Thread_cond_t progress_cond;
static volatile int progress_thread_done = 0;
+/* We can use whatever tag we want; we use a different communicator
+ * for communicating with the progress thread. */
#define WAKE_TAG 100
#undef FUNCNAME
@@ -68,7 +70,7 @@ static void progress_fn(void * data)
return;
}
-#endif /* MPICH_THREAD_LEVEL >= MPI_THREAD_SERIALIZED */
+#endif /* MPICH_THREAD_LEVEL == MPI_THREAD_MULTIPLE */
#undef FUNCNAME
#define FUNCNAME MPIR_Init_async_thread
@@ -76,7 +78,7 @@ static void progress_fn(void * data)
#define FCNAME MPIU_QUOTE(FUNCNAME)
int MPIR_Init_async_thread(void)
{
-#if MPICH_THREAD_LEVEL >= MPI_THREAD_SERIALIZED
+#if MPICH_THREAD_LEVEL == MPI_THREAD_MULTIPLE
int mpi_errno = MPI_SUCCESS;
MPID_Comm *comm_self_ptr;
int err = 0;
@@ -107,7 +109,7 @@ int MPIR_Init_async_thread(void)
goto fn_exit;
#else
return MPI_SUCCESS;
-#endif /* MPICH_THREAD_LEVEL >= MPI_THREAD_SERIALIZED */
+#endif /* MPICH_THREAD_LEVEL == MPI_THREAD_MULTIPLE */
}
#undef FUNCNAME
@@ -117,7 +119,7 @@ int MPIR_Init_async_thread(void)
int MPIR_Finalize_async_thread(void)
{
int mpi_errno = MPI_SUCCESS;
-#if MPICH_THREAD_LEVEL >= MPI_THREAD_SERIALIZED
+#if MPICH_THREAD_LEVEL == MPI_THREAD_MULTIPLE
MPID_Request *request_ptr = NULL;
MPI_Request request;
MPI_Status status;
@@ -159,7 +161,7 @@ int MPIR_Finalize_async_thread(void)
MPID_MPI_FUNC_EXIT(MPID_STATE_MPIR_FINALIZE_ASYNC_THREAD);
-#endif /* MPICH_THREAD_LEVEL >= MPI_THREAD_SERIALIZED */
+#endif /* MPICH_THREAD_LEVEL == MPI_THREAD_MULTIPLE */
return mpi_errno;
}
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 10 +-----
src/mpi/init/async.c | 14 +++++----
src/mpi/init/init.c | 58 ++++++++++++++++-----------------------
src/mpi/init/initthread.c | 17 +++++++-----
src/mpid/pamid/src/mpidi_env.c | 2 +-
src/util/param/params.yml | 17 +++++++++++
6 files changed, 62 insertions(+), 56 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-280-gd3394d8
by noreply@mpich.org 08 Jun '13
by noreply@mpich.org 08 Jun '13
08 Jun '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 d3394d85e8c3dfd6567bf2b2a20c6cfb1ab5ea5c (commit)
from 6cd74de933244725ec9c919649d849898861b529 (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/d3394d85e8c3dfd6567bf2b2a20c6cfb1…
commit d3394d85e8c3dfd6567bf2b2a20c6cfb1ab5ea5c
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 8 12:44:21 2013 -0500
Added a new rma-contig test.
This is taken from the mpich-benchmarks repository, which is not
maintained anymore.
diff --git a/test/mpi/rma/Makefile.am b/test/mpi/rma/Makefile.am
index d919c83..00665fe 100644
--- a/test/mpi/rma/Makefile.am
+++ b/test/mpi/rma/Makefile.am
@@ -113,7 +113,8 @@ noinst_PROGRAMS = \
win_info \
pscw_ordering \
mutex_bench \
- mutex_bench_shared
+ mutex_bench_shared \
+ rma-contig
strided_acc_indexed_LDADD = $(LDADD) -lm
strided_acc_onelock_LDADD = $(LDADD) -lm
diff --git a/test/mpi/rma/rma-contig.c b/test/mpi/rma/rma-contig.c
new file mode 100644
index 0000000..581b95f
--- /dev/null
+++ b/test/mpi/rma/rma-contig.c
@@ -0,0 +1,140 @@
+/* -*- 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 <stdlib.h>
+#include <assert.h>
+#include <string.h>
+#include <mpi.h>
+
+#define MAX_DATA_SIZE (1024*128*16)
+#define MAX_NUM_ITERATIONS (8192*4)
+#define MIN_NUM_ITERATIONS 8
+#define NUM_WARMUP_ITER 1
+
+const int verbose = 0;
+static int rank;
+
+void run_test(int lock_mode, int lock_assert)
+{
+ int nproc, test_iter, target_rank, data_size;
+ int *buf, *win_buf;
+ MPI_Win win;
+
+ MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+ MPI_Comm_size(MPI_COMM_WORLD, &nproc);
+
+ if (rank == 0 && verbose) {
+ printf("Starting one-sided contiguous performance test with %d processes\n", nproc);
+
+ printf("Synchronization mode: ");
+
+ switch (lock_mode) {
+ case MPI_LOCK_EXCLUSIVE:
+ printf("Exclusive lock");
+ break;
+ case MPI_LOCK_SHARED:
+ printf("Shared lock");
+ break;
+ default:
+ printf("Unknown lock");
+ break;
+ }
+
+ if (lock_assert & MPI_MODE_NOCHECK)
+ printf(", MPI_MODE_NOCHECK");
+
+ printf("\n");
+ }
+
+ MPI_Alloc_mem(MAX_DATA_SIZE, MPI_INFO_NULL, &buf);
+ MPI_Alloc_mem(MAX_DATA_SIZE, MPI_INFO_NULL, &win_buf);
+ memset(buf, rank, MAX_DATA_SIZE);
+ memset(win_buf, rank, MAX_DATA_SIZE);
+ MPI_Win_create(win_buf, MAX_DATA_SIZE, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win);
+
+ if (rank == 0 && verbose)
+ printf("%12s %12s %12s %12s %12s %12s %12s %12s\n", "Trg. Rank", "Xfer Size",
+ "Get (usec)", "Put (usec)", "Acc (usec)",
+ "Get (MiB/s)", "Put (MiB/s)", "Acc (MiB/s)");
+
+ for (target_rank = 0; rank == 0 && target_rank < nproc; target_rank++) {
+ for (data_size = sizeof(double); data_size <= MAX_DATA_SIZE; data_size *= 2) {
+ double t_get, t_put, t_acc;
+ int num_iter = MAX_NUM_ITERATIONS;
+
+ /* Scale the number of iterations by log_2 of the data size, so
+ * that we run each test for a reasonable amount of time. */
+ {
+ int t = data_size, my_log2 = 0;
+ while (t >>= 1)
+ my_log2++;
+ if (my_log2)
+ num_iter = (num_iter / my_log2 < MIN_NUM_ITERATIONS) ?
+ MIN_NUM_ITERATIONS : num_iter / my_log2;
+ }
+
+ for (test_iter = 0; test_iter < num_iter + NUM_WARMUP_ITER; test_iter++) {
+ if (test_iter == NUM_WARMUP_ITER)
+ t_get = MPI_Wtime();
+
+ MPI_Win_lock(lock_mode, target_rank, lock_assert, win);
+ MPI_Get(buf, data_size, MPI_BYTE, target_rank, 0, data_size, MPI_BYTE, win);
+ MPI_Win_unlock(target_rank, win);
+ }
+ t_get = (MPI_Wtime() - t_get) / num_iter;
+
+ for (test_iter = 0; test_iter < num_iter + NUM_WARMUP_ITER; test_iter++) {
+ if (test_iter == NUM_WARMUP_ITER)
+ t_put = MPI_Wtime();
+
+ MPI_Win_lock(lock_mode, target_rank, lock_assert, win);
+ MPI_Put(buf, data_size, MPI_BYTE, target_rank, 0, data_size, MPI_BYTE, win);
+ MPI_Win_unlock(target_rank, win);
+ }
+ t_put = (MPI_Wtime() - t_put) / num_iter;
+
+ for (test_iter = 0; test_iter < num_iter + NUM_WARMUP_ITER; test_iter++) {
+ if (test_iter == NUM_WARMUP_ITER)
+ t_acc = MPI_Wtime();
+
+ MPI_Win_lock(lock_mode, target_rank, lock_assert, win);
+ MPI_Accumulate(buf, data_size / sizeof(int), MPI_INT, target_rank,
+ 0, data_size / sizeof(int), MPI_INT, MPI_SUM, win);
+ MPI_Win_unlock(target_rank, win);
+ }
+ t_acc = (MPI_Wtime() - t_acc) / num_iter;
+
+ if (rank == 0 && verbose)
+ printf("%12d %12d %12.3f %12.3f %12.3f %12.3f %12.3f %12.3f\n", target_rank,
+ data_size, t_get * 1.0e6, t_put * 1.0e6, t_acc * 1.0e6,
+ data_size / (1024.0 * 1024.0) / t_get, data_size / (1024.0 * 1024.0) / t_put,
+ data_size / (1024.0 * 1024.0) / t_acc);
+ }
+ }
+
+ MPI_Barrier(MPI_COMM_WORLD);
+
+ MPI_Win_free(&win);
+ MPI_Free_mem(win_buf);
+ MPI_Free_mem(buf);
+}
+
+int main(int argc, char **argv)
+{
+ MPI_Init(&argc, &argv);
+
+ run_test(MPI_LOCK_EXCLUSIVE, 0);
+ run_test(MPI_LOCK_EXCLUSIVE, MPI_MODE_NOCHECK);
+ run_test(MPI_LOCK_SHARED, 0);
+ run_test(MPI_LOCK_SHARED, MPI_MODE_NOCHECK);
+
+ MPI_Finalize();
+
+ if (rank == 0)
+ printf(" No Errors\n");
+
+ return 0;
+}
diff --git a/test/mpi/rma/testlist b/test/mpi/rma/testlist
index 4a479b2..4a3a776 100644
--- a/test/mpi/rma/testlist
+++ b/test/mpi/rma/testlist
@@ -99,3 +99,4 @@ linked_list_bench_lock_shr 4 mpiversion=3.0
linked_list_bench_lock_shr_nocheck 4 mpiversion=3.0
mutex_bench 4 mpiversion=3.0
mutex_bench_shared 4 mpiversion=3.0
+rma-contig 4 mpiversion=3.0
\ No newline at end of file
-----------------------------------------------------------------------
Summary of changes:
test/mpi/rma/Makefile.am | 3 +-
test/mpi/rma/rma-contig.c | 140 +++++++++++++++++++++++++++++++++++++++++++++
test/mpi/rma/testlist | 1 +
3 files changed, 143 insertions(+), 1 deletions(-)
create mode 100644 test/mpi/rma/rma-contig.c
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-279-g6cd74de
by noreply@mpich.org 07 Jun '13
by noreply@mpich.org 07 Jun '13
07 Jun '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 6cd74de933244725ec9c919649d849898861b529 (commit)
via 641a6c4e0d9741c088225ea81bfdb9c1ee04d3bc (commit)
via 7051290d24003fbf9ffb90174efde7a353d01406 (commit)
via 2c8cf8cbd56e25743a3d0c96932a749e87051959 (commit)
via f7c27569b955062a31bc151bc10096aff0c9fd40 (commit)
via 89f6629432c864d2b653972f1059960c27ff9e3a (commit)
from c81cc46764c68fa726a74f1721bb57f222980f15 (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/6cd74de933244725ec9c919649d849898…
commit 6cd74de933244725ec9c919649d849898861b529
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 23:07:53 2013 -0500
Fix for tt#231.
If a higher than single or funneled thread level is required and no
thread package is provided, abort.
diff --git a/configure.ac b/configure.ac
index c8c302e..858ef02 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5272,14 +5272,18 @@ AC_ARG_WITH([thread-package],
none - no threads
],,with_thread_package=posix)
-if test "$thread_pkg_required" = "no" ; then
+if test "${thread_pkg_required}" = "no" -o "${with_thread_package}" = "no" ; then
with_thread_package=none
fi
-if test "$with_thread_package" = "yes" ; then
+if test "${with_thread_package}" = "yes" ; then
with_thread_package=posix
fi
+if test "${thread_pkg_required}" = "yes" -a "${with_thread_package}" = "none" ; then
+ AC_ERROR([if no thread package is available, use --enable-threads=single or funneled])
+fi
+
MPIU_THREAD_PACKAGE_NAME=MPIU_THREAD_PACKAGE_INVALID
case $with_thread_package in
posix|pthreads)
http://git.mpich.org/mpich.git/commitdiff/641a6c4e0d9741c088225ea81bfdb9c1e…
commit 641a6c4e0d9741c088225ea81bfdb9c1ee04d3bc
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 23:03:42 2013 -0500
Cleanup of the --enable-threads configure option.
1. Remove the option for default, since that can be picked with just
--enable-threads without any additional arguments as well.
2. Don't do any device-specific assignments in the top-level
configure. This is not the right place to do that. If the device
wants to use a particular thread-level, it should set that in its
subconfigure.m4.
diff --git a/configure.ac b/configure.ac
index 970bb84..c8c302e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -506,8 +506,6 @@ AC_ARG_ENABLE(threads,
DO NOT select this option. The option runtime is more
efficient and also supports thread_multiple.
(multiple aliased to runtime now)
- default - Make a good choice depending on the communication
- device. For ch3:nemesis, this is runtime.
See also the --enable-thread-cs option for controlling the granularity of
the concurrency inside of the library
@@ -1282,6 +1280,7 @@ fi
#
# Threads must be supported by the device. First, set the default to
# be the highest supported by the device
+if test "$enable_threads" = "yes" ; then enable_threads=default ; fi
if test "$enable_threads" = default ; then
# XXX DJG bug is here, PREREQ is not being used right now
if test -n "$MPID_MAX_THREAD_LEVEL" ; then
@@ -1298,14 +1297,10 @@ if test "$enable_threads" = default ; then
fi
fi
-if test "$enable_threads" = "yes" ; then
- enable_threads=multiple
+if test "$enable_threads" = "default" ; then
+ enable_threads=runtime
elif test "$enable_threads" = "no" ; then
enable_threads=single
-elif test "$enable_threads" = "default"; then
- if test "$with_device" = "default" -o "$with_device" = "ch3:sock" ; then
- enable_threads=runtime
- fi
fi
# Runtime is an alias for multiple with an additional value
http://git.mpich.org/mpich.git/commitdiff/7051290d24003fbf9ffb90174efde7a35…
commit 7051290d24003fbf9ffb90174efde7a353d01406
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 22:41:07 2013 -0500
Only try to find a thread package, if it is required.
diff --git a/configure.ac b/configure.ac
index 0ecaf09..970bb84 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1375,11 +1375,6 @@ fi
export MPICH_THREAD_LEVEL
AC_DEFINE_UNQUOTED(MPICH_THREAD_LEVEL,$MPICH_THREAD_LEVEL,[Level of thread support selected at compile time])
-if test "$thread_pkg_required" = "no" ; then
- MPIU_THREAD_DEFAULT=${MPIU_THREAD_DEFAULT:-none}
-fi
-export MPIU_THREAD_DEFAULT
-
# Check for value thread_cs choice; set the refcount default if necessary
thread_granularity=MPIU_THREAD_GRANULARITY_SINGLE
thread_refcount=MPIU_REFCOUNT_NONE
@@ -5274,19 +5269,17 @@ dnl invoke the configure scripts (if present) directly.
#
#
# -----------------------------------------------------------------------------
-MPIU_THREAD_DEFAULT=${MPIU_THREAD_DEFAULT:-posix}
-
AC_ARG_WITH([thread-package],
[ --with-thread-package=package Thread package to use. Supported thread packages include:
- posix or pthreads - POSIX threads
+ posix or pthreads - POSIX threads (default, if required)
solaris - Solaris threads (Solaris OS only)
win - windows threads
none - no threads
+],,with_thread_package=posix)
- If the option is not specified, the default package is
- ${MPIU_THREAD_DEFAULT}. If the option is specified, but a package
- is not given, then the default is posix
-],,with_thread_package=${MPIU_THREAD_DEFAULT})
+if test "$thread_pkg_required" = "no" ; then
+ with_thread_package=none
+fi
if test "$with_thread_package" = "yes" ; then
with_thread_package=posix
http://git.mpich.org/mpich.git/commitdiff/2c8cf8cbd56e25743a3d0c96932a749e8…
commit 2c8cf8cbd56e25743a3d0c96932a749e87051959
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 22:29:21 2013 -0500
Improve comment for thread-package requirement in serialized.
diff --git a/configure.ac b/configure.ac
index 1ede3ff..0ecaf09 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1325,7 +1325,8 @@ case "$enable_threads" in
MPICH_THREAD_LEVEL=MPI_THREAD_FUNNELED
;;
serialized)
- # FIXME: Why does serialized require a thread package?
+ # We require a thread package even in serialized mode, since we
+ # use that for the aynchronous threads
thread_pkg_required=yes
MPICH_THREAD_LEVEL=MPI_THREAD_SERIALIZED
;;
http://git.mpich.org/mpich.git/commitdiff/f7c27569b955062a31bc151bc10096aff…
commit f7c27569b955062a31bc151bc10096aff0c9fd40
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 22:19:31 2013 -0500
Remove unused variable.
diff --git a/configure.ac b/configure.ac
index 6b18d4c..1ede3ff 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5291,7 +5291,6 @@ if test "$with_thread_package" = "yes" ; then
with_thread_package=posix
fi
-MPICH_THREAD_PACKAGE=none
MPIU_THREAD_PACKAGE_NAME=MPIU_THREAD_PACKAGE_INVALID
case $with_thread_package in
posix|pthreads)
@@ -5382,7 +5381,6 @@ void f1(void *a) { return; }],
PAC_FUNC_NEEDS_DECL([#include <pthread.h>],pthread_mutexattr_settype)
- MPICH_THREAD_PACKAGE=pthreads
MPIU_THREAD_PACKAGE_NAME=MPIU_THREAD_PACKAGE_POSIX
;;
solaris)
@@ -5393,12 +5391,10 @@ void f1(void *a) { return; }],
AC_MSG_ERROR([unable to find Solaris threads library])
fi
# FIXME: need to add -mt if using solaris compilers
- MPICH_THREAD_PACKAGE=solaris
MPIU_THREAD_PACKAGE_NAME=MPIU_THREAD_PACKAGE_SOLARIS
;;
win|windows)
with_thread_package=win
- MPICH_THREAD_PACKAGE=win
MPIU_THREAD_PACKAGE_NAME=MPIU_THREAD_PACKAGE_WIN
AC_MSG_ERROR([The 'win' thread package is not supported via autoconf builds at this time.])
;;
@@ -5413,7 +5409,6 @@ esac
# Define and export the selected thread library so that other packages
# know what's used in MPICH
-export MPICH_THREAD_PACKAGE
AC_DEFINE_UNQUOTED([MPIU_THREAD_PACKAGE_NAME],[$MPIU_THREAD_PACKAGE_NAME],[set to the name of the thread package])
# check for compiler-support for thread-local storage (MPIU_TLS_SPECIFIER)
http://git.mpich.org/mpich.git/commitdiff/89f6629432c864d2b653972f1059960c2…
commit 89f6629432c864d2b653972f1059960c27ff9e3a
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 23:14:59 2013 -0500
Remove accidentally added debug messages.
diff --git a/confdb/aclocal_runlog.m4 b/confdb/aclocal_runlog.m4
index 6446af8..dd9928f 100644
--- a/confdb/aclocal_runlog.m4
+++ b/confdb/aclocal_runlog.m4
@@ -145,8 +145,6 @@ dnl Save a copy of ac_compile on a stack
dnl which is safe through nested invocations of this macro.
PAC_VAR_PUSHVAL([ac_compile])
dnl Modify ac_compile based on the unmodified ac_compile.
-echo "ac_compile: $ac_compile"
-echo "pac_FirstSavedValueOf_ac_compile: $pac_FirstSavedValueOf_ac_compile"
ac_compile="`echo $pac_FirstSavedValueOf_ac_compile | sed -e 's|>.*$|> $1 2>\&1|g'`"
AC_COMPILE_IFELSE([$2],[
ifelse([$3],[],[:],[$3])
@@ -208,8 +206,6 @@ AC_DEFUN([PAC_COMPLINK_IFELSE],[
AC_COMPILE_IFELSE([$1],[
PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
PAC_VAR_PUSHVAL([LIBS])
- echo "LIBS: $LIBS"
- echo "pac_FirstSavedValueOf_LIBS: $pac_FirstSavedValueOf_LIBS"
LIBS="pac_conftest.$OBJEXT $pac_FirstSavedValueOf_LIBS"
AC_LINK_IFELSE([$2],[
ifelse([$3],[],[:],[$3])
-----------------------------------------------------------------------
Summary of changes:
confdb/aclocal_runlog.m4 | 4 ----
configure.ac | 42 +++++++++++++++---------------------------
2 files changed, 15 insertions(+), 31 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-273-gc81cc46
by noreply@mpich.org 07 Jun '13
by noreply@mpich.org 07 Jun '13
07 Jun '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 c81cc46764c68fa726a74f1721bb57f222980f15 (commit)
via 6a4899dc20e46dcda7068b353836b3f4f393c731 (commit)
via d7f24c6cf4bab74d31c2f0644eded1c64d200f5c (commit)
via ea85810ee784e0f58c8c300947908477bd04158c (commit)
via 6f062ee4ad1897ed9ed272c4b3a14aa4aca4fb42 (commit)
via 35ddb43264e20c1c39e2c09f95d4331ee46b8f77 (commit)
from 7228af25d5f7490f69c7929841cb7bc24d6d792e (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/c81cc46764c68fa726a74f1721bb57f22…
commit c81cc46764c68fa726a74f1721bb57f222980f15
Author: Sameh Sharkawi <sssharka(a)us.ibm.com>
Date: Fri May 24 12:38:52 2013 -0400
AIX compiler pad fixes
mpi-io cases failed w/ mpich2 on AIX:
AIX compiler pads 3 bytes to chars inside structs.
MPICH2 needed to match that when on AIX. For cross compiles,
two AIX specific cross files are added so the config
is aware of this and match AIX padding.
(ibm) D190327
(ibm) 76997eee0762ee9e4ad22ec0ee8b8f8c820bea94
diff --git a/src/mpid/pamid/cross/pe4-aix b/src/mpid/pamid/cross/pe4-aix
new file mode 100644
index 0000000..f3478d1
--- /dev/null
+++ b/src/mpid/pamid/cross/pe4-aix
@@ -0,0 +1,28 @@
+# begin_generated_IBM_copyright_prolog
+#
+# This is an automatically generated copyright prolog.
+# After initializing, DO NOT MODIFY OR MOVE
+# ---------------------------------------------------------------
+# Licensed Materials - Property of IBM
+# Blue Gene/Q 5765-PER 5765-PRP
+#
+# (C) Copyright IBM Corp. 2011, 2012 All Rights Reserved
+# US Government Users Restricted Rights -
+# Use, duplication, or disclosure restricted
+# by GSA ADP Schedule Contract with IBM Corp.
+#
+# ---------------------------------------------------------------
+#
+# end_generated_IBM_copyright_prolog
+CROSS_F77_SIZEOF_INTEGER=4
+CROSS_F77_SIZEOF_REAL=4
+CROSS_F77_SIZEOF_DOUBLE_PRECISION=8
+CROSS_F90_ADDRESS_KIND=4
+CROSS_F90_OFFSET_KIND=8
+CROSS_F90_INTEGER_KIND=4
+CROSS_F90_REAL_MODEL=6,37
+CROSS_F90_DOUBLE_MODEL=15,307
+CROSS_F90_INTEGER_MODEL_MAP={9,4,4},
+CROSS_F77_TRUE_VALUE=1
+CROSS_F77_FALSE_VALUE=0
+CROSS_ALIGN_DOUBLE_EXCEPTION="four"
diff --git a/src/mpid/pamid/cross/pe8-aix b/src/mpid/pamid/cross/pe8-aix
new file mode 100644
index 0000000..8380c89
--- /dev/null
+++ b/src/mpid/pamid/cross/pe8-aix
@@ -0,0 +1,28 @@
+# begin_generated_IBM_copyright_prolog
+#
+# This is an automatically generated copyright prolog.
+# After initializing, DO NOT MODIFY OR MOVE
+# ---------------------------------------------------------------
+# Licensed Materials - Property of IBM
+# Blue Gene/Q 5765-PER 5765-PRP
+#
+# (C) Copyright IBM Corp. 2011, 2012 All Rights Reserved
+# US Government Users Restricted Rights -
+# Use, duplication, or disclosure restricted
+# by GSA ADP Schedule Contract with IBM Corp.
+#
+# ---------------------------------------------------------------
+#
+# end_generated_IBM_copyright_prolog
+CROSS_F77_SIZEOF_INTEGER=4
+CROSS_F77_SIZEOF_REAL=4
+CROSS_F77_SIZEOF_DOUBLE_PRECISION=8
+CROSS_F90_ADDRESS_KIND=8
+CROSS_F90_OFFSET_KIND=8
+CROSS_F90_INTEGER_KIND=8
+CROSS_F90_REAL_MODEL=6,37
+CROSS_F90_DOUBLE_MODEL=15,307
+CROSS_F90_INTEGER_MODEL_MAP={9,4,4},
+CROSS_F77_TRUE_VALUE=1
+CROSS_F77_FALSE_VALUE=0
+CROSS_ALIGN_DOUBLE_EXCEPTION="four"
http://git.mpich.org/mpich.git/commitdiff/6a4899dc20e46dcda7068b353836b3f4f…
commit 6a4899dc20e46dcda7068b353836b3f4f393c731
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 21:36:15 2013 -0500
Pick device timer-type if available, by default.
diff --git a/configure.ac b/configure.ac
index 2e3b605..6b18d4c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4834,7 +4834,7 @@ AC_ARG_ENABLE(timer-type,
certain situations.
linuxalpha_cycle is no longer supported.
-],timer_type=$enable_timer_type)
+],timer_type=$enable_timer_type,timer_type=$MPID_DEFAULT_TIMER_TYPE)
if test -z "$timer_type" ; then
# Try to pick a timer based on what is available
@@ -5077,14 +5077,6 @@ pac_cv_ia64_cycle,[
MPID_TIMER_TYPE="uint64_t"
;;
- device)
- # The device selected should export the datatype for the timer
- # in MPID_DEVICE_TIMER_TYPE if something other than long is needed
- if test -n "$MPID_DEVICE_TIMER_TYPE" ; then
- MPID_TIMER_TYPE=$MPID_DEVICE_TIMER_TYPE
- fi
- ;;
-
*)
AC_MSG_ERROR([Invalid timer type $timer_type])
;;
http://git.mpich.org/mpich.git/commitdiff/d7f24c6cf4bab74d31c2f0644eded1c64…
commit d7f24c6cf4bab74d31c2f0644eded1c64d200f5c
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Wed May 22 10:20:47 2013 -0500
Allow the device to specify a default pm
The pamid device does not require a pm and will set the default to 'no'.
This eliminates the requirement to specify the '--with-pm=no' configure
option in order to configure and build successfully.
(includes modifications by Pavan Balaji @ Argonne).
diff --git a/configure.ac b/configure.ac
index d766e17..2e3b605 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1659,7 +1659,11 @@ if test "$with_pmi" = "uni" -a "$with_pm" = "default" ; then
with_pm="no"
fi
if test "$with_pm" = "default" -o "$with_pm" = "yes" ; then
- with_pm=hydra
+ if test -z "$MPID_DEFAULT_PM" ; then
+ with_pm=${MPID_DEFAULT_PM}
+ else
+ with_pm=hydra
+ fi
fi
# We allow multiple pm names, separated by : or ,
diff --git a/src/mpid/pamid/subconfigure.m4 b/src/mpid/pamid/subconfigure.m4
index 1cb0921..1b5171c 100644
--- a/src/mpid/pamid/subconfigure.m4
+++ b/src/mpid/pamid/subconfigure.m4
@@ -55,6 +55,7 @@ if test "${pamid_platform}" = "PE" ; then
PM_REQUIRES_PMI=pmi2/poe
elif test "${pamid_platform}" = "BGQ" ; then
MPID_DEFAULT_CROSS_FILE=${master_top_srcdir}/src/mpid/pamid/cross/bgq8
+ MPID_DEFAULT_PM=no
fi
MPID_DEVICE_TIMER_TYPE=double
http://git.mpich.org/mpich.git/commitdiff/ea85810ee784e0f58c8c300947908477b…
commit ea85810ee784e0f58c8c300947908477bd04158c
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Wed May 22 10:18:08 2013 -0500
Allow the device to specify a default cross file.
For a bgq configure, this means that the following option is no longer
required to be set:
--with-cross-file=src/mpid/pamid/cross/bgq8
(with modifications by Pavan Balaji @ Argonne).
diff --git a/configure.ac b/configure.ac
index 09826a5..d766e17 100644
--- a/configure.ac
+++ b/configure.ac
@@ -596,7 +596,12 @@ AC_ARG_ENABLE([long-double],
AC_ARG_WITH(cross,
AC_HELP_STRING([--with-cross=file],
[Specify the values of variables that configure cannot
- determine in a cross-compilation environment]),,with_cross=no)
+ determine in a cross-compilation environment]),,
+ with_cross=$MPID_DEFAULT_CROSS_FILE)
+if test -z "$with_cross" ; then with_cross=no ; fi
+if test "$with_cross" != "no"; then
+ AC_MSG_NOTICE([Using cross file: $with_cross])
+fi
AC_ARG_WITH(namepublisher,
[ --with-namepublisher=name Choose the system that will support
diff --git a/src/mpid/pamid/subconfigure.m4 b/src/mpid/pamid/subconfigure.m4
index d9db274..1cb0921 100644
--- a/src/mpid/pamid/subconfigure.m4
+++ b/src/mpid/pamid/subconfigure.m4
@@ -53,6 +53,8 @@ MPID_MAX_PROCESSOR_NAME=128
PM_REQUIRES_PMI=pmi2
if test "${pamid_platform}" = "PE" ; then
PM_REQUIRES_PMI=pmi2/poe
+elif test "${pamid_platform}" = "BGQ" ; then
+ MPID_DEFAULT_CROSS_FILE=${master_top_srcdir}/src/mpid/pamid/cross/bgq8
fi
MPID_DEVICE_TIMER_TYPE=double
http://git.mpich.org/mpich.git/commitdiff/6f062ee4ad1897ed9ed272c4b3a14aa4a…
commit 6f062ee4ad1897ed9ed272c4b3a14aa4aca4fb42
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Wed May 22 10:11:08 2013 -0500
Use the host tuple to determine the pamid implementation if not specified.
When configuring for bgq, the cross compile must be specified which can
then be used as the default pamid implementation.
--host=powerpc64-bgq-linux
--target=powerpc64-bgq-linux
--with-device=pamid
Previously, the device was required to be:
--with-device=pamid:BGQ
diff --git a/src/mpid/pamid/subconfigure.m4 b/src/mpid/pamid/subconfigure.m4
index a845202..d9db274 100644
--- a/src/mpid/pamid/subconfigure.m4
+++ b/src/mpid/pamid/subconfigure.m4
@@ -40,6 +40,13 @@ dnl AM_CONDITIONAL([BUILD_CH3_UTIL_FTB],[test "x$enable_ftb" = "xyes"])
AM_COND_IF([BUILD_PAMID],[
pamid_platform=${device_args}
+if test x"$pamid_platform" == "x"; then
+ AS_CASE([$host],
+ [*-bgq-*],[pamid_platform=BGQ])
+fi
+
+AC_MSG_NOTICE([Using the pamid platform '$pamid_platform'])
+
# Set a value for the maximum processor name.
MPID_MAX_PROCESSOR_NAME=128
http://git.mpich.org/mpich.git/commitdiff/35ddb43264e20c1c39e2c09f95d4331ee…
commit 35ddb43264e20c1c39e2c09f95d4331ee46b8f77
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Wed May 22 10:06:11 2013 -0500
Repair the bgq system software search logic
The '--with-bgq-install-dir' will no longer be required for a default
bgq configure as the search logic will now choose an appropriate
install.
diff --git a/src/mpid/pamid/subconfigure.m4 b/src/mpid/pamid/subconfigure.m4
index 57ef840..a845202 100644
--- a/src/mpid/pamid/subconfigure.m4
+++ b/src/mpid/pamid/subconfigure.m4
@@ -96,13 +96,15 @@ AC_SUBST(BGQ_INSTALL_DIR)
#
if test "${pamid_platform}" = "BGQ" ; then
+ AC_MSG_CHECKING([for BGQ system software directory])
+
#
# Specify the default bgq system software paths
#
- bgq_driver_search_path="${BGQ_INSTALL_DIR} /bgsys/drivers/ppcfloor "
- for bgq_version in `echo 1 2 3 4`; do
- for bgq_release in `echo 1 2 3 4`; do
- for bgq_mod in `echo 0 1 2 3 4`; do
+ bgq_driver_search_path="${BGQ_INSTALL_DIR} "
+ for bgq_version in `echo 4 3 2 1`; do
+ for bgq_release in `echo 4 3 2 1`; do
+ for bgq_mod in `echo 4 3 2 1 0`; do
bgq_driver_search_path+="/bgsys/drivers/V${bgq_version}R${bgq_release}M${bgq_mod}/ppc64 "
done
done
@@ -149,6 +151,12 @@ if test "${pamid_platform}" = "BGQ" ; then
fi
done
+ if test x"$bgq_driver" != "x"; then
+ AC_MSG_RESULT('$bgq_driver')
+ else
+ AC_MSG_RESULT('no')
+ fi
+
#
# The bgq compile requires these libraries.
#
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 23 ++++++++++++-----------
src/mpid/pamid/cross/{pe4 => pe4-aix} | 3 ++-
src/mpid/pamid/cross/{pe4 => pe8-aix} | 7 ++++---
src/mpid/pamid/subconfigure.m4 | 26 ++++++++++++++++++++++----
4 files changed, 40 insertions(+), 19 deletions(-)
copy src/mpid/pamid/cross/{pe4 => pe4-aix} (93%)
copy src/mpid/pamid/cross/{pe4 => pe8-aix} (87%)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-267-g7228af2
by noreply@mpich.org 07 Jun '13
by noreply@mpich.org 07 Jun '13
07 Jun '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 7228af25d5f7490f69c7929841cb7bc24d6d792e (commit)
via e78f37339f9573de4158d4a404834955b8da42f0 (commit)
via 6e7afae345cc450f7999adb6d52d1a1878c19504 (commit)
via d3b99bb0be96a1721ced0b99f025796ca572d24d (commit)
via fe43008c712fe7f33564e7d1179b9997087efe36 (commit)
via d0c1c15acd0ed286c737570399e075f08b63e6fe (commit)
via 709a3b3f17abf85d3055824d1a0bd6977e64b2f7 (commit)
from 2a90c3644882f5ef805fed0f8add5c3ccbf3bd0e (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/7228af25d5f7490f69c7929841cb7bc24…
commit 7228af25d5f7490f69c7929841cb7bc24d6d792e
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Thu Apr 18 13:14:35 2013 -0500
Additional MPIX_IO_* functions and fortran interfaces.
- add fortran interfaces for new MPIX_* functions
- remove fortran interface for MPIX_Pset_io_node()
- do not use the MPIX_Pset_io_node() function internally
The MPIX_Pset_io_node() function has been deprecated.
(ibm) CPS 92XKPE
(ibm) 6c7f293ccda15d447369ee7327a225d3b7979f15
(ibm) 106eef011bc1e58ada7e208e8c56ee341045611b
(ibm) 23b42d38b9f75ddd93701a021f84418a30a7693a
(ibm) b39954ab0052e0c5676cd9c270f159a4f6a99828
Signed-off-by: Haizhu Liu <haizhu(a)us.ibm.com>
diff --git a/src/mpid/pamid/include/mpix.h b/src/mpid/pamid/include/mpix.h
index 8996d82..6940ad9 100644
--- a/src/mpid/pamid/include/mpix.h
+++ b/src/mpid/pamid/include/mpix.h
@@ -78,6 +78,10 @@ extern "C" {
/**
* \brief Determine the rank-in-COMM_WORLD of the process associated with rank-in-comm
+ *
+ * Fortran interface:
+ * MPIX_COMM_RANK2GLOBAL (INTEGER comm, INTEGER crank, INTEGER grank, INTEGER ierr)
+ *
* \param[in] comm The communicator associated with the input rank
* \param[in] crank The rank-in-comm
* \param[out] grank The rank-in-COMM_WORLD (AKA Global rank)
@@ -139,6 +143,9 @@ extern "C" {
* \brief Create a communicator such that all nodes in the same
* communicator are served by the same I/O node
*
+ * Fortran interface:
+ * MPIX_PSET_SAME_COMM_CREATE(INTEGER pset_comm, INTEGER ierr)
+ *
* \note This is a collective operation on MPI_COMM_WORLD
*
* \param [out] pset_comm The new communicator
@@ -151,6 +158,9 @@ extern "C" {
* \brief Create a communicator such that all nodes in the same
* communicator are served by a different I/O node
*
+ * Fortran interface:
+ * MPIX_PSET_DIFF_COMM_CREATE(INTEGER pset_comm, INTEGER ierr)
+ *
* \note This is a collective operation on MPI_COMM_WORLD
*
* \param [out] pset_comm The new communicator
@@ -163,6 +173,9 @@ extern "C" {
* \brief Create a communicator such that all nodes in the same
* communicator are served by the same I/O node
*
+ * Fortran interface:
+ * MPIX_PSET_SAME_COMM_CREATE (INTEGER parent_comm, INTEGER pset_comm, INTEGER ierr)
+ *
* \note This is a collective operation on the parent communicator.
*
* \param [in] parent_comm The parent communicator
@@ -176,6 +189,9 @@ extern "C" {
* \brief Create a communicator such that all nodes in the same
* communicator are served by a different I/O node
*
+ * Fortran interface:
+ * MPIX_PSET_DIFF_COMM_CREATE (INTEGER parent_comm, INTEGER pset_comm, INTEGER ierr)
+ *
* \note This is a collective operation on the parent communicator
*
* \param [in] parent_comm The parent communicator
@@ -186,20 +202,65 @@ extern "C" {
int MPIX_Pset_diff_comm_create_from_parent (MPI_Comm parent_comm, MPI_Comm *pset_comm);
/**
- * \brief Retrieve information about the I/O node associated with the
- * local compute node.
+ * \brief Retrieve the identifier of the io node associated with the local compute node.
+ *
+ * The I/O node identifier is a unique number, yet it is not a monotonically
+ * increasing integer; such as a rank in a communicator. Multiple ranks, and
+ * multiple compute nodes, can be associated with the same I/O link.
+ *
+ * Fortran interface:
+ * MPIX_IO_NODE_ID (INTEGER io_node_id)
+ *
+ * \note On BG/Q two 'bridge' compute nodes are connected to each io node;
+ * each unique io node identifier will be associated with at most two
+ * different io link identifiers.
+ *
+ * \return I/O node identifier
+ */
+ int MPIX_IO_node_id ();
+
+ /**
+ * \brief Retrieve the identifier of the io link associated with the local compute node.
*
- * The I/O node route identifier is a unique number, yet it is not a
- * monotonically increasing integer; such as a rank in a communicator.
- * Multiple ranks, and multiple compute nodes, can be associated with the
- * same I/O node route.
+ * The I/O link identifier is a unique number, yet it is not a monotonically
+ * increasing integer; such as a rank in a communicator. Multiple ranks, and
+ * multiple compute nodes, can be associated with the same I/O link.
+ *
+ * Fortran interface:
+ * MPIX_IO_LINK_ID (INTEGER io_link_id)
+ *
+ * \return I/O link identifier
+ */
+ int MPIX_IO_link_id ();
+
+ /**
+ * \brief Retrieve the number of hops to the io node associated with the local compute node.
*
* The distance to the I/O node is the number of hops on the torus from the
- * local compute node to the associated I/O node.
+ * local compute node to the associated I/O node. The 'torus' vs 'mesh'
+ * attribute of each dimention is considered when determining the distance.
+ *
+ * Fortran interface:
+ * MPIX_IO_DISTANCE (INTEGER io_distance)
*
* \note On BG/Q the 'bridge' compute nodes are those nodes that are closest
* to the I/O node and will have a distance of '1'.
*
+ * \return number of hops to the I/O node
+ */
+ int MPIX_IO_distance ();
+
+ /**
+ * \brief Retrieve information about the I/O node associated with the
+ * local compute node.
+ *
+ * \deprecated This function has been replaced with MPIX_IO_link_id() and
+ * MPIX_IO_distance()
+ *
+ * \see MPIX_IO_link_id
+ * \see MPIX_IO_distance
+ * \see MPIX_IO_node_id
+ *
* \param [out] io_node_route_id The unique I/O node route identifier
* \param [out] distance_to_io_node The number of hops to the I/O node
*/
@@ -220,6 +281,9 @@ extern "C" {
* in MPI_COMM_WORLD. However, when using a non-default mapping or a mapfile
* the ranks will be different.
*
+ * Fortran interface:
+ * MPIX_CART_COMM_CREATE (INTEGER cart_comm, INTEGER ierr)
+ *
* \param [out] cart_comm The new Cartesian communicator
*
* \return MPI_SUCCESS or MPI_ERR_TOPOLOGY
diff --git a/src/mpid/pamid/src/mpix/mpix.c b/src/mpid/pamid/src/mpix/mpix.c
index 87741fc..88df322 100644
--- a/src/mpid/pamid/src/mpix/mpix.c
+++ b/src/mpid/pamid/src/mpix/mpix.c
@@ -520,17 +520,79 @@ MPIX_Get_last_algorithm_name(MPI_Comm comm, char *protocol, int length)
}
#undef FUNCNAME
-#define FUNCNAME MPIX_Pset_ionode
+#define FUNCNAME MPIX_IO_node_id
#undef FCNAME
#define FCNAME MPIU_QUOTE(FUNCNAME)
-void
-MPIX_Pset_io_node (int *io_node_route_id, int *distance_to_io_node)
+int MPIX_IO_node_id ()
+{
+ static unsigned long IO_node_id = ULONG_MAX;
+
+ if (IO_node_id != ULONG_MAX)
+ return (int)(IO_node_id>>32);
+
+ int rc;
+ int fd;
+ char* uci_str;
+ char buffer[4096];
+ unsigned long uci;
+
+ fd = open("/dev/bgpers", O_RDONLY, 0);
+ assert(fd>=0);
+ rc = read(fd, buffer, sizeof(buffer));
+ assert(rc>0);
+ close(fd);
+
+ uci_str = strstr(buffer, "BG_UCI=");
+ assert(uci_str);
+ uci_str += sizeof("BG_UCI=")-1;
+
+ IO_node_id = strtoul(uci_str, NULL, 16);
+ return (int)(IO_node_id>>32);
+}
+
+#undef FUNCNAME
+#define FUNCNAME MPIX_IO_link_id
+#undef FCNAME
+#define FCNAME MPIU_QUOTE(FUNCNAME)
+int MPIX_IO_link_id ()
+{
+ int nA, nB, nC, nD, nE; /* Size of each torus dimension */
+ int brA, brB, brC, brD, brE; /* The bridge node's coordinates */
+
+ Personality_t personality;
+
+ Kernel_GetPersonality(&personality, sizeof(personality));
+
+ nA = personality.Network_Config.Anodes;
+ nB = personality.Network_Config.Bnodes;
+ nC = personality.Network_Config.Cnodes;
+ nD = personality.Network_Config.Dnodes;
+ nE = personality.Network_Config.Enodes;
+
+ brA = personality.Network_Config.cnBridge_A;
+ brB = personality.Network_Config.cnBridge_B;
+ brC = personality.Network_Config.cnBridge_C;
+ brD = personality.Network_Config.cnBridge_D;
+ brE = personality.Network_Config.cnBridge_E;
+
+ /*
+ * This is the bridge node, numbered in ABCDE order, E increments first.
+ * It is considered the unique "io node route identifer" because each
+ * bridge node only has one torus link to one io node.
+ */
+ return brE + brD*nE + brC*nD*nE + brB*nC*nD*nE + brA*nB*nC*nD*nE;
+};
+
+#undef FUNCNAME
+#define FUNCNAME MPIX_IO_distance
+#undef FCNAME
+#define FCNAME MPIU_QUOTE(FUNCNAME)
+int MPIX_IO_distance ()
{
int iA, iB, iC, iD, iE; /* The local node's coordinates */
int nA, nB, nC, nD, nE; /* Size of each torus dimension */
int brA, brB, brC, brD, brE; /* The bridge node's coordinates */
int Nflags;
- int torusA, torusB, torusC, torusD, torusE; /* mesh == 0, torus == 1 */
int d1, d2;
int dA, dB, dC, dD, dE; /* distance from local node to bridge node */
@@ -558,51 +620,59 @@ MPIX_Pset_io_node (int *io_node_route_id, int *distance_to_io_node)
Nflags = personality.Network_Config.NetFlags;
- if (Nflags & ND_ENABLE_TORUS_DIM_A) torusA = 1;
- else torusA = 0;
- if (Nflags & ND_ENABLE_TORUS_DIM_B) torusB = 1;
- else torusB = 0;
- if (Nflags & ND_ENABLE_TORUS_DIM_C) torusC = 1;
- else torusC = 0;
- if (Nflags & ND_ENABLE_TORUS_DIM_D) torusD = 1;
- else torusD = 0;
- if (Nflags & ND_ENABLE_TORUS_DIM_E) torusE = 1;
- else torusE = 0;
-
- /*
- * This is the bridge node, numbered in ABCDE order, E increments first.
- * It is considered the unique "io node route identifer" because each
- * bridge node only has one torus link to one io node.
- */
- *io_node_route_id = brE + brD*nE + brC*nD*nE + brB*nC*nD*nE + brA*nB*nC*nD*nE;
-
- d1 = abs(iA - brA);
- d2 = nA - d1;
- if (torusA) dA = (d1 < d2) ? d1 : d2;
- else dA = d1;
+ dA = abs(iA - brA);
+ if (Nflags & ND_ENABLE_TORUS_DIM_A)
+ {
+ d1 = dA;
+ d2 = nA - d1;
+ dA = (d1 < d2) ? d1 : d2;
+ }
- d1 = abs(iB - brB);
- d2 = nB - d1;
- if (torusB) dB = (d1 < d2) ? d1 : d2;
- else dB = d1;
+ dB = abs(iB - brB);
+ if (Nflags & ND_ENABLE_TORUS_DIM_B)
+ {
+ d1 = dB;
+ d2 = nB - d1;
+ dB = (d1 < d2) ? d1 : d2;
+ }
- d1 = abs(iC - brC);
- d2 = nC - d1;
- if (torusC) dC = (d1 < d2) ? d1 : d2;
- else dC = d1;
+ dC = abs(iC - brC);
+ if (Nflags & ND_ENABLE_TORUS_DIM_C)
+ {
+ d1 = dC;
+ d2 = nC - d1;
+ dC = (d1 < d2) ? d1 : d2;
+ }
- d1 = abs(iD - brD);
- d2 = nD - d1;
- if (torusD) dD = (d1 < d2) ? d1 : d2;
- else dD = d1;
+ dD = abs(iD - brD);
+ if (Nflags & ND_ENABLE_TORUS_DIM_D)
+ {
+ d1 = dD;
+ d2 = nD - d1;
+ dD = (d1 < d2) ? d1 : d2;
+ }
- d1 = abs(iE - brE);
- d2 = nE - d1;
- if (torusE) dE = (d1 < d2) ? d1 : d2;
- else dE = d1;
+ dE = abs(iE - brE);
+ if (Nflags & ND_ENABLE_TORUS_DIM_E)
+ {
+ d1 = dE;
+ d2 = nE - d1;
+ dE = (d1 < d2) ? d1 : d2;
+ }
/* This is the number of hops to the io node */
- *distance_to_io_node = dA + dB + dC + dD + dE + 1;
+ return dA + dB + dC + dD + dE + 1;
+};
+
+#undef FUNCNAME
+#define FUNCNAME MPIX_Pset_io_node
+#undef FCNAME
+#define FCNAME MPIU_QUOTE(FUNCNAME)
+void
+MPIX_Pset_io_node (int *io_node_route_id, int *distance_to_io_node)
+{
+ *io_node_route_id = MPIX_IO_link_id ();
+ *distance_to_io_node = MPIX_IO_distance ();
return;
};
@@ -622,7 +692,8 @@ int _MPIX_Pset_same_comm_create (MPID_Comm *parent_comm_ptr, MPID_Comm **pset_co
int color, key;
int mpi_errno;
- MPIX_Pset_io_node (&color, &key);
+ color = MPIX_IO_link_id ();
+ key = MPIX_IO_distance ();
/*
* Use MPIR_Comm_split_impl to make a communicator of all ranks in the parent
@@ -861,6 +932,105 @@ MPIX_Cart_comm_create (MPI_Comm *cart_comm)
return MPI_SUCCESS;
};
+/**
+ * \brief FORTRAN interface to MPIX_Comm_rank2global
+ *
+ * \param [in] comm Communicator
+ * \param [in] crank Pointer to the rank in the communicator variable
+ * \param [out] grank Pointer tot he global rank variable
+ *
+ * \return status
+ */
+int mpix_comm_rank2global (MPI_Comm *comm, int *crank, int *grank)
+{
+ return MPIX_Comm_rank2global (*comm, *crank, grank);
+}
+
+/**
+ * \brief FORTRAN interface to MPIX_Pset_same_comm_create
+ *
+ * \param [out] pset_comm Communicator
+ *
+ * \return status
+ */
+int mpix_pset_same_comm_create (MPI_Comm *pset_comm)
+{
+ return MPIX_Pset_same_comm_create (pset_comm);
+}
+
+/**
+ * \brief FORTRAN interface to MPIX_Pset_diff_comm_create
+ *
+ * \param [out] pset_comm Communicator
+ *
+ * \return status
+ */
+int mpix_pset_diff_comm_create (MPI_Comm *pset_comm)
+{
+ return MPIX_Pset_diff_comm_create (pset_comm);
+}
+
+/**
+ * \brief FORTRAN interface to MPIX_Pset_same_comm_create_from_parent
+ *
+ * \param [in] parent_comm Parent communicator
+ * \param [out] pset_comm New pset communicator
+ *
+ * \return status
+ */
+int mpix_pset_same_comm_create_from_parent (MPI_Comm *parent_comm, MPI_Comm *pset_comm)
+{
+ return MPIX_Pset_same_comm_create_from_parent (*parent_comm, pset_comm);
+}
+
+/**
+ * \brief FORTRAN interface to MPIX_Pset_diff_comm_create_from_parent
+ *
+ * \param [in] parent_comm Parent communicator
+ * \param [out] pset_comm New pset communicator
+ *
+ * \return status
+ */
+int mpix_pset_diff_comm_create_from_parent (MPI_Comm *parent_comm, MPI_Comm *pset_comm)
+{
+ return MPIX_Pset_diff_comm_create_from_parent (*parent_comm, pset_comm);
+}
+
+/**
+ * \brief FORTRAN interface to MPIX_IO_node_id
+ *
+ * \param [out] io_node_id This rank's io node id
+ */
+void mpix_io_node_id (int *io_node_id) { *io_node_id = MPIX_IO_node_id(); }
+
+/**
+ * \brief FORTRAN interface to MPIX_IO_link_id
+ *
+ * \param [out] io_link_id This rank's io link id
+ */
+void mpix_io_link_id (int *io_link_id) { *io_link_id = MPIX_IO_link_id(); }
+
+/**
+ * \brief FORTRAN interface to MPIX_IO_distance
+ *
+ * \param [out] io_distance This rank's distance to the io node
+ */
+void mpix_io_distance (int *io_distance) { *io_distance = MPIX_IO_distance(); }
+
+/**
+ * \brief FORTRAN interface to MPIX_Cart_comm_create
+ *
+ * \param [out] cart_comm Communicator to create
+ *
+ * \return status
+ */
+int mpix_cart_comm_create (MPI_Comm *cart_comm)
+{
+ return MPIX_Cart_comm_create (cart_comm);
+}
+
+
+
#endif
#ifdef __PE__
http://git.mpich.org/mpich.git/commitdiff/e78f37339f9573de4158d4a404834955b…
commit e78f37339f9573de4158d4a404834955b8da42f0
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Thu Apr 18 11:33:27 2013 -0500
always disable eager for synchronous sends
(ibm) CPS 95PHUZ
(ibm) 7bfb869616ec9aaffe4e5de9e05840fed4e4065a
(ibm) d5a3fc9e58ccfcf185f9671b06d8307fd56e653c
Signed-off-by: Haizhu Liu <haizhu(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c b/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c
index 805d310..8904ddd 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c
@@ -439,6 +439,7 @@ if (!TOKEN_FLOW_CONTROL_ON) {
#endif
const unsigned isLocal = PAMIX_Task_is_local(dest_tid);
+ const unsigned data_sz_limit = isSync?UINT_MAX:data_sz;
/*
* Always use the short protocol when data_sz is small.
@@ -456,7 +457,7 @@ if (!TOKEN_FLOW_CONTROL_ON) {
/*
* Use the eager protocol when data_sz is less than the eager limit.
*/
- else if (data_sz < MPIDI_PT2PT_EAGER_LIMIT(isInternal,isLocal))
+ else if (data_sz_limit < MPIDI_PT2PT_EAGER_LIMIT(isInternal,isLocal))
{
TRACE_ERR("Sending(eager%s%s) bytes=%u (eager_limit=%u)\n", isInternal==1?",internal":"", isLocal==1?",intranode":"", data_sz, MPIDI_PT2PT_EAGER_LIMIT(isInternal,isLocal));
MPIDI_SendMsg_eager(context,
http://git.mpich.org/mpich.git/commitdiff/6e7afae345cc450f7999adb6d52d1a187…
commit 6e7afae345cc450f7999adb6d52d1a1878c19504
Author: Su Huang <suhuang(a)us.ibm.com>
Date: Mon Jun 3 11:09:47 2013 -0400
negative source returned from MPI_Waitany
(ibm) D190899
(ibm) 6693a84bd469820d94e694bbb7e3fbe2b6188e2f
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_done.c b/src/mpid/pamid/src/pt2pt/mpidi_done.c
index 8e68aa9..9f2e062 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_done.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_done.c
@@ -216,6 +216,9 @@ void MPIDI_Recvq_process_out_of_order_msgs(pami_task_t src, pami_context_t conte
} else {
MPIDI_RecvMsg_Unexp(ooreq, rreq->mpid.userbuf, rreq->mpid.userbufcount, rreq->mpid.datatype);
rreq->status.count = ooreq->status.count;
+ rreq->status.MPI_SOURCE = ooreq->status.MPI_SOURCE;
+ rreq->status.MPI_TAG = ooreq->status.MPI_TAG;
+ rreq->mpid.envelope.msginfo.MPIseqno = ooreq->mpid.envelope.msginfo.MPIseqno;
MPIDI_Request_complete(rreq);
}
MPID_Request_release(ooreq);
http://git.mpich.org/mpich.git/commitdiff/d3b99bb0be96a1721ced0b99f025796ca…
commit d3b99bb0be96a1721ced0b99f025796ca572d24d
Author: Su Huang <suhuang(a)us.ibm.com>
Date: Wed May 29 09:18:21 2013 -0400
pamid updates to handling trace buffers
(ibm) D190239
(ibm) 83363688c21e16bf6f504d5d1bd28075a099bb89
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/include/mpidi_datatypes.h b/src/mpid/pamid/include/mpidi_datatypes.h
index 62adcbf..fb56e3c 100644
--- a/src/mpid/pamid/include/mpidi_datatypes.h
+++ b/src/mpid/pamid/include/mpidi_datatypes.h
@@ -35,6 +35,7 @@
#include "mpidi_constants.h"
#include "mpidi_platform.h"
#include "pami.h"
+#include "mpidi_trace.h"
#if (MPIU_HANDLE_ALLOCATION_METHOD == MPIU_HANDLE_ALLOCATION_THREAD_LOCAL) && defined(__BGQ__)
struct MPID_Request;
diff --git a/src/mpid/pamid/include/mpidi_trace.h b/src/mpid/pamid/include/mpidi_trace.h
index 9f04067..97f6b96 100644
--- a/src/mpid/pamid/include/mpidi_trace.h
+++ b/src/mpid/pamid/include/mpidi_trace.h
@@ -31,6 +31,11 @@ typedef struct {
int rtag; /* tag of a received message */
int rlen; /* len of a received message */
int rctx; /* context of a received message */
+ void * matchedHandle; /* a message with multiple handles */
+ union {
+ uint flags;
+ struct {
+#ifdef __BIG_ENDIAN__
uint posted:1; /* has the receive posted */
uint rzv:1; /* rendezvous message ? */
uint sync:1; /* synchronous message? */
@@ -49,8 +54,32 @@ typedef struct {
uint matchedInWait:1;/* found a match in MPI_Wait() etc. */
uint ReadySend:1; /* a ready send messsage */
uint persist:1; /* persist communication */
- uint reserve:9;
- void * matchedHandle; /* a message with multiple handles */
+ uint reserve:1;
+ uint reserve1:8;
+#else
+ uint reserve1:8;
+ uint reserve:1;
+ uint persist:1; /* persist communication */
+ uint ReadySend:1; /* a ready send messsage */
+ uint matchedInWait:1;/* found a match in MPI_Wait() etc. */
+ uint matchedInUQ2:2;/* found a match in unexpected queue */
+ uint matchedInUQ:2; /* found a match in unexpected queue */
+ uint matchedInComp:1;/* found a match in completion handler */
+ uint matchedInHH:1; /* found a match in header haldner */
+ uint sync_com_in_HH:1; /* sync msg completed in header handler*/
+ uint comp_in_HHV_noMatch:1;/* no matched in header handler EA */
+ uint comp_in_HH:4; /* the msg completed in header handler */
+ uint matchedInOOL:1;/* found a match in out of order list */
+ uint ool:1; /* the msg arrived out of order */
+ uint HH:1; /* header handler */
+ uint sendFin:1; /* send complete info? */
+ uint sendAck:1; /* send ack? */
+ uint sync:1; /* synchronous message? */
+ uint rzv:1; /* rendezvous message ? */
+ uint posted:1; /* has the receive posted */
+#endif
+ }f;
+ }fl;
} recv_status;
typedef struct {
@@ -64,6 +93,10 @@ typedef struct {
unsigned short dummy;
int tag; /* tag of a message */
int len; /* lengh of a message */
+ union {
+ uint flags;
+ struct {
+#ifdef __BIG_ENDIAN__
uint blocking:1; /* blocking send ? */
uint sync:1; /* sync message */
uint sendEnvelop:1; /* envelop send? */
@@ -80,7 +113,30 @@ typedef struct {
uint ReadySend:1; /* ready send */
uint reqXfer:1; /* request message transfer */
uint persist:1; /* persistent communiation */
- uint reserved:15;
+ uint reserve:5;
+ uint reserve1:8;
+#else
+ uint reserve1:8;
+ uint reserve:5;
+ uint persist:1; /* persistent communiation */
+ uint reqXfer:1; /* request message transfer */
+ uint ReadySend:1; /* ready send */
+ uint complSync:1; /* complete sync */
+ uint recvFin:1; /* recv complete information */
+ uint recvAck:1; /* recv an ack from the receiver */
+ uint sendComp:1; /* send complete */
+ uint NoComp:4; /* no completion handler */
+ uint use_pami_get:1;/* use only PAMI_Get() */
+ uint memRegion:1; /* memory is registered */
+ uint sendRzv:1; /* send via renzdvous protocol */
+ uint sendEager:1; /* eager send */
+ uint sendShort:1; /* send immediate */
+ uint sendEnvelop:1; /* envelop send? */
+ uint sync:1; /* sync message */
+ uint blocking:1; /* blocking send ? */
+#endif
+ }f;
+ }fl;
} send_status;
typedef struct {
@@ -94,15 +150,46 @@ typedef struct {
int len; /* length of a receive message */
uint nMsgs; /* no. of messages have been received */
uint msgid; /* msg seqno of the matched message */
+#ifdef __BIG_ENDIAN__
uint sendCtx:16; /* context of incoming msg */
uint recvCtx:16; /* context of a posted receive */
+#else
+ uint recvCtx:16; /* context of a posted receive */
+ uint sendCtx:16; /* context of incoming msg */
+#endif
+ union {
+ uint flags;
+ struct {
+#ifdef __BIG_ENDIAN__
uint lw:4; /* use lw protocol immediate send */
uint persist:4; /* persistent communication */
uint blocking:2; /* blocking receive */
- uint reserve:22;
+ uint reserve:6;
+ uint reserve1:16;
+#else
+ uint reserve1:16;
+ uint reserve:6;
+ uint blocking:2; /* blocking receive */
+ uint persist:4; /* persistent communication */
+ uint lw:4; /* use lw protocol immediate send */
+#endif
+ }f;
+ }fl;
} posted_recv;
-#define MPIDI_SET_PR_REC(rreq,buf,ct,ll,dt,pami_id,rank,tag,comm,is_blk) { \
+
+typedef struct MPIDI_Trace_buf {
+ recv_status *R; /* record incoming messages */
+ posted_recv *PR; /* record posted receive */
+ send_status *S; /* send messages */
+ int totPR; /* total no. of poste receive */
+} MPIDI_Trace_buf_t;
+
+MPIDI_Trace_buf_t *MPIDI_Trace_buf;
+
+
+
+#define MPIDI_SET_PR_REC(rreq,buf,ct,dt,pami_id,rank,tag,comm,is_blk) { \
int idx,src,seqNo,x; \
if (pami_id != MPI_ANY_SOURCE) \
src=pami_id; \
@@ -118,42 +205,53 @@ typedef struct {
MPIDI_Trace_buf[src].PR[idx].bufadd = buf; \
MPIDI_Trace_buf[src].PR[idx].msgid = seqNo; \
MPIDI_Trace_buf[src].PR[idx].count = ct; \
- MPIDI_Trace_buf[src].PR[idx].len = ll; \
MPIDI_Trace_buf[src].PR[idx].datatype = dt; \
MPIDI_Trace_buf[src].PR[idx].tag=tag; \
MPIDI_Trace_buf[src].PR[idx].sendCtx=comm->context_id; \
MPIDI_Trace_buf[src].PR[idx].recvCtx=comm->recvcontext_id;\
- MPIDI_Trace_buf[src].PR[idx].blocking=is_blk; \
+ MPIDI_Trace_buf[src].PR[idx].fl.f.blocking=is_blk; \
rreq->mpid.PR_idx=idx; \
}
-#define MPIDI_GET_S_REC(sreq,ctx,isSync,dataSize) { \
+#define MPIDI_GET_S_REC(dd,sreq,ctx,isSync,dataSize) { \
send_status *sstatus; \
- int dest=sreq->mpid.partner_id; \
int seqNo=sreq->mpid.envelope.msginfo.MPIseqno; \
int idx = (seqNo & SEQMASK); \
- memset(&MPIDI_Trace_buf[dest].S[idx],0,sizeof(send_status));\
- sstatus=&MPIDI_Trace_buf[dest].S[idx]; \
+ sreq->mpid.partner_id=dd; \
+ memset(&MPIDI_Trace_buf[dd].S[idx],0,sizeof(send_status));\
+ sstatus=&MPIDI_Trace_buf[dd].S[idx]; \
sstatus->req = (void *)sreq; \
sstatus->tag = sreq->mpid.envelope.msginfo.MPItag; \
sstatus->dest = sreq->mpid.peer_pami; \
sstatus->rank = sreq->mpid.peer_comm; \
sstatus->msgid = seqNo; \
- sstatus->sync = isSync; \
+ sstatus->fl.f.sync = isSync; \
sstatus->sctx = ctx; \
sstatus->tag = sreq->mpid.envelope.msginfo.MPItag; \
sstatus->len= dataSize; \
sreq->mpid.idx=idx; \
}
-typedef struct MPIDI_Trace_buf {
- recv_status *R; /* record incoming messages */
- posted_recv *PR; /* record posted receive */
- send_status *S; /* send messages */
- int totPR; /* total no. of poste receive */
-} MPIDI_Trace_buf_t;
-MPIDI_Trace_buf_t *MPIDI_Trace_buf;
+#define TRACE_SET_S_BIT(dd,ii,mbr) MPIDI_Trace_buf[(dd)].S[(ii)].mbr=1;
+#define TRACE_SET_R_BIT(dd,ii,mbr) MPIDI_Trace_buf[(dd)].R[(ii)].mbr=1;
+#define TRACE_SET_S_VAL(dd,ii,mbr,val) MPIDI_Trace_buf[(dd)].S[(ii)].mbr=val;
+#define TRACE_SET_R_VAL(dd,ii,mbr,val) MPIDI_Trace_buf[(dd)].R[(ii)].mbr=val;
+#define TRACE_SET_REQ_VAL(ww,val1) ww=val1;
+#define TRACE_MEMSET_R(tt,nbr,str) (memset(&MPIDI_Trace_buf[tt].R[(nbr & SEQMASK)],0,sizeof(str)));
+#define TRACE_MEMSET_S(tt,nbr,str) (memset(&MPIDI_Trace_buf[tt].S[(nbr & SEQMASK)],0,sizeof(str)));
+#else
+int recv_status;
+int send_status;
+int posted_recv;
+#define MPIDI_SET_PR_REC(rreq,buf,ct,dt,pami_id,rank,tag,comm,is_blk) 0
+#define MPIDI_GET_S_REC(dest,sreq,ctx,isSync,dataSize) 0
+#define TRACE_SET_S_BIT(dd,ii,mbr) 0
+#define TRACE_SET_R_BIT(dd,ii,mbr) 0
+#define TRACE_SET_S_VAL(dd,ii,mbr,val) 0
+#define TRACE_SET_R_VAL(dd,ii,mbr,val) 0
+#define TRACE_SET_REQ_VAL(ww,val1) 0
+#define TRACE_MEMSET_R(tt,nbr,str) 0
#endif /* MPIDI_TRACE */
#endif /* include_mpidi_trace_h */
diff --git a/src/mpid/pamid/include/mpidpre.h b/src/mpid/pamid/include/mpidpre.h
index ebb99af..29039e2 100644
--- a/src/mpid/pamid/include/mpidpre.h
+++ b/src/mpid/pamid/include/mpidpre.h
@@ -58,9 +58,6 @@
#include "mpidi_hooks.h"
#include "mpidi_thread.h"
#include "mpidi_util.h"
-#ifdef MPIDI_TRACE
-#include "mpidi_trace.h"
-#endif
#ifdef DYNAMIC_TASKING
#define HAVE_GPID_ROUTINES
diff --git a/src/mpid/pamid/src/mpid_recvq.c b/src/mpid/pamid/src/mpid_recvq.c
index 8a7f43b..3cd9cae 100644
--- a/src/mpid/pamid/src/mpid_recvq.c
+++ b/src/mpid/pamid/src/mpid_recvq.c
@@ -316,9 +316,7 @@ MPIDI_Recvq_FDU(int source, pami_task_t pami_source, int tag, int context_id, in
#endif
MPIDI_Recvq_remove(MPIDI_Recvq.unexpected, rreq, prev_rreq);
found = TRUE;
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[(rreq->mpid.partner_id)].R[(rreq->mpid.idx)].matchedInUQ2=1;
-#endif
+ TRACE_SET_R_BIT((rreq->mpid.partner_id),(rreq->mpid.idx),fl.f.matchedInUQ2);
goto fn_exit;
}
#ifdef OUT_OF_ORDER_HANDLING
@@ -507,11 +505,10 @@ MPIDI_Recvq_AEU(MPID_Request *newreq, int source, pami_task_t pami_source, int t
MPID_Request *rreq;
rreq = newreq;
rreq->kind = MPID_REQUEST_RECV;
-#ifdef MPIDI_TRACE
- rreq->mpid.envelope.msginfo.MPIseqno=-1;
- rreq->mpid.envelope.length=0;
- rreq->mpid.envelope.data=NULL;
-#endif
+ TRACE_MEMSET_R(pami_source,msg_seqno,recv_status);
+ TRACE_SET_REQ_VAL(rreq->mpid.envelope.msginfo.MPIseqno,-1);
+ TRACE_SET_REQ_VAL(rreq->mpid.envelope.length,-1);
+ TRACE_SET_REQ_VAL(rreq->mpid.envelope.data,(void *) 0);
#ifndef OUT_OF_ORDER_HANDLING
MPIDI_Request_setMatch(rreq, tag, source, context_id);
MPIDI_Recvq_append(MPIDI_Recvq.unexpected, rreq);
@@ -519,13 +516,6 @@ MPIDI_Recvq_AEU(MPID_Request *newreq, int source, pami_task_t pami_source, int t
MPID_Request *q;
MPIDI_In_cntr_t *in_cntr;
int insert, i;
-#ifdef MPIDI_TRACE
- int idx;
- idx=(msg_seqno & SEQMASK);
- recv_status *rstatus;
- rstatus=&MPIDI_In_cntr[pami_source].R[idx];
- memset(rstatus,0,sizeof(recv_status));
-#endif
in_cntr = &MPIDI_In_cntr[pami_source];
MPIDI_Request_setMatch(rreq, tag, source, context_id); /* mpi rank needed */
@@ -552,16 +542,14 @@ MPIDI_Recvq_AEU(MPID_Request *newreq, int source, pami_task_t pami_source, int t
MPIDI_Recvq_append(MPIDI_Recvq.unexpected, rreq);
}
}
-#ifdef MPIDI_TRACE
- rstatus->req=rreq;
- rstatus->msgid=msg_seqno;
- rstatus->ool=1;
- rstatus->rtag=tag;
- rstatus->rctx=context_id;
- rreq->mpid.idx=idx;
- rstatus->rsource=pami_source;
- rreq->mpid.partner_id=pami_source;
-#endif
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),req,rreq);
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),msgid,msg_seqno);
+ TRACE_SET_R_BIT(pami_source,(msg_seqno & SEQMASK),fl.f.ool);
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),rtag,tag);
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),rctx,context_id);
+ TRACE_SET_REQ_VAL(rreq->mpid.idx,(msg_seqno & SEQMASK));
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),rsource,pami_source);
+ TRACE_SET_REQ_VAL(rreq->mpid.partner_id,pami_source);
if (((int)(in_cntr->nMsgs - msg_seqno)) < 0) { /* seqno > nMsgs, out of order */
MPIDI_Recvq_enqueue_ool(pami_source,rreq);
diff --git a/src/mpid/pamid/src/mpid_recvq.h b/src/mpid/pamid/src/mpid_recvq.h
index ba5a57c..707fb66 100644
--- a/src/mpid/pamid/src/mpid_recvq.h
+++ b/src/mpid/pamid/src/mpid_recvq.h
@@ -166,11 +166,9 @@ MPIDI_Recvq_FDU_or_AEP(MPID_Request *newreq, int source, pami_task_t pami_source
so we need to allocate a new request and add it to the
posted queue */
rreq = newreq;
-#ifdef MPIDI_TRACE
- rreq->mpid.envelope.msginfo.MPIseqno=-1;
- rreq->mpid.envelope.length=-1;
- rreq->mpid.envelope.data=NULL;
-#endif
+ TRACE_SET_REQ_VAL(rreq->mpid.envelope.msginfo.MPIseqno,-1);
+ TRACE_SET_REQ_VAL(rreq->mpid.envelope.length,-1);
+ TRACE_SET_REQ_VAL(rreq->mpid.envelope.data,(void *) 0);
rreq->kind = MPID_REQUEST_RECV;
MPIDI_Request_setMatch(rreq, tag, source, context_id);
MPIDI_Recvq_append(MPIDI_Recvq.posted, rreq);
@@ -237,13 +235,7 @@ MPIDI_Recvq_FDP(size_t source, pami_task_t pami_source, int tag, int context_id,
#ifdef USE_STATISTICS
unsigned search_length = 0;
#endif
-#ifdef MPIDI_TRACE
- int idx;
- idx=(msg_seqno & SEQMASK);
- recv_status *rstatus;
- memset(&MPIDI_Trace_buf[pami_source].R[idx],0,sizeof(recv_status));
- rstatus=&MPIDI_Trace_buf[pami_source].R[idx];
-#endif
+ TRACE_MEMSET_R(pami_source,msg_seqno,recv_status);
rreq = MPIDI_Recvq.posted_head;
@@ -282,19 +274,17 @@ MPIDI_Recvq_FDP(size_t source, pami_task_t pami_source, int tag, int context_id,
if (flag)
#endif
{
-#ifdef MPIDI_TRACE
- rstatus->req=rreq;
- rstatus->msgid=msg_seqno;
- rstatus->posted=1;
- rstatus->bufadd=rreq->mpid.userbuf;
- rstatus->len=rreq->mpid.envelope.length;
- rstatus->rtag=tag;
- rstatus->rctx=context_id;
- rstatus->matchedInHH=1;
- rstatus->rsource=pami_source;
- rreq->mpid.idx=idx;
- rreq->mpid.partner_id=pami_source;
-#endif
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),req,rreq);
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),msgid,msg_seqno);
+ TRACE_SET_R_BIT(pami_source,(msg_seqno & SEQMASK),fl.f.posted);
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),bufadd,rreq->mpid.userbuf);
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),len,rreq->mpid.envelope.length);
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),rtag,tag);
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),rctx,context_id);
+ TRACE_SET_R_VAL(pami_source,(msg_seqno & SEQMASK),rsource,pami_source);
+ TRACE_SET_R_BIT(pami_source,(msg_seqno & SEQMASK),fl.f.matchedInHH);
+ TRACE_SET_REQ_VAL(rreq->mpid.idx,(msg_seqno & SEQMASK));
+ TRACE_SET_REQ_VAL(rreq->mpid.partner_id,pami_source);
#ifdef OUT_OF_ORDER_HANDLING
MPIDI_Request_setPeerRank_pami(rreq, pami_source);
#endif
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c b/src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c
index bcdf5d5..8b8c774 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c
@@ -202,7 +202,7 @@ MPIDI_RecvCB(pami_context_t context,
MPIDI_Request_cpyPeerRequestH(rreq, msginfo);
MPIDI_Request_setSync (rreq, msginfo->isSync);
MPIDI_Request_setRzv (rreq, 0);
-
+ TRACE_SET_R_VAL(source,(rreq->mpid.PR_idx),len,sndlen);
/* --------------------------------------- */
/* We have to fill in the callback info. */
/* --------------------------------------- */
@@ -295,10 +295,8 @@ MPIDI_RecvCB(pami_context_t context,
/* -------------------------------------------------- */
recv->addr = rreq->mpid.uebuf;
}
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].comp_in_HH=2;
- MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
-#endif
+ TRACE_SET_R_VAL(source,(rreq->mpid.idx),fl.f.comp_in_HH,2);
+ TRACE_SET_R_VAL(source,(rreq->mpid.idx),bufadd,rreq->mpid.userbuf);
fn_exit_eager:
#ifdef OUT_OF_ORDER_HANDLING
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c b/src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c
index 45a7963..8b00c48 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c
@@ -111,12 +111,10 @@ MPIDI_RecvRzvCB_impl(pami_context_t context,
rreq->mpid.envelope.data = envelope->data;
#endif
rreq->mpid.envelope.length = envelope->length;
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].req=rreq;
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].rzv=1;
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].rlen=envelope->length;
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].sync=msginfo->isSync;
-#endif
+ TRACE_SET_R_VAL(source,(rreq->mpid.idx),req,rreq);
+ TRACE_SET_R_VAL(source,(rreq->mpid.idx),rlen,envelope->length);
+ TRACE_SET_R_VAL(source,(rreq->mpid.idx),fl.f.sync,msginfo->isSync);
+ TRACE_SET_R_BIT(source,(rreq->mpid.idx),fl.f.rzv);
if (TOKEN_FLOW_CONTROL_ON)
{
#if TOKEN_FLOW_CONTROL
@@ -147,11 +145,9 @@ MPIDI_RecvRzvCB_impl(pami_context_t context,
else
{
MPIDI_RendezvousTransfer(context, rreq);
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].sync_com_in_HH=1;
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].matchedInHH=1;
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
-#endif
+ TRACE_SET_R_BIT(source,(rreq->mpid.idx),fl.f.sync_com_in_HH);
+ TRACE_SET_R_BIT(source,(rreq->mpid.idx),fl.f.matchedInHH);
+ TRACE_SET_R_VAL(source,(rreq->mpid.idx),bufadd,rreq->mpid.userbuf);
}
MPID_Request_discard(newreq);
}
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_callback_short.c b/src/mpid/pamid/src/pt2pt/mpidi_callback_short.c
index 14a6f2e..552c636 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_callback_short.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_callback_short.c
@@ -196,11 +196,9 @@ MPIDI_RecvShortCB(pami_context_t context,
if (sndlen > 0)
memcpy(rcvbuf, sndbuf, sndlen);
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].rlen=sndlen;
- MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].comp_in_HH=1;
- MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
-#endif
+ TRACE_SET_R_VAL(source,(rreq->mpid.idx),rlen,sndlen);
+ TRACE_SET_R_BIT(source,(rreq->mpid.idx),fl.f.comp_in_HH);
+ TRACE_SET_R_VAL(source,(rreq->mpid.idx),bufadd,rreq->mpid.userbuf);
MPIDI_Request_complete(rreq);
fn_exit_short:
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_callback_util.c b/src/mpid/pamid/src/pt2pt/mpidi_callback_util.c
index 3f80fae..931404c 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_callback_util.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_callback_util.c
@@ -73,18 +73,14 @@ MPIDI_Callback_process_unexp(MPID_Request *newreq,
#endif
MPID_assert(!sndlen || rreq->mpid.uebuf != NULL);
-#ifdef MPIDI_TRACE
- int idx=(msginfo->MPIseqno & SEQMASK);
- int source=PAMIX_Endpoint_query(sender);
- memset(&MPIDI_Trace_buf[source].R[idx],0,sizeof(recv_status));
- MPIDI_Trace_buf[source].R[idx].msgid=msginfo->MPIseqno;
- MPIDI_Trace_buf[source].R[idx].rtag=tag;
- MPIDI_Trace_buf[source].R[idx].rctx=msginfo->MPIctxt;
- MPIDI_Trace_buf[source].R[idx].rlen=sndlen;
- MPIDI_Trace_buf[source].R[idx].sync=isSync;
- MPIDI_Trace_buf[source].R[idx].rsource=source;
- rreq->mpid.idx=idx;
-#endif
+ TRACE_MEMSET_R(PAMIX_Endpoint_query(sender),msg_seqno,recv_status);
+ TRACE_SET_R_VAL(PAMIX_Endpoint_query(sender),(msginfo->MPIseqno & SEQMASK),msgid,msginfo->MPIseqno);
+ TRACE_SET_R_VAL(PAMIX_Endpoint_query(sender),(msginfo->MPIseqno & SEQMASK),rtag,tag);
+ TRACE_SET_R_VAL(PAMIX_Endpoint_query(sender),(msginfo->MPIseqno & SEQMASK),rctx,msginfo->MPIctxt);
+ TRACE_SET_R_VAL(PAMIX_Endpoint_query(sender),(msginfo->MPIseqno & SEQMASK),rlen,sndlen);
+ TRACE_SET_R_VAL(PAMIX_Endpoint_query(sender),(msginfo->MPIseqno & SEQMASK),fl.f.sync,isSync);
+ TRACE_SET_R_VAL(PAMIX_Endpoint_query(sender),(msginfo->MPIseqno & SEQMASK),rsource,PAMIX_Endpoint_query(sender));
+ TRACE_SET_REQ_VAL(rreq->mpid.idx,(msginfo->MPIseqno & SEQMASK));
if (recv != NULL)
{
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_control.c b/src/mpid/pamid/src/pt2pt/mpidi_control.c
index b39fa51..39629fd 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_control.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_control.c
@@ -132,13 +132,9 @@ MPIDI_RecvRzvDoneCB_zerobyte(pami_context_t context,
MPIDI_Request_setControl(rreq, original_value);
MPIDI_RecvDoneCB(context, rreq, PAMI_SUCCESS);
-#ifdef MPIDI_TRACE
- pami_task_t source;
- source = MPIDI_Request_getPeerRank_pami(rreq);
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].sync_com_in_HH=1;
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].matchedInHH=1;
- MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
-#endif
+ TRACE_SET_R_BIT(MPIDI_Request_getPeerRank_pami(rreq),(rreq->mpid.idx),fl.f.sync_com_in_HH);
+ TRACE_SET_R_BIT(MPIDI_Request_getPeerRank_pami(rreq),(rreq->mpid.idx),fl.f.matchedInHH);
+ TRACE_SET_R_VAL(MPIDI_Request_getPeerRank_pami(rreq),(rreq->mpid.idx),bufadd,rreq->mpid.userbuf);
MPID_Request_release(rreq);
}
@@ -228,10 +224,7 @@ MPIDI_RzvAck_proc_req(pami_context_t context,
MPID_assert(rc == PAMI_SUCCESS);
}
#endif
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[(req->mpid.partner_id)].S[(req->mpid.idx)].recvAck=1;
-#endif
-
+ TRACE_SET_S_BIT(req->mpid.partner_id,(req->mpid.idx),fl.f.recvAck);
MPIDI_SendDoneCB(context, req, PAMI_SUCCESS);
}
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_done.c b/src/mpid/pamid/src/pt2pt/mpidi_done.c
index c71acba..8e68aa9 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_done.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_done.c
@@ -33,10 +33,7 @@ MPIDI_SendDoneCB(pami_context_t context,
void * clientdata,
pami_result_t result)
{
-#ifdef MPIDI_TRACE
- MPID_Request * req = (MPID_Request *) clientdata;
- MPIDI_Trace_buf[(req->mpid.partner_id)].S[(req->mpid.idx)].sendComp=1;
-#endif
+ TRACE_SET_S_BIT((((MPID_Request *) clientdata)->mpid.partner_id),(((MPID_Request *) clientdata)->mpid.idx),fl.f.sendComp);
MPIDI_SendDoneCB_inline(context,
clientdata,
result);
@@ -198,11 +195,9 @@ void MPIDI_Recvq_process_out_of_order_msgs(pami_task_t src, pami_context_t conte
rreq->status.MPI_ERROR = MPI_ERR_TRUNCATE;
}
-#ifdef MPIDI_TRACE
- rreq->mpid.idx = ooreq->mpid.idx;
- MPIDI_Trace_buf[src].R[(rreq->mpid.idx)].matchedInOOL=1;
- MPIDI_Trace_buf[src].R[(rreq->mpid.idx)].rlen=dt_size;
-#endif
+ TRACE_SET_REQ_VAL(rreq->mpid.idx,ooreq->mpid.idx);
+ TRACE_SET_R_BIT(src,(rreq->mpid.idx),fl.f.matchedInOOL);
+ TRACE_SET_R_VAL(src,(rreq->mpid.idx),rlen,dt_size);
ooreq->comm = rreq->comm;
MPIR_Comm_add_ref(ooreq->comm);
ooreq->mpid.userbuf = rreq->mpid.userbuf;
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_recv.h b/src/mpid/pamid/src/pt2pt/mpidi_recv.h
index 8ff9f10..5bb63df 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_recv.h
+++ b/src/mpid/pamid/src/pt2pt/mpidi_recv.h
@@ -190,13 +190,7 @@ MPIDI_Recv(void * buf,
comm->recvcontext_id + context_offset,
&found);
#endif
-#ifdef MPIDI_TRACE
-{
- size_t ll;
- ll = count * MPID_Datatype_get_basic_size(datatype);
- MPIDI_SET_PR_REC(rreq,buf,count,ll,datatype,pami_source,rank,tag,comm,is_blocking);
-}
-#endif
+ MPIDI_SET_PR_REC(rreq,buf,count,datatype,pami_source,rank,tag,comm,is_blocking);
/* ----------------------------------------------------------------- */
/* populate request with our data */
@@ -212,6 +206,7 @@ MPIDI_Recv(void * buf,
if (unlikely(found))
{
+ TRACE_SET_R_VAL(pami_source,(rreq->mpid.PR_idx),len,rreq->mpid.uebuflen);
MPIDI_RecvMsg_Unexp(rreq, buf, count, datatype);
mpi_errno = rreq->status.MPI_ERROR;
if (TOKEN_FLOW_CONTROL_ON) {
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c b/src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c
index e070efd..71191f9 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c
@@ -36,9 +36,7 @@ MPIDI_RecvMsg_Unexp(MPID_Request * rreq,
/* The recvnew callback will acknowledge the posted messages */
/* Recv functions will ack the messages that are unexpected */
/* ------------------------------------------------------------ */
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[(rreq->mpid.partner_id)].R[(rreq->mpid.idx)].matchedInUQ=1;
-#endif
+ TRACE_SET_R_BIT((rreq->mpid.partner_id),(rreq->mpid.idx),fl.f.matchedInUQ);
if (MPIDI_Request_isRzv(rreq))
{
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c b/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c
index 5b00299..805d310 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c
@@ -73,15 +73,13 @@ MPIDI_SendMsg_short(pami_context_t context,
}
#endif
MPID_assert(rc == PAMI_SUCCESS);
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].mode=params.dispatch;
+ TRACE_SET_S_VAL(dest,(sreq->mpid.envelope.msginfo.MPIseqno & SEQMASK),mode,params.dispatch);
if (!isSync) {
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].NoComp=1;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].sendShort=1;
- } else
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].sendEnvelop=1;
-
-#endif
+ TRACE_SET_S_BIT(dest,(sreq->mpid.envelope.msginfo.MPIseqno & SEQMASK),fl.f.NoComp);
+ TRACE_SET_S_BIT(dest,(sreq->mpid.envelope.msginfo.MPIseqno & SEQMASK),fl.f.sendShort);
+ } else {
+ TRACE_SET_S_BIT(dest,(sreq->mpid.envelope.msginfo.MPIseqno & SEQMASK),fl.f.sendEnvelop);
+ }
MPIDI_SendDoneCB_inline(context, sreq, PAMI_SUCCESS);
#if (MPIDI_STATISTICS)
@@ -128,10 +126,8 @@ MPIDI_SendMsg_eager(pami_context_t context,
pami_result_t rc;
rc = PAMI_Send(context, ¶ms);
MPID_assert(rc == PAMI_SUCCESS);
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].mode=MPIDI_Protocols_Eager;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].sendEager=1;
-#endif
+ TRACE_SET_S_VAL(dest,(sreq->mpid.idx),mode,MPIDI_Protocols_Eager);
+ TRACE_SET_S_BIT(dest,(sreq->mpid.idx),fl.f.sendEager);
}
@@ -239,14 +235,12 @@ MPIDI_SendMsg_rzv(pami_context_t context,
rc = PAMI_Send_immediate(context, ¶ms);
MPID_assert(rc == PAMI_SUCCESS);
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].bufaddr=sreq->mpid.envelope.data;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].mode=MPIDI_Protocols_RVZ;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].sendRzv=1;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].sendEnvelop=1;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].memRegion=sreq->mpid.envelope.memregion_used;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].use_pami_get=MPIDI_Process.mp_s_use_pami_get;
-#endif
+ TRACE_SET_S_VAL(dest,(sreq->mpid.idx),bufaddr,sreq->mpid.envelope.data);
+ TRACE_SET_S_VAL(dest,(sreq->mpid.idx),mode,MPIDI_Protocols_RVZ);
+ TRACE_SET_S_BIT(dest,(sreq->mpid.idx),fl.f.sendRzv);
+ TRACE_SET_S_BIT(dest,(sreq->mpid.idx),fl.f.sendEnvelop);
+ TRACE_SET_S_VAL(dest,(sreq->mpid.idx),fl.f.memRegion,sreq->mpid.envelope.memregion_used);
+ TRACE_SET_S_VAL(dest,(sreq->mpid.idx),fl.f.use_pami_get,MPIDI_Process.mp_s_use_pami_get);
}
@@ -299,14 +293,12 @@ MPIDI_SendMsg_rzv_zerobyte(pami_context_t context,
rc = PAMI_Send_immediate(context, ¶ms);
MPID_assert(rc == PAMI_SUCCESS);
-#ifdef MPIDI_TRACE
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].bufaddr=sreq->mpid.envelope.data;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].mode=MPIDI_Protocols_RVZ_zerobyte;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].sendRzv=1;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].sendEnvelop=1;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].memRegion=sreq->mpid.envelope.memregion_used;
- MPIDI_Trace_buf[dest].S[(sreq->mpid.idx)].use_pami_get=MPIDI_Process.mp_s_use_pami_get;
-#endif
+ TRACE_SET_S_VAL(dest,(sreq->mpid.idx),bufaddr,sreq->mpid.envelope.data);
+ TRACE_SET_S_VAL(dest,(sreq->mpid.idx),mode,MPIDI_Protocols_RVZ_zerobyte);
+ TRACE_SET_S_VAL(dest,(sreq->mpid.idx),fl.f.memRegion,sreq->mpid.envelope.memregion_used);
+ TRACE_SET_S_VAL(dest,(sreq->mpid.idx),fl.f.use_pami_get,MPIDI_Process.mp_s_use_pami_get);
+ TRACE_SET_S_BIT(dest,(sreq->mpid.idx),fl.f.sendRzv);
+ TRACE_SET_S_BIT(dest,(sreq->mpid.idx),fl.f.sendEnvelop);
}
@@ -440,10 +432,7 @@ if (!TOKEN_FLOW_CONTROL_ON) {
{
MPIDI_SendMsg_process_userdefined_dt(sreq, &sndbuf, &data_sz);
}
-#ifdef MPIDI_TRACE
- sreq->mpid.partner_id=dest;
- MPIDI_GET_S_REC(sreq,context,isSync,data_sz);
-#endif
+ MPIDI_GET_S_REC(dest_tid,sreq,context,isSync,data_sz);
#ifdef OUT_OF_ORDER_HANDLING
sreq->mpid.envelope.msginfo.noRDMA=0;
@@ -519,10 +508,7 @@ if (!TOKEN_FLOW_CONTROL_ON) {
#if TOKEN_FLOW_CONTROL
if (!(sreq->mpid.userbufcount))
{
-#ifdef MPIDI_TRACE
- sreq->mpid.partner_id=dest;
- MPIDI_GET_S_REC(sreq,context,isSync,0);
-#endif
+ MPIDI_GET_S_REC(dest_tid,sreq,context,isSync,0);
TRACE_ERR("Sending(short,intranode) bytes=%u (short_limit=%u)\n", data_sz, MPIDI_Process.short_limit);
MPIU_THREAD_CS_ENTER(MSGQUEUE,0);
MPIDI_Piggy_back_tokens(dest,sreq,0);
@@ -548,10 +534,7 @@ if (!TOKEN_FLOW_CONTROL_ON) {
{
MPIDI_SendMsg_process_userdefined_dt(sreq, &sndbuf, &data_sz);
}
-#ifdef MPIDI_TRACE
- sreq->mpid.partner_id=dest;
- MPIDI_GET_S_REC(sreq,context,isSync,data_sz);
-#endif
+ MPIDI_GET_S_REC(dest_tid,sreq,context,isSync,data_sz);
if (unlikely(PAMIX_Task_is_local(dest_tid) != 0)) noRDMA=1;
MPIU_THREAD_CS_ENTER(MSGQUEUE,0);
http://git.mpich.org/mpich.git/commitdiff/fe43008c712fe7f33564e7d1179b99970…
commit fe43008c712fe7f33564e7d1179b9997087efe36
Author: Su Huang <suhuang(a)us.ibm.com>
Date: Tue May 21 14:23:46 2013 -0400
Multi mpi fail with token flow control and euidevelop=deb
(ibm) D190610
(ibm) e7d1baff8b4609f5a81f8bd93a52e13d56dc9c30
(ibm) c914bf17412e2d0d16c44d7877ff7bd628599056
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/mpidi_bufmm.c b/src/mpid/pamid/src/mpidi_bufmm.c
index 4414359..0134556 100644
--- a/src/mpid/pamid/src/mpidi_bufmm.c
+++ b/src/mpid/pamid/src/mpidi_bufmm.c
@@ -192,7 +192,7 @@ void MPIDI_calc_tokens(int nTasks,uint *eager_limit_in, unsigned long *buf_mem_i
if (MPIDI_tfctrl_enabled < 2) {
/* Sometimes we are off by 1 - due to integer arithmetic. */
new_buf_mem_max = (2 * nTasks * MIN_BUF_BKT_SIZE);
- if ( new_buf_mem_max <= BUFFER_MEM_MAX ) {
+ if ( (new_buf_mem_max <= BUFFER_MEM_MAX) && (!application_set_buf_mem) ) {
MPIDI_tfctrl_enabled = 2;
/* Reset val to mini (64) because the for loop above */
/* would have changed it to 32. */
@@ -206,6 +206,13 @@ void MPIDI_calc_tokens(int nTasks,uint *eager_limit_in, unsigned long *buf_mem_i
/* Still not enough ...... Turn off eager send protocol */
MPIDI_tfctrl_enabled = 0;
val = 0;
+ if (((MPIDI_Process.verbose >= MPIDI_VERBOSE_SUMMARY_0)|| (MPIDI_Process.mp_infolevel > 0))
+ && (MPIR_Process.comm_world->rank == 0)) {
+ if ( application_set_buf_mem ) {
+ printf("ATTENTION: MP_BUFFER_MEM=%d was set too low, eager send protocol is disabled\n",
+ *buf_mem_in);
+ }
+ }
}
}
}
diff --git a/src/mpid/pamid/src/mpidi_env.c b/src/mpid/pamid/src/mpidi_env.c
index c14c617..ee1c799 100644
--- a/src/mpid/pamid/src/mpidi_env.c
+++ b/src/mpid/pamid/src/mpidi_env.c
@@ -1213,10 +1213,12 @@ int MPIDI_get_buf_mem(unsigned long *buf_mem,unsigned long *buf_mem_max)
int pre_alloc_val=0;
unsigned long buf_max_val;
int has_error = 0;
+ extern int application_set_buf_mem;
if (cp = getenv("MP_BUFFER_MEM")) {
pre_alloc_buf[24] = '\0';
buf_max[24] = '\0';
+ application_set_buf_mem=1;
if ( (buf_max_cp = strchr(cp, ',')) ) {
if ( *(++buf_max_cp) == '\0' ) {
/* Error: missing buffer_mem_max */
@@ -1261,7 +1263,7 @@ int MPIDI_get_buf_mem(unsigned long *buf_mem,unsigned long *buf_mem_max)
*buf_mem = (int) pre_alloc_val;
if (buf_max_val > ONE_SHARED_SEGMENT)
*buf_mem = ONE_SHARED_SEGMENT;
- if (buf_max_val > *buf_mem_max)
+ if (buf_max_val != *buf_mem_max)
*buf_mem_max = buf_max_val;
} else {
args_in_error += 1;
http://git.mpich.org/mpich.git/commitdiff/d0c1c15acd0ed286c737570399e075f08…
commit d0c1c15acd0ed286c737570399e075f08b63e6fe
Author: Haizhu Liu <haizhu(a)us.ibm.com>
Date: Wed May 22 10:23:06 2013 -0400
Correct a 0 byte malloc failure on AIX
(ibm) D190401
(ibm) 63bc0c36a880f4ce52812aa447ba32d2968aa8f8
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c b/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c
index d6308dd..5b00299 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c
@@ -355,24 +355,28 @@ MPIDI_SendMsg_process_userdefined_dt(MPID_Request * sreq,
{
MPID_Segment segment;
- sreq->mpid.uebuf = sndbuf = MPIU_Malloc(data_sz);
- if (unlikely(sndbuf == NULL))
- {
- sreq->status.MPI_ERROR = MPI_ERR_NO_SPACE;
- sreq->status.count = 0;
- MPID_Abort(NULL, MPI_ERR_NO_SPACE, -1,
- "Unable to allocate non-contiguous buffer");
- }
- sreq->mpid.uebuf_malloc = mpiuMalloc;
-
- DLOOP_Offset last = data_sz;
- MPID_Segment_init(sreq->mpid.userbuf,
- sreq->mpid.userbufcount,
- sreq->mpid.datatype,
- &segment,
- 0);
- MPID_Segment_pack(&segment, 0, &last, sndbuf);
- MPID_assert(last == data_sz);
+ if(data_sz != 0) {
+ sreq->mpid.uebuf = sndbuf = MPIU_Malloc(data_sz);
+ if (unlikely(sndbuf == NULL))
+ {
+ sreq->status.MPI_ERROR = MPI_ERR_NO_SPACE;
+ sreq->status.count = 0;
+ MPID_Abort(NULL, MPI_ERR_NO_SPACE, -1,
+ "Unable to allocate non-contiguous buffer");
+ }
+ sreq->mpid.uebuf_malloc = mpiuMalloc;
+
+ DLOOP_Offset last = data_sz;
+ MPID_Segment_init(sreq->mpid.userbuf,
+ sreq->mpid.userbufcount,
+ sreq->mpid.datatype,
+ &segment,
+ 0);
+ MPID_Segment_pack(&segment, 0, &last, sndbuf);
+ MPID_assert(last == data_sz);
+ } else {
+ sndbuf = NULL;
+ }
}
*_sndbuf = sndbuf;
http://git.mpich.org/mpich.git/commitdiff/709a3b3f17abf85d3055824d1a0bd6977…
commit 709a3b3f17abf85d3055824d1a0bd6977e64b2f7
Author: Haizhu Liu <haizhu(a)us.ibm.com>
Date: Thu May 2 16:00:06 2013 -0400
Correct dlopen for libpoe on AIX
(ibm) 486b8880571b34205490a14e5069fa001552ca0c
(ibm) 8b26dda74b1eebf622cac10b3ad004f98a7d9970
(ibm) D189717
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/pmi/pmi2/poe/poe2pmi.c b/src/pmi/pmi2/poe/poe2pmi.c
index 4fa1fa0..3a3abc0 100644
--- a/src/pmi/pmi2/poe/poe2pmi.c
+++ b/src/pmi/pmi2/poe/poe2pmi.c
@@ -3,7 +3,6 @@
* (C) 2007 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/
-
#include <dlfcn.h>
#include "mpichconf.h"
#include "pmi2.h"
@@ -85,10 +84,21 @@ int PMI2_Init(int *spawned, int *size, int *rank, int *appnum)
int ret;
int (*pmi2_init)(int*, int*, int *, int*);
-
- poeptr = dlopen("libpoe.so",RTLD_NOW|RTLD_GLOBAL);
+ char *poelibname;
+ int poeflags;
+#ifndef __AIX__
+ poelibname = "libpoe.so";
+ poeflags = RTLD_NOW|RTLD_GLOBAL;
+#else
+ poeflags = RTLD_NOW|RTLD_GLOBAL|RTLD_MEMBER;
+ if(sizeof(void *) == 8)
+ poelibname = "libpoe_r.a(poe64_r.o)";
+ else
+ poelibname = "libpoe_r.a(poe_r.o)";
+#endif
+ poeptr = dlopen(poelibname, poeflags);
if (poeptr == NULL) {
- TRACE_ERR("failed to open libpoe.so\n");
+ TRACE_ERR("failed to open %s error=%s\n", poelibname, dlerror());
}
pmi2_init = (int (*)())dlsym(poeptr, "PMI2_Init");
-----------------------------------------------------------------------
Summary of changes:
src/mpid/pamid/include/mpidi_datatypes.h | 1 +
src/mpid/pamid/include/mpidi_trace.h | 136 ++++++++++--
src/mpid/pamid/include/mpidpre.h | 3 -
src/mpid/pamid/include/mpix.h | 78 ++++++-
src/mpid/pamid/src/mpid_recvq.c | 38 ++---
src/mpid/pamid/src/mpid_recvq.h | 40 ++---
src/mpid/pamid/src/mpidi_bufmm.c | 9 +-
src/mpid/pamid/src/mpidi_env.c | 4 +-
src/mpid/pamid/src/mpix/mpix.c | 258 +++++++++++++++++++----
src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c | 8 +-
src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c | 18 +-
src/mpid/pamid/src/pt2pt/mpidi_callback_short.c | 8 +-
src/mpid/pamid/src/pt2pt/mpidi_callback_util.c | 20 +-
src/mpid/pamid/src/pt2pt/mpidi_control.c | 15 +-
src/mpid/pamid/src/pt2pt/mpidi_done.c | 16 +-
src/mpid/pamid/src/pt2pt/mpidi_recv.h | 9 +-
src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c | 4 +-
src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c | 106 ++++-----
src/pmi/pmi2/poe/poe2pmi.c | 18 ++-
19 files changed, 538 insertions(+), 251 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-260-g2a90c36
by noreply@mpich.org 07 Jun '13
by noreply@mpich.org 07 Jun '13
07 Jun '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 2a90c3644882f5ef805fed0f8add5c3ccbf3bd0e (commit)
from f322ce7966f429aab1d54c258aa3a37d8c58629c (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/2a90c3644882f5ef805fed0f8add5c3cc…
commit 2a90c3644882f5ef805fed0f8add5c3ccbf3bd0e
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 08:50:57 2013 -0500
Check for env variables we plan to use before picking slurm.
diff --git a/src/pm/hydra/tools/bootstrap/external/slurm_query_native_int.c b/src/pm/hydra/tools/bootstrap/external/slurm_query_native_int.c
index 852f394..a29ec57 100644
--- a/src/pm/hydra/tools/bootstrap/external/slurm_query_native_int.c
+++ b/src/pm/hydra/tools/bootstrap/external/slurm_query_native_int.c
@@ -18,10 +18,12 @@ HYD_status HYDT_bscd_slurm_query_native_int(int *ret)
if (!HYDTI_bscd_env_is_avail("SLURM_NODELIST"))
*ret = 0;
- if (!HYDTI_bscd_env_is_avail("SLURM_JOB_CPUS_PER_NODE"))
- *ret = 0;
if (!HYDTI_bscd_env_is_avail("SLURM_NNODES"))
*ret = 0;
+ if (!HYDTI_bscd_env_is_avail("SLURM_TASKS_PER_NODE"))
+ *ret = 0;
+ if (!HYDTI_bscd_env_is_avail("SLURM_NODEID"))
+ *ret = 0;
fn_exit:
HYDU_FUNC_EXIT();
-----------------------------------------------------------------------
Summary of changes:
.../bootstrap/external/slurm_query_native_int.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-259-gf322ce7
by noreply@mpich.org 07 Jun '13
by noreply@mpich.org 07 Jun '13
07 Jun '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 f322ce7966f429aab1d54c258aa3a37d8c58629c (commit)
via dad27b3e8cbf007505332798b9ff43fba44071ac (commit)
via a09bfea83f36ac04e3706cef1777746f8a4e97ed (commit)
from 6a688097dfbf3d1af2a50b605ed7aee97a6fa363 (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/f322ce7966f429aab1d54c258aa3a37d8…
commit f322ce7966f429aab1d54c258aa3a37d8c58629c
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 01:22:02 2013 -0500
Bug-fix: Fix slurm node list creation.
Fixes tt#1871.
diff --git a/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c b/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
index 48c9cc7..61f1536 100644
--- a/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
+++ b/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
@@ -79,18 +79,9 @@ static HYD_status group_to_nodes(char *str)
HYDU_free_strlist(node_str);
- status = HYDU_alloc_node(&node);
- HYDU_ERR_POP(status, "unable to allocate note\n");
-
- node->hostname = HYDU_strdup(tmp);
- node->core_count = tasks_per_node[k++];
-
- if (global_node_list == NULL)
- global_node_list = node;
- else {
- for (tnode = global_node_list; tnode->next; tnode = tnode->next);
- tnode->next = node;
- }
+ status =
+ HYDU_add_to_node_list(HYDU_strdup(tmp), tasks_per_node[k++], &global_node_list);
+ HYDU_ERR_POP(status, "unable to add to node list\n");
}
}
http://git.mpich.org/mpich.git/commitdiff/dad27b3e8cbf007505332798b9ff43fba…
commit dad27b3e8cbf007505332798b9ff43fba44071ac
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Jun 7 00:58:14 2013 -0500
Bug-fix: Fix use of wrong string list.
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
index 98a9383..bee4a11 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
@@ -488,7 +488,7 @@ HYD_status HYD_pmcd_pmi_fill_in_exec_launch_info(struct HYD_pg *pg)
if (HYD_server_info.user_global.debug) {
HYDU_dump_noprefix(stdout, "Arguments being passed to proxy %d:\n", proxy_count);
- HYDU_print_strlist(stash.strlist);
+ HYDU_print_strlist(exec_stash.strlist);
HYDU_dump_noprefix(stdout, "\n");
}
http://git.mpich.org/mpich.git/commitdiff/a09bfea83f36ac04e3706cef1777746f8…
commit a09bfea83f36ac04e3706cef1777746f8a4e97ed
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Jun 1 15:56:30 2013 -0500
Memory-leak fixes.
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
index b23ff65..7466a1f 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
@@ -56,6 +56,7 @@ static HYD_status send_cmd_upstream(const char *start, int fd, int num_args, cha
status = HYDU_str_alloc_and_join(tmp, &buf);
HYDU_ERR_POP(status, "unable to join strings\n");
HYDU_free_strlist(tmp);
+ HYDU_FREE(tmp);
HYD_pmcd_init_header(&hdr);
hdr.cmd = PMI_CMD;
@@ -570,6 +571,8 @@ static HYD_status fn_barrier_out(int fd, char *args[])
static HYD_status fn_finalize(int fd, char *args[])
{
const char *cmd;
+ int i;
+ static int finalize_count = 0;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -584,6 +587,18 @@ static HYD_status fn_finalize(int fd, char *args[])
HYDU_ERR_POP(status, "unable to deregister fd\n");
close(fd);
+ finalize_count++;
+
+ if (finalize_count == HYD_pmcd_pmip.local.proxy_process_count) {
+ /* All processes have finalized */
+ for (i = 0; i < cache_get.keyval_len; i++) {
+ HYDU_FREE(cache_get.key[i]);
+ HYDU_FREE(cache_get.val[i]);
+ }
+ HYDU_FREE(cache_get.key);
+ HYDU_FREE(cache_get.val);
+ }
+
fn_exit:
HYDU_FUNC_EXIT();
return status;
-----------------------------------------------------------------------
Summary of changes:
src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c | 15 +++++++++++++++
src/pm/hydra/pm/pmiserv/pmiserv_utils.c | 2 +-
.../bootstrap/external/slurm_query_node_list.c | 15 +++------------
3 files changed, 19 insertions(+), 13 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0