Skip to content

Commit

Permalink
Merge pull request #8477 from rhc54/cmr41/pmx
Browse files Browse the repository at this point in the history
v4.1.x: Update PMIx to v3.2.3
  • Loading branch information
rajachan authored Feb 12, 2021
2 parents 34075d3 + 0e36e48 commit ae74eaa
Show file tree
Hide file tree
Showing 8 changed files with 88 additions and 45 deletions.
15 changes: 11 additions & 4 deletions opal/mca/pmix/pmix3x/pmix/NEWS
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Copyright (c) 2015-2020 Intel, Inc. All rights reserved.
Copyright (c) 2017-2020 IBM Corporation. All rights reserved.
Copyright (c) 2021 Nanook Consulting. All rights reserved.
$COPYRIGHT$

Additional copyrights may follow
Expand All @@ -20,11 +21,16 @@ other, a single NEWS-worthy item might apply to different series. For
example, a bug might be fixed in the master, and then moved to
multiple release branches.

Master (not on release branches yet)
------------------------------------

3.2.3 -- 12 Feb 2021
----------------------
- PR #1967: Fix thread conflict in event notification
- PR #2001: Finalize: set hostname in global to NULL to avoid segfault
in apps that call init/finalize multiple times
- PR #2045: Have developer builds use -O3 by default


3.2.2 -- TBD
3.2.2 -- 7 Dec 2020
----------------------
- PR #1930: Remove man page setup as there are no manpages in v3.2
- PR #1933: Remove stale config command
Expand Down Expand Up @@ -66,12 +72,13 @@ Master (not on release branches yet)
- PR #1885: Fix immediate flag behavior at the server


3.1.6 -- 20 Aug 2020
3.1.6 -- 04 Jan 2021
----------------------
- PR #1669: Silence unnecessary error log message
- PR #1776: Fixed crash of dstore locks destructor
- PR #1825: Add option to bypass local-only fence optimization
- PR #1830: Increase timeout in test case
- PR #1990: Fix server/get for gds=hash


3.1.5 -- 14 Feb 2020
Expand Down
8 changes: 4 additions & 4 deletions opal/mca/pmix/pmix3x/pmix/VERSION
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

major=3
minor=2
release=2
release=3

# greek is used for alpha or beta release tags. If it is non-empty,
# it will be appended to the version number. It does not have to be
Expand All @@ -31,7 +31,7 @@ greek=
# command, or with the date (if "git describe" fails) in the form of
# "date<date>".

repo_rev=git1703e6fb
repo_rev=gitad8d1f3

# If tarball_version is not empty, it is used as the version string in
# the tarball filename, regardless of all other versions listed in
Expand All @@ -45,7 +45,7 @@ tarball_version=

# The date when this release was created

date="Dec 01, 2020"
date="Feb 11, 2021"

# The shared library version of each of PMIx's public libraries.
# These versions are maintained in accordance with the "Library
Expand Down Expand Up @@ -76,7 +76,7 @@ date="Dec 01, 2020"
# Version numbers are described in the Libtool current:revision:age
# format.

libpmix_so_version=4:32:2
libpmix_so_version=4:33:2
libpmi_so_version=1:1:0
libpmi2_so_version=1:0:0

Expand Down
9 changes: 3 additions & 6 deletions opal/mca/pmix/pmix3x/pmix/config/pmix.m4
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ dnl and Technology (RIST). All rights reserved.
dnl Copyright (c) 2016 Mellanox Technologies, Inc.
dnl All rights reserved.
dnl
dnl Copyright (c) 2021 Nanook Consulting. All rights reserved.
dnl $COPYRIGHT$
dnl
dnl Additional copyrights may follow
Expand Down Expand Up @@ -1018,15 +1019,11 @@ else
AC_MSG_RESULT([no])
WANT_DEBUG=0
fi
#################### Early development override ####################
if test "$WANT_DEBUG" = "0" && test -z "$enable_debug" && test "$PMIX_DEVEL" = "1"; then
WANT_DEBUG=1
echo "--> developer override: enable debugging code by default"
fi
#################### Early development override ####################

if test "$WANT_DEBUG" = "0"; then
CFLAGS="-DNDEBUG $CFLAGS"
fi

AC_DEFINE_UNQUOTED(PMIX_ENABLE_DEBUG, $WANT_DEBUG,
[Whether we want developer-level debugging code or not])

Expand Down
5 changes: 3 additions & 2 deletions opal/mca/pmix/pmix3x/pmix/contrib/pmix.spec
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@
# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2013 Mellanox Technologies, Inc.
# All rights reserved.
# Copyright (c) 2015-2020 Intel, Inc. All rights reserved.
# Copyright (c) 2015-2018 Intel, Inc. All rights reserved.
# Copyright (c) 2015 Research Organization for Information Science
# and Technology (RIST). All rights reserved.
# Copyright (c) 2021 Nanook Consulting. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
Expand Down Expand Up @@ -192,7 +193,7 @@

Summary: An extended/exascale implementation of PMI
Name: %{?_name:%{_name}}%{!?_name:pmix}
Version: 3.2.2
Version: 3.2.3
Release: 1%{?dist}
License: BSD
Group: Development/Libraries
Expand Down
5 changes: 5 additions & 0 deletions opal/mca/pmix/pmix3x/pmix/src/event/pmix_event.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
* All rights reserved.
* Copyright (c) 2015-2020 Intel, Inc. All rights reserved.
* Copyright (c) 2020 IBM Corporation. All rights reserved.
* Copyright (c) 2021 Nanook Consulting. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
Expand Down Expand Up @@ -140,7 +141,11 @@ typedef struct pmix_event_chain_t {
size_t nallocated;
pmix_info_t *results;
size_t nresults;
pmix_info_t *interim;
size_t ninterim;
pmix_event_hdlr_t *evhdlr;
pmix_op_cbfunc_t opcbfunc;
void *cbdata;
pmix_op_cbfunc_t final_cbfunc;
void *final_cbdata;
} pmix_event_chain_t;
Expand Down
80 changes: 56 additions & 24 deletions opal/mca/pmix/pmix3x/pmix/src/event/pmix_event_notification.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2017 IBM Corporation. All rights reserved.
*
* Copyright (c) 2021 Nanook Consulting. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
Expand Down Expand Up @@ -32,6 +33,10 @@ static pmix_status_t notify_server_of_event(pmix_status_t status,
pmix_data_range_t range,
const pmix_info_t info[], size_t ninfo,
pmix_op_cbfunc_t cbfunc, void *cbdata);
static void progress_local_event_hdlr(pmix_status_t status,
pmix_info_t *results, size_t nresults,
pmix_op_cbfunc_t cbfunc, void *thiscbdata,
void *notification_cbdata);

/* if we are a client, we call this function to notify the server of
* an event. If we are a server, our host RM will call this function
Expand Down Expand Up @@ -313,19 +318,13 @@ static pmix_status_t notify_server_of_event(pmix_status_t status,
}


static void progress_local_event_hdlr(pmix_status_t status,
pmix_info_t *results, size_t nresults,
pmix_op_cbfunc_t cbfunc, void *thiscbdata,
void *notification_cbdata)
static void cycle_events(int sd, short args, void *cbdata)
{
/* this may be in the host's thread, so we need to threadshift it
* before accessing our internal data */

pmix_event_chain_t *chain = (pmix_event_chain_t*)notification_cbdata;
pmix_event_chain_t *chain = (pmix_event_chain_t*)cbdata;
size_t n, nsave, cnt;
pmix_info_t *newinfo;
pmix_list_item_t *item;
pmix_event_hdlr_t *nxt;
pmix_info_t *newinfo;

pmix_output_verbose(2, pmix_client_globals.event_output,
"%s progressing local event",
Expand All @@ -345,7 +344,7 @@ static void progress_local_event_hdlr(pmix_status_t status,
* the array to make space */

/* add in any new results plus space for the returned status */
nsave += nresults + 1;
nsave += chain->ninterim + 1;
/* create the new space */
PMIX_INFO_CREATE(newinfo, nsave);
/* transfer over the prior data */
Expand All @@ -364,11 +363,11 @@ static void progress_local_event_hdlr(pmix_status_t status,
pmix_strncpy(newinfo[cnt].key, "UNKNOWN", PMIX_MAX_KEYLEN);
}
newinfo[cnt].value.type = PMIX_STATUS;
newinfo[cnt].value.data.status = status;
newinfo[cnt].value.data.status = chain->status;
++cnt;
/* transfer across the new results */
for (n=0; n < nresults; n++) {
PMIX_INFO_XFER(&newinfo[cnt], &results[n]);
for (n=0; n < chain->ninterim; n++) {
PMIX_INFO_XFER(&newinfo[cnt], &chain->interim[n]);
++cnt;
}
/* release the prior results */
Expand All @@ -382,14 +381,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
chain->ninfo = chain->nallocated - 2;
PMIX_INFO_DESTRUCT(&chain->info[chain->nallocated-2]);
PMIX_INFO_DESTRUCT(&chain->info[chain->nallocated-1]);

// call their interim cbfunc
if (NULL != chain->opcbfunc) {
chain->opcbfunc(PMIX_SUCCESS, chain->cbdata);
}

/* if the caller indicates that the chain is completed,
* or we completed the "last" event */
if (PMIX_EVENT_ACTION_COMPLETE == status || chain->endchain) {
goto complete;
if (PMIX_EVENT_ACTION_COMPLETE == chain->status || chain->endchain) {
if (PMIX_EVENT_ACTION_COMPLETE == chain->status) {
chain->status = PMIX_SUCCESS;
}
/* we still have to call their final callback */
if (NULL != chain->final_cbfunc) {
chain->final_cbfunc(chain->status, chain->final_cbdata);
}
/* maintain acctng */
PMIX_RELEASE(chain);
return;
}
item = NULL;

item = NULL;
/* see if we need to continue, starting with the single code events */
if (1 == chain->evhdlr->ncodes) {
/* the last handler was for a single code - see if there are
Expand Down Expand Up @@ -591,18 +603,31 @@ static void progress_local_event_hdlr(pmix_status_t status,
}
}

complete:
/* we still have to call their final callback */
/* if we get here, there was nothing more to do, but
* we still have to call their final callback */
if (NULL != chain->final_cbfunc) {
chain->final_cbfunc(PMIX_SUCCESS, chain->final_cbdata);
chain->final_cbfunc(chain->status, chain->final_cbdata);
return;
}
/* maintain acctng */
PMIX_RELEASE(chain);
/* let the caller know that we are done with their callback */
if (NULL != cbfunc) {
cbfunc(PMIX_SUCCESS, thiscbdata);
}
}

static void progress_local_event_hdlr(pmix_status_t status,
pmix_info_t *results, size_t nresults,
pmix_op_cbfunc_t cbfunc, void *thiscbdata,
void *notification_cbdata)
{
/* this may be in the host's thread, so we need to threadshift it
* before accessing our internal data */

pmix_event_chain_t *chain = (pmix_event_chain_t*)notification_cbdata;

chain->interim = results;
chain->ninterim = nresults;
chain->opcbfunc = cbfunc;
chain->cbdata = thiscbdata;
PMIX_THREADSHIFT(chain, cycle_events);
}

/* given notification of an event, cycle thru our list of
Expand Down Expand Up @@ -1277,6 +1302,9 @@ void pmix_event_timeout_cb(int fd, short flags, void *arg)
/* remove it from the list */
pmix_list_remove_item(&pmix_globals.cached_events, &ch->super);

/* protect the chain */
PMIX_RETAIN(ch);

/* process this event thru the regular channels */
if (PMIX_PEER_IS_SERVER(pmix_globals.mypeer) &&
!PMIX_PEER_IS_LAUNCHER(pmix_globals.mypeer)) {
Expand Down Expand Up @@ -1440,7 +1468,11 @@ static void chcon(pmix_event_chain_t *p)
p->nallocated = 0;
p->results = NULL;
p->nresults = 0;
p->interim = NULL;
p->ninterim = 0;
p->evhdlr = NULL;
p->opcbfunc = NULL;
p->cbdata = NULL;
p->final_cbfunc = NULL;
p->final_cbdata = NULL;
}
Expand Down
8 changes: 3 additions & 5 deletions opal/mca/pmix/pmix3x/pmix/src/event/pmix_event_registration.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
* Copyright (c) 2014-2020 Intel, Inc. All rights reserved.
* Copyright (c) 2017-2018 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2021 Nanook Consulting. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
Expand Down Expand Up @@ -413,7 +414,7 @@ static void check_cached_events(pmix_rshift_caddy_t *cd)
/* we always leave space for event hdlr name and a callback object */
chain->nallocated = ncd->ninfo + 2;
PMIX_INFO_CREATE(chain->info, chain->nallocated);
if (0 < cd->ninfo) {
if (0 < ncd->ninfo) {
chain->ninfo = ncd->ninfo;
/* need to copy the info */
for (n=0; n < ncd->ninfo; n++) {
Expand Down Expand Up @@ -871,7 +872,6 @@ PMIX_EXPORT void PMIx_Register_event_handler(pmix_status_t codes[], size_t ncode
void *cbdata)
{
pmix_rshift_caddy_t *cd;
size_t n;

PMIX_ACQUIRE_THREAD(&pmix_global_lock);

Expand Down Expand Up @@ -900,9 +900,7 @@ PMIX_EXPORT void PMIx_Register_event_handler(pmix_status_t codes[], size_t ncode
}
return;
}
for (n=0; n < ncodes; n++) {
cd->codes[n] = codes[n];
}
memcpy(cd->codes, codes, ncodes * sizeof(pmix_status_t));
}
cd->ncodes = ncodes;
cd->info = info;
Expand Down
3 changes: 3 additions & 0 deletions opal/mca/pmix/pmix3x/pmix/src/runtime/pmix_finalize.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
* Copyright (c) 2013-2020 Intel, Inc. All rights reserved.
* Copyright (c) 2016-2019 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2021 Triad National Security, LLC. All rights reserved.
* Copyright (c) 2021 Nanook Consulting. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
Expand Down Expand Up @@ -134,6 +136,7 @@ void pmix_rte_finalize(void)
PMIX_LIST_DESTRUCT(&pmix_globals.stdin_targets);
if (NULL != pmix_globals.hostname) {
free(pmix_globals.hostname);
pmix_globals.hostname = NULL;
}
PMIX_LIST_DESTRUCT(&pmix_globals.nspaces);

Expand Down

0 comments on commit ae74eaa

Please sign in to comment.