Roll in latest PMIx updates
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
родитель
6ff2780426
Коммит
26d96061aa
@ -30,7 +30,7 @@ greek=
|
||||
# command, or with the date (if "git describe" fails) in the form of
|
||||
# "date<date>".
|
||||
|
||||
repo_rev=git1ce71dd
|
||||
repo_rev=gitd5e4801
|
||||
|
||||
# If tarball_version is not empty, it is used as the version string in
|
||||
# the tarball filename, regardless of all other versions listed in
|
||||
@ -44,7 +44,7 @@ tarball_version=
|
||||
|
||||
# The date when this release was created
|
||||
|
||||
date="May 28, 2017"
|
||||
date="May 30, 2017"
|
||||
|
||||
# The shared library version of each of PMIx's public libraries.
|
||||
# These versions are maintained in accordance with the "Library
|
||||
|
@ -55,9 +55,9 @@ my $include_list;
|
||||
my $exclude_list;
|
||||
|
||||
# Minimum versions
|
||||
my $pmix_automake_version = "1.15.0";
|
||||
my $pmix_automake_version = "1.13.4";
|
||||
my $pmix_autoconf_version = "2.69";
|
||||
my $pmix_libtool_version = "2.4.6";
|
||||
my $pmix_libtool_version = "2.4.2";
|
||||
|
||||
# Search paths
|
||||
my $pmix_autoconf_search = "autoconf";
|
||||
|
@ -12,11 +12,11 @@ dnl Copyright (c) 2004-2006 The Regents of the University of California.
|
||||
dnl All rights reserved.
|
||||
dnl Copyright (c) 2007-2009 Sun Microsystems, Inc. All rights reserved.
|
||||
dnl Copyright (c) 2008-2015 Cisco Systems, Inc. All rights reserved.
|
||||
dnl Copyright (c) 2012 Los Alamos National Security, LLC. All rights
|
||||
dnl Copyright (c) 2012-2017 Los Alamos National Security, LLC. All rights
|
||||
dnl reserved.
|
||||
dnl Copyright (c) 2015 Research Organization for Information Science
|
||||
dnl and Technology (RIST). All rights reserved.
|
||||
dnl Copyright (c) 2015-2016 Intel, Inc. All rights reserved.
|
||||
dnl Copyright (c) 2015-2017 Intel, Inc. All rights reserved.
|
||||
dnl $COPYRIGHT$
|
||||
dnl
|
||||
dnl Additional copyrights may follow
|
||||
@ -38,7 +38,6 @@ AC_DEFUN([PMIX_SETUP_CC],[
|
||||
AC_REQUIRE([AM_PROG_CC_C_O])
|
||||
|
||||
# We require a C99 compiant compiler
|
||||
AC_PROG_CC_C99
|
||||
# The result of AC_PROG_CC_C99 is stored in ac_cv_prog_cc_c99
|
||||
if test "x$ac_cv_prog_cc_c99" = xno ; then
|
||||
AC_MSG_WARN([PMIx requires a C99 compiler])
|
||||
@ -322,7 +321,7 @@ AC_DEFUN([_PMIX_PROG_CC],[
|
||||
#
|
||||
PMIX_VAR_SCOPE_PUSH([pmix_cflags_save dummy pmix_cc_arvgv0])
|
||||
pmix_cflags_save="$CFLAGS"
|
||||
AC_PROG_CC
|
||||
AC_PROG_CC_C99
|
||||
BASECC="`basename $CC`"
|
||||
CFLAGS="$pmix_cflags_save"
|
||||
AC_DEFINE_UNQUOTED(PMIX_CC, "$CC", [PMIx underlying C compiler])
|
||||
|
@ -12,7 +12,7 @@
|
||||
# All rights reserved.
|
||||
# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2006-2008 Sun Microsystems, Inc. All rights reserved.
|
||||
# Copyright (c) 2006-2011 Los Alamos National Security, LLC. All rights
|
||||
# Copyright (c) 2006-2017 Los Alamos National Security, LLC. All rights
|
||||
# reserved.
|
||||
# Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||
# Copyright (c) 2011-2013 NVIDIA Corporation. All rights reserved.
|
||||
@ -63,9 +63,9 @@ pmix_show_title "Configuring PMIx"
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
# Init automake
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects no-define 1.12.2 -Wall -Werror])
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects no-define 1.13.4 -Wall -Werror])
|
||||
|
||||
# SILENT_RULES is new in AM 1.11, but we require 1.11 or higher via
|
||||
# SILENT_RULES is new in AM 1.11, but we require 1.13.4 or higher via
|
||||
# autogen. Limited testing shows that calling SILENT_RULES directly
|
||||
# works in more cases than adding "silent-rules" to INIT_AUTOMAKE
|
||||
# (even though they're supposed to be identical). Shrug.
|
||||
@ -179,10 +179,6 @@ PMIX_DO_AM_CONDITIONALS
|
||||
# Setup C compiler
|
||||
####################################################################
|
||||
|
||||
CFLAGS_save="$CFLAGS"
|
||||
AC_PROG_CC
|
||||
CFLAGS="$CFLAGS_save"
|
||||
|
||||
AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
|
||||
AS_IF([test -z "$CC_FOR_BUILD"],[
|
||||
AC_SUBST([CC_FOR_BUILD], [$CC])
|
||||
|
@ -157,10 +157,10 @@ static pmix_status_t notify_server_of_event(pmix_status_t status,
|
||||
PMIX_INFO_XFER(&chain->info[n], &info[n]);
|
||||
}
|
||||
}
|
||||
/* put the evhandler name tag in the next-to-last element - we
|
||||
/* add the evhandler name tag - we
|
||||
* will fill it in as each handler is called */
|
||||
PMIX_INFO_LOAD(&chain->info[chain->ninfo-2], PMIX_EVENT_HDLR_NAME, NULL, PMIX_STRING);
|
||||
/* now put the callback object tag in the last element */
|
||||
/* now add the callback object tag */
|
||||
PMIX_INFO_LOAD(&chain->info[chain->ninfo-1], PMIX_EVENT_RETURN_OBJECT, NULL, PMIX_POINTER);
|
||||
|
||||
/* we need to cache this event so we can pass it into
|
||||
@ -324,15 +324,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
|
||||
if (nxt->codes[0] == chain->status &&
|
||||
check_range(&nxt->rng, &chain->source)) {
|
||||
chain->evhdlr = nxt;
|
||||
/* add the handler name in case they want to reference it */
|
||||
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
|
||||
free(chain->info[chain->ninfo-2].value.data.string);
|
||||
/* update the handler name in case they want to reference it */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->info[n].value.data.string) {
|
||||
free(chain->info[n].value.data.string);
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
|
||||
/* update the evhdlr cbobject */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* add any cbobject - the info struct for it is at the end */
|
||||
chain->info[chain->ninfo-1].value.data.ptr = nxt->cbobject;
|
||||
nxt->evhdlr(nxt->index,
|
||||
chain->status, &chain->source,
|
||||
chain->info, chain->ninfo,
|
||||
@ -364,15 +376,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
|
||||
* the source fits within it */
|
||||
if (nxt->codes[n] == chain->status) {
|
||||
chain->evhdlr = nxt;
|
||||
/* add the handler name in case they want to reference it */
|
||||
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
|
||||
free(chain->info[chain->ninfo-2].value.data.string);
|
||||
/* update the handler name in case they want to reference it */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->info[n].value.data.string) {
|
||||
free(chain->info[n].value.data.string);
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
|
||||
/* update the evhdlr cbobject */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* add any cbobject - the info struct for it is at the end */
|
||||
chain->info[chain->ninfo-1].value.data.ptr = nxt->cbobject;
|
||||
nxt->evhdlr(nxt->index,
|
||||
chain->status, &chain->source,
|
||||
chain->info, chain->ninfo,
|
||||
@ -398,15 +422,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
|
||||
* the source fits within it */
|
||||
if (check_range(&nxt->rng, &chain->source)) {
|
||||
chain->evhdlr = nxt;
|
||||
/* add the handler name in case they want to reference it */
|
||||
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
|
||||
free(chain->info[chain->ninfo-2].value.data.string);
|
||||
/* update the handler name in case they want to reference it */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->info[n].value.data.string) {
|
||||
free(chain->info[n].value.data.string);
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
|
||||
/* update the evhdlr cbobject */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* add any cbobject - the info struct for it is at the end */
|
||||
chain->info[chain->ninfo-1].value.data.ptr = nxt->cbobject;
|
||||
nxt->evhdlr(nxt->index,
|
||||
chain->status, &chain->source,
|
||||
chain->info, chain->ninfo,
|
||||
@ -425,15 +461,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
|
||||
if (1 == pmix_globals.events.last->ncodes &&
|
||||
pmix_globals.events.last->codes[0] == chain->status) {
|
||||
chain->evhdlr = pmix_globals.events.last;
|
||||
/* add the handler name in case they want to reference it */
|
||||
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
|
||||
free(chain->info[chain->ninfo-2].value.data.string);
|
||||
/* update the handler name in case they want to reference it */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->info[n].value.data.string) {
|
||||
free(chain->info[n].value.data.string);
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
|
||||
/* update the evhdlr cbobject */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* add any cbobject - the info struct for it is at the end */
|
||||
chain->info[chain->ninfo-1].value.data.ptr = pmix_globals.events.last->cbobject;
|
||||
chain->evhdlr->evhdlr(chain->evhdlr->index,
|
||||
chain->status, &chain->source,
|
||||
chain->info, chain->ninfo,
|
||||
@ -445,15 +493,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
|
||||
for (n=0; n < pmix_globals.events.last->ncodes; n++) {
|
||||
if (pmix_globals.events.last->codes[n] == chain->status) {
|
||||
chain->evhdlr = pmix_globals.events.last;
|
||||
/* add the handler name in case they want to reference it */
|
||||
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
|
||||
free(chain->info[chain->ninfo-2].value.data.string);
|
||||
/* update the handler name in case they want to reference it */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->info[n].value.data.string) {
|
||||
free(chain->info[n].value.data.string);
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
|
||||
/* update the evhdlr cbobject */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* add any cbobject - the info struct for it is at the end */
|
||||
chain->info[chain->ninfo-1].value.data.ptr = pmix_globals.events.last->cbobject;
|
||||
chain->evhdlr->evhdlr(chain->evhdlr->index,
|
||||
chain->status, &chain->source,
|
||||
chain->info, chain->ninfo,
|
||||
@ -465,15 +525,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
|
||||
} else {
|
||||
/* gets run for all codes */
|
||||
chain->evhdlr = pmix_globals.events.last;
|
||||
/* add the handler name in case they want to reference it */
|
||||
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
|
||||
free(chain->info[chain->ninfo-2].value.data.string);
|
||||
/* update the handler name in case they want to reference it */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->info[n].value.data.string) {
|
||||
free(chain->info[n].value.data.string);
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
|
||||
/* update the evhdlr cbobject */
|
||||
for (n=0; n < chain->ninfo; n++) {
|
||||
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* add any cbobject - the info struct for it is at the end */
|
||||
chain->info[chain->ninfo-1].value.data.ptr = pmix_globals.events.last->cbobject;
|
||||
chain->evhdlr->evhdlr(chain->evhdlr->index,
|
||||
chain->status, &chain->source,
|
||||
chain->info, chain->ninfo,
|
||||
@ -642,15 +714,28 @@ void pmix_invoke_local_event_hdlr(pmix_event_chain_t *chain)
|
||||
|
||||
|
||||
invk:
|
||||
/* update the handler name in case they want to reference it */
|
||||
for (i=0; i < chain->ninfo; i++) {
|
||||
if (0 == strncmp(chain->info[i].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->info[i].value.data.string) {
|
||||
free(chain->info[i].value.data.string);
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[i].value.data.string = strdup(chain->evhdlr->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* update the evhdlr cbobject */
|
||||
for (i=0; i < chain->ninfo; i++) {
|
||||
if (0 == strncmp(chain->info[i].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[i].value.data.ptr = chain->evhdlr->cbobject;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* invoke the handler */
|
||||
/* add the handler name in case they want to reference it */
|
||||
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
|
||||
free(chain->info[chain->ninfo-2].value.data.string);
|
||||
}
|
||||
if (NULL != chain->evhdlr->name) {
|
||||
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
|
||||
}
|
||||
chain->info[chain->ninfo-1].value.data.ptr = chain->evhdlr->cbobject;
|
||||
pmix_output_verbose(2, pmix_globals.debug_output,
|
||||
"[%s:%d] INVOKING EVHDLR %s", __FILE__, __LINE__,
|
||||
(NULL == chain->evhdlr->name) ?
|
||||
|
@ -13,7 +13,7 @@
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
||||
* Copyright (c) 2013-2016 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2013-2017 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2015 Mellanox Technologies, Inc. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
@ -114,13 +114,14 @@ int main(int argc, char **argv)
|
||||
PMIx_Abort(PMIX_ERR_OUT_OF_RESOURCE, "Eat rocks",
|
||||
&proc, 1);
|
||||
pmix_output(0, "Client ns %s rank %d: Abort called", myproc.nspace, myproc.rank);
|
||||
}
|
||||
} else {
|
||||
/* everyone simply waits */
|
||||
while (!completed) {
|
||||
struct timespec ts;
|
||||
ts.tv_sec = 0;
|
||||
ts.tv_nsec = 100000;
|
||||
nanosleep(&ts, NULL);
|
||||
while (!completed) {
|
||||
struct timespec ts;
|
||||
ts.tv_sec = 0;
|
||||
ts.tv_nsec = 100000;
|
||||
nanosleep(&ts, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
|
@ -216,7 +216,7 @@ static void model_callback(size_t evhdlr_registration_id,
|
||||
/* just let us know it was received */
|
||||
fprintf(stderr, "Model event handler called with status %d(%s)\n", status, PMIx_Error_string(status));
|
||||
for (n=0; n < ninfo; n++) {
|
||||
if (PMIX_STRING == info[n].value.type) {
|
||||
if (0 == strncmp(info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
|
||||
fprintf(stderr, "\t%s:\t%s\n", info[n].key, info[n].value.data.string);
|
||||
}
|
||||
}
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user