diff --git a/contrib/scaling/scaling.pl b/contrib/scaling/scaling.pl index 27f03ef623..4d2a8b4f52 100755 --- a/contrib/scaling/scaling.pl +++ b/contrib/scaling/scaling.pl @@ -17,17 +17,17 @@ my $usempirun = 0; my $useaprun = 0; my $useaprun = 0; my $myapp; -my $runall = 0; +my $runall = 1; my $rawoutput = 0; my $myresults = "myresults"; my $ppn = 1; my @csvrow; my @tests = qw(/bin/true ./orte_no_op ./mpi_no_op ./mpi_no_op ./mpi_no_op); -my @options = ("", "", "", "--fwd-mpirun-port -mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1", "--fwd-mpirun-port -mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1 -mca async_mpi_init 1 -mca async_mpi_finalize 1"); -my @starterlist = qw(mpirun orterun srun aprun); +my @options = ("", "", "", "-mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1", "-mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1 -mca async_mpi_init 1 -mca async_mpi_finalize 1"); +my @starterlist = qw(mpirun prun srun aprun); my @starteroptionlist = ("--novm", - "--hnp file:dvm_uri", + "", "--distribution=cyclic -N", "-N"); @@ -49,7 +49,6 @@ GetOptions( "aprun" => \$useaprun, "mpirun" => \$usempirun, "myapp=s" => \$myapp, - "all" => \$runall, "results=s" => \$myresults, "rawout" => \$rawoutput, "ppn=s" => \$ppn, @@ -67,8 +66,7 @@ if ($HELP) { --srun Use srun (if available) to execute the test --arpun Use aprun (if available) to execute the test --myapp=s In addition to the standard tests, run this specific application (including any args) ---all Use all available start commands [default] ---results=file File where results are to stored in comma-separated value format +--results=file File where results are to be stored in comma-separated value format --rawout Provide raw timing output to the file --ppn=n Run n procs/node "; @@ -90,7 +88,13 @@ my $havedvm = 0; my @starters; my @starteroptions; -# if they asked for all, then set all starters to requested +# if they explicitly requested specific starters, then +# only use those +if ($useaprun || $usempirun || $usesrun || $usedvm) { + $runall = 0 +} + +# if they didn't specify something, then set all starters to requested if ($runall) { $useaprun = 1; $usempirun = 1; @@ -112,7 +116,7 @@ foreach $starter (@starterlist) { } } if ($exists) { - if ($usedvm && $starter eq "orterun") { + if ($usedvm && $starter eq "prun") { push @starters, $starter; $opt = $starteroptionlist[$idx] . " --npernode " . $ppn; push @starteroptions, $opt; @@ -261,21 +265,14 @@ sub runcmd() foreach $starter (@starters) { print "STARTER: $starter\n"; # if we are going to use the dvm, then we - if ($starter eq "orterun") { + if ($starter eq "prun") { # need to start it - if (-e "dvm_uri") { - system("rm -f dvm_uri"); - } - $cmd = "orte-dvm --report-uri dvm_uri 2>&1 &"; + $cmd = "orte-dvm 2>&1 &"; if ($myresults) { print FILE "\n\n$cmd\n"; } if (!$SHOWME) { system($cmd); - # wait for the rendezvous file to appear - while (! -e "dvm_uri") { - sleep(1); - } $havedvm = 1; } } @@ -321,12 +318,9 @@ foreach $starter (@starters) { } if ($havedvm) { if (!$SHOWME) { - $cmd = "orterun --hnp file:dvm_uri --terminate"; + $cmd = "prun --terminate"; system($cmd); } - if (-e "dvm_uri") { - system("rm -f dvm_uri"); - } } $index = $index + 1; } diff --git a/opal/mca/btl/openib/connect/btl_openib_connect_udcm.c b/opal/mca/btl/openib/connect/btl_openib_connect_udcm.c index 6fa2472152..196f8ace2a 100644 --- a/opal/mca/btl/openib/connect/btl_openib_connect_udcm.c +++ b/opal/mca/btl/openib/connect/btl_openib_connect_udcm.c @@ -749,8 +749,8 @@ static int udcm_module_init (udcm_module_t *m, mca_btl_openib_module_t *btl) BTL_VERBOSE(("my modex = LID: %d, Port: %d, QPN: %d, GID: %08x %08x", m->modex.mm_lid, m->modex.mm_port_num, m->modex.mm_qp_num, - m->modex.mm_gid.global.interface_id, - m->modex.mm_gid.global.subnet_prefix)); + (unsigned int)m->modex.mm_gid.global.interface_id, + (unsigned int)m->modex.mm_gid.global.subnet_prefix)); m->cpc.data.cbm_modex_message_len = sizeof(m->modex); diff --git a/opal/mca/pmix/pmix2x/pmix/Makefile.am b/opal/mca/pmix/pmix2x/pmix/Makefile.am index 3c74e4af9f..1c70624e91 100644 --- a/opal/mca/pmix/pmix2x/pmix/Makefile.am +++ b/opal/mca/pmix/pmix2x/pmix/Makefile.am @@ -11,7 +11,7 @@ # All rights reserved. # Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved. # Copyright (c) 2012-2013 Los Alamos National Security, Inc. All rights reserved. -# Copyright (c) 2013-2016 Intel, Inc. All rights reserved +# Copyright (c) 2013-2017 Intel, Inc. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -23,7 +23,7 @@ # via AC_CONFIG_MACRO_DIR in configure.ac. ACLOCAL_AMFLAGS = -I ./config -SUBDIRS = config contrib include src +SUBDIRS = config contrib include src etc headers = @@ -61,4 +61,3 @@ nroff: dist-hook: env LS_COLORS= sh "$(top_srcdir)/config/distscript.sh" "$(top_srcdir)" "$(distdir)" "$(PMIX_VERSION)" "$(PMIX_REPO_REV)" - diff --git a/opal/mca/pmix/pmix2x/pmix/VERSION b/opal/mca/pmix/pmix2x/pmix/VERSION index 408462946c..63fa1d1723 100644 --- a/opal/mca/pmix/pmix2x/pmix/VERSION +++ b/opal/mca/pmix/pmix2x/pmix/VERSION @@ -30,7 +30,7 @@ greek= # command, or with the date (if "git describe" fails) in the form of # "date". -repo_rev=git2389189 +repo_rev=gited5be7e # 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="Sep 14, 2017" +date="Sep 22, 2017" # The shared library version of each of PMIx's public libraries. # These versions are maintained in accordance with the "Library diff --git a/opal/mca/pmix/pmix2x/pmix/config/distscript.sh b/opal/mca/pmix/pmix2x/pmix/config/distscript.sh index fbb37a7871..de41d2ba7b 100755 --- a/opal/mca/pmix/pmix2x/pmix/config/distscript.sh +++ b/opal/mca/pmix/pmix2x/pmix/config/distscript.sh @@ -15,6 +15,7 @@ # and Technology (RIST). All rights reserved. # Copyright (c) 2015 Los Alamos National Security, LLC. All rights # reserved. +# Copyright (c) 2017 Intel, Inc. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -54,3 +55,13 @@ touch -r "${srcdir}/VERSION" "${distdir}/VERSION" echo "*** Updated VERSION file with repo rev: $repo_rev" echo "*** (via dist-hook / config/distscript.sh)" + +# +# Update pmix.spec:%{version} with the main version +# +PMIX_SPEC=contrib/pmix.spec +perl -pi -e 's/^Version:.*/Version: '$PMIX_REPO_REV'/' -- "${distdir}/$PMIX_SPEC" +touch -r "${srcdir}/$PMIX_VERSION" "${distdir}/$PMIX_VERSION" + +echo "*** Updated $PMIX_SPEC file with repo rev: $PMIX_REPO_REV" +echo "*** (via dist-hook / config/distscript.sh)" diff --git a/opal/mca/pmix/pmix2x/pmix/config/pmix.m4 b/opal/mca/pmix/pmix2x/pmix/config/pmix.m4 index 39c173d75c..cef9975d90 100644 --- a/opal/mca/pmix/pmix2x/pmix/config/pmix.m4 +++ b/opal/mca/pmix/pmix2x/pmix/config/pmix.m4 @@ -763,6 +763,7 @@ AC_DEFUN([PMIX_SETUP_CORE],[ AC_CONFIG_FILES( pmix_config_prefix[Makefile] pmix_config_prefix[config/Makefile] + pmix_config_prefix[etc/Makefile] pmix_config_prefix[include/Makefile] pmix_config_prefix[src/Makefile] pmix_config_prefix[src/util/keyval/Makefile] @@ -950,7 +951,7 @@ DSTORE_PTHREAD_LOCK="1" AC_MSG_CHECKING([if want dstore pthread-based locking]) AC_ARG_ENABLE([dstore-pthlck], [AC_HELP_STRING([--disable-dstore-pthlck], - [Disable pthread-based lockig in dstor (default: enabled)])]) + [Disable pthread-based locking in dstor (default: enabled)])]) if test "$enable_dstore_pthlck" = "no" ; then AC_MSG_RESULT([no]) DSTORE_PTHREAD_LOCK="0" diff --git a/opal/mca/pmix/pmix2x/pmix/contrib/pmix.spec b/opal/mca/pmix/pmix2x/pmix/contrib/pmix.spec index 51378c2de6..2eda32a62e 100644 --- a/opal/mca/pmix/pmix2x/pmix/contrib/pmix.spec +++ b/opal/mca/pmix/pmix2x/pmix/contrib/pmix.spec @@ -192,11 +192,11 @@ Summary: An extended/exascale implementation of PMI Name: %{?_name:%{_name}}%{!?_name:pmix} -Version: $VERSION +Version: 2.1.0 Release: 1%{?dist} License: BSD Group: Development/Libraries -Source: pmix-%{version}.tar.$EXTENSION +Source0: https://github.com/pmix/pmix/releases/download/v%{version}/pmix-%{version}.tar.bz2 Packager: %{?_packager:%{_packager}}%{!?_packager:%{_vendor}} Vendor: %{?_vendorinfo:%{_vendorinfo}}%{!?_vendorinfo:%{_vendor}} Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}} @@ -469,9 +469,9 @@ test "x$RPM_BUILD_ROOT" != "x" && rm -rf $RPM_BUILD_ROOT %{_prefix} %endif # If the sysconfdir is not under the prefix, then list it explicitly. -#%if !%{sysconfdir_in_prefix} -#%{_sysconfdir}/* -#%endif +%if !%{sysconfdir_in_prefix} +%{_sysconfdir}/* +%endif # If %{install_in_opt}, then we're instaling PMIx to # /opt/pmix. But be sure to also explicitly mention # /opt/pmix so that it can be removed by RPM when everything under @@ -497,6 +497,9 @@ test "x$RPM_BUILD_ROOT" != "x" && rm -rf $RPM_BUILD_ROOT # ############################################################################# %changelog +* Thu Sep 21 2017 Ralph Castain +- Add PMIx etc directory + * Tue Sep 12 2017 Ralph Castain - Port to pmix diff --git a/opal/mca/pmix/pmix2x/pmix/etc/Makefile.am b/opal/mca/pmix/pmix2x/pmix/etc/Makefile.am new file mode 100644 index 0000000000..8f6fd523e7 --- /dev/null +++ b/opal/mca/pmix/pmix2x/pmix/etc/Makefile.am @@ -0,0 +1,70 @@ +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2008 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2017 Intel, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +pmix_config_files = pmix-mca-params.conf +pmix_file_from_platform = no + +EXTRA_DIST = $(pmix_config_files) + +# Steal a little trickery from a generated Makefile to only install +# files if they do not already exist at the target. Be sure to read +# thread starting here +# (http://www.open-mpi.org/community/lists/devel/2008/06/4080.php) for +# details why the mkdir is in install-data-local. + +install-data-local: + $(MKDIR_P) $(DESTDIR)$(sysconfdir) + @ p="$(pmix_config_files)"; \ + if test "$(pmix_file_from_platform)" = "yes"; then \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(sysconfdir)/pmix-mca-params.conf"; \ + $(INSTALL_DATA) $$d$$p $(DESTDIR)$(sysconfdir)/pmix-mca-params.conf; \ + else \ + for file in $$p; do \ + if test -f $(DESTDIR)$(sysconfdir)/pmix-mca-params.conf; then \ + echo "******************************* WARNING ************************************"; \ + echo "*** Not installing new $$file over existing file in:"; \ + echo "*** $(DESTDIR)$(sysconfdir)/$$file"; \ + echo "******************************* WARNING ************************************"; \ + else \ + if test -f "$$file"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$file | sed -e 's|^.*/||'`"; \ + echo " $(INSTALL_DATA) $$d$$file $(DESTDIR)$(sysconfdir)/$$f"; \ + $(INSTALL_DATA) $$d$$file $(DESTDIR)$(sysconfdir)/$$f; \ + fi; \ + done \ + fi; + + +# Only remove if exactly the same as what in our tree +# NOTE TO READER: Bourne shell if ... fi evaluates the body if +# the return of the evaluted command is 0 (as opposed to non-zero +# as used by everyone else) +uninstall-local: + @ p="$(pmix_config_files)"; \ + for file in $$p; do \ + if test -f "$(DESTDIR)$(sysconfdir)/$$file"; then \ + if test -f "$$file"; then d=; else d="$(srcdir)/"; fi; \ + if diff "$(DESTDIR)$(sysconfdir)/$$file" "$$d$$file" > /dev/null 2>&1 ; then \ + echo "rm -f $(DESTDIR)$(sysconfdir)/$$file" ; \ + rm -f "$(DESTDIR)$(sysconfdir)/$$file" ; \ + fi ; \ + fi ; \ + done diff --git a/opal/mca/pmix/pmix2x/pmix/etc/pmix-mca-params.conf b/opal/mca/pmix/pmix2x/pmix/etc/pmix-mca-params.conf new file mode 100644 index 0000000000..9d4f80572c --- /dev/null +++ b/opal/mca/pmix/pmix2x/pmix/etc/pmix-mca-params.conf @@ -0,0 +1,59 @@ +# +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2017 Cisco Systems, Inc. All rights reserved +# Copyright (c) 2017 Intel, Inc. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# This is the default system-wide MCA parameters defaults file. +# Specifically, the MCA parameter "mca_param_files" defaults to a +# value of +# "$HOME/.pmix/mca-params.conf:$sysconf/pmix-mca-params.conf" +# (this file is the latter of the two). So if the default value of +# mca_param_files is not changed, this file is used to set system-wide +# MCA parameters. This file can therefore be used to set system-wide +# default MCA parameters for all users. Of course, users can override +# these values if they want, but this file is an excellent location +# for setting system-specific MCA parameters for those users who don't +# know / care enough to investigate the proper values for them. + +# Note that this file is only applicable where it is visible (in a +# filesystem sense). Specifically, processes each read this file +# during their call to PMIx_Init to determine what default values for MCA +# parameters should be used. Launchers generally do not bundle up the values in +# this file from the node where they are run and send them to all nodes; +# the default value decisions are effectively distributed. Hence, +# these values are typically only applicable on nodes that "see" this file. If +# $sysconf is a directory on a local disk, it is likely that changes +# to this file will need to be propagated to other nodes. If $sysconf +# is a directory that is shared via a networked filesystem, changes to +# this file will be visible to all nodes that share this $sysconf. + +# The format is straightforward: one per line, mca_param_name = +# rvalue. Quoting is ignored (so if you use quotes or escape +# characters, they'll be included as part of the value). For example: + +# Set debugging verbosity on the PTL framework +# ptl_base_verbose = 10 + +# Note that the value "~/" will be expanded to the current user's home +# directory. For example: + +# Change component loading path +# component_path = /usr/local/lib/pmix:~/my_pmix_components + +# See "pinfo --param all all --level 9" for a full listing of PMIx +# MCA parameters available and their default values. diff --git a/opal/mca/pmix/pmix2x/pmix/examples/client.c b/opal/mca/pmix/pmix2x/pmix/examples/client.c index 3f304fd50d..f411e8b593 100644 --- a/opal/mca/pmix/pmix2x/pmix/examples/client.c +++ b/opal/mca/pmix/pmix2x/pmix/examples/client.c @@ -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$ * @@ -167,9 +167,16 @@ int main(int argc, char **argv) fprintf(stderr, "Client ns %s rank %d: PMIx_Get universe size failed: %d\n", myproc.nspace, myproc.rank, rc); goto done; } + fprintf(stderr, "Client %s:%d universe size %d\n", myproc.nspace, myproc.rank, val->data.uint32); + /* get the number of procs in our job - univ size is the total number of allocated + * slots, not the number of procs in the job */ + if (PMIX_SUCCESS != (rc = PMIx_Get(&proc, PMIX_JOB_SIZE, NULL, 0, &val))) { + fprintf(stderr, "Client ns %s rank %d: PMIx_Get job size failed: %d\n", myproc.nspace, myproc.rank, rc); + goto done; + } nprocs = val->data.uint32; PMIX_VALUE_RELEASE(val); - fprintf(stderr, "Client %s:%d universe size %d\n", myproc.nspace, myproc.rank, nprocs); + fprintf(stderr, "Client %s:%d num procs %d\n", myproc.nspace, myproc.rank, nprocs); /* put a few values */ if (0 > asprintf(&tmp, "%s-%d-internal", myproc.nspace, myproc.rank)) { diff --git a/opal/mca/pmix/pmix2x/pmix/examples/pub.c b/opal/mca/pmix/pmix2x/pmix/examples/pub.c index b467cb17b7..d7e02c90a1 100644 --- a/opal/mca/pmix/pmix2x/pmix/examples/pub.c +++ b/opal/mca/pmix/pmix2x/pmix/examples/pub.c @@ -41,7 +41,6 @@ int main(int argc, char **argv) uint32_t nprocs; pmix_info_t *info; pmix_pdata_t *pdata; - pmix_data_range_t range = PMIX_RANGE_LOCAL; /* init us */ if (PMIX_SUCCESS != (rc = PMIx_Init(&myproc, NULL, 0))) { @@ -70,15 +69,14 @@ int main(int argc, char **argv) /* publish something */ if (0 == myproc.rank) { - PMIX_INFO_CREATE(info, 3); + PMIX_INFO_CREATE(info, 2); (void)strncpy(info[0].key, "FOOBAR", PMIX_MAX_KEYLEN); info[0].value.type = PMIX_UINT8; info[0].value.data.uint8 = 1; (void)strncpy(info[1].key, "PANDA", PMIX_MAX_KEYLEN); info[1].value.type = PMIX_SIZE; info[1].value.data.size = 123456; - PMIX_INFO_LOAD(&info[2], PMIX_RANGE, &range, PMIX_DATA_RANGE); - if (PMIX_SUCCESS != (rc = PMIx_Publish(info, 3))) { + if (PMIX_SUCCESS != (rc = PMIx_Publish(info, 2))) { fprintf(stderr, "Client ns %s rank %d: PMIx_Publish failed: %d\n", myproc.nspace, myproc.rank, rc); goto done; } diff --git a/opal/mca/pmix/pmix2x/pmix/src/mca/gds/hash/gds_hash.c b/opal/mca/pmix/pmix2x/pmix/src/mca/gds/hash/gds_hash.c index 1421e39988..01c01d7925 100644 --- a/opal/mca/pmix/pmix2x/pmix/src/mca/gds/hash/gds_hash.c +++ b/opal/mca/pmix/pmix2x/pmix/src/mca/gds/hash/gds_hash.c @@ -357,7 +357,7 @@ pmix_status_t hash_cache_job_info(struct pmix_nspace_t *ns, char **nodes=NULL, **procs=NULL; uint8_t *tmp; pmix_rank_t rank; - pmix_status_t rc; + pmix_status_t rc=PMIX_SUCCESS; size_t n, j, size, len; pmix_output_verbose(2, pmix_gds_base_framework.framework_output, @@ -584,7 +584,7 @@ static pmix_status_t register_info(pmix_peer_t *peer, return rc; } - if (NULL == val->data.darray || + if (NULL == val || NULL == val->data.darray || PMIX_INFO != val->data.darray->type || 0 == val->data.darray->size) { return PMIX_ERR_NOT_FOUND; @@ -610,7 +610,9 @@ static pmix_status_t register_info(pmix_peer_t *peer, } return rc; } - + if (NULL == val) { + return PMIX_ERR_NOT_FOUND; + } PMIX_CONSTRUCT(&buf, pmix_buffer_t); rank = rinfo->pname.rank; PMIX_BFROPS_PACK(rc, peer, &buf, &rank, 1, PMIX_PROC_RANK); diff --git a/opal/mca/pmix/pmix2x/pmix/src/mca/ptl/tcp/ptl_tcp_component.c b/opal/mca/pmix/pmix2x/pmix/src/mca/ptl/tcp/ptl_tcp_component.c index 8b1ec53121..0ba60e1c15 100644 --- a/opal/mca/pmix/pmix2x/pmix/src/mca/ptl/tcp/ptl_tcp_component.c +++ b/opal/mca/pmix/pmix2x/pmix/src/mca/ptl/tcp/ptl_tcp_component.c @@ -597,7 +597,7 @@ static pmix_status_t setup_listener(pmix_info_t info[], size_t ninfo, /* output my nspace and rank plus the URI */ fprintf(fp, "%s\n", lt->uri); /* add a flag that indicates we accept v2.1 protocols */ - fprintf(fp, "%s\n", PMIX_VERSION); + fprintf(fp, "v%s\n", PMIX_VERSION); fclose(fp); /* set the file mode */ if (0 != chmod(mca_ptl_tcp_component.system_filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) { diff --git a/opal/mca/pmix/pmix2x/pmix2x.c b/opal/mca/pmix/pmix2x/pmix2x.c index af2489b812..34bc3d7d0e 100644 --- a/opal/mca/pmix/pmix2x/pmix2x.c +++ b/opal/mca/pmix/pmix2x/pmix2x.c @@ -1185,7 +1185,14 @@ static int notify_event(int status, n=0; OPAL_LIST_FOREACH(kv, info, opal_value_t) { (void)strncpy(op->info[n].key, kv->key, PMIX_MAX_KEYLEN); - pmix2x_value_load(&op->info[n].value, kv); + /* little dicey here as we need to convert a status, if + * provided, and it will be an int coming down to us */ + if (0 == strcmp(kv->key, OPAL_PMIX_JOB_TERM_STATUS)) { + op->info[n].value.type = PMIX_STATUS; + op->info[n].value.data.status = pmix2x_convert_opalrc(kv->data.integer); + } else { + pmix2x_value_load(&op->info[n].value, kv); + } ++n; } }