Skip to content

Commit

Permalink
Update configury to support multiple PMIx versions, rename pmix2x com…
Browse files Browse the repository at this point in the history
…ponent to pmix3x for support of PMIx master

Update support for external v1.1.x and v2.x libraries. Minor corrections to the v3.x component
  • Loading branch information
Ralph Castain committed Aug 26, 2016
1 parent 277c319 commit af67f16
Show file tree
Hide file tree
Showing 322 changed files with 6,684 additions and 1,241 deletions.
10 changes: 5 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -307,11 +307,11 @@ opal/mca/pmix/pmix*/pmix/src/include/private/autogen/config.h.in
opal/mca/pmix/pmix*/pmix/src/include/private/autogen/config.h
opal/mca/hwloc/base/static-components.h.new.extern
opal/mca/hwloc/base/static-components.h.new.struct
opal/mca/pmix/pmix2x/pmix/src/include/frameworks.h
opal/mca/pmix/pmix2x/pmix/src/mca/pinstalldirs/config/pinstall_dirs.h
opal/mca/pmix/pmix2x/pmix/config/autogen_found_items.m4
opal/mca/pmix/pmix2x/pmix/src/include/pmix_config.h
opal/mca/pmix/pmix2x/pmix/src/include/pmix_config.h.in
opal/mca/pmix/pmix3x/pmix/src/include/frameworks.h
opal/mca/pmix/pmix3x/pmix/src/mca/pinstalldirs/config/pinstall_dirs.h
opal/mca/pmix/pmix3x/pmix/config/autogen_found_items.m4
opal/mca/pmix/pmix3x/pmix/src/include/pmix_config.h
opal/mca/pmix/pmix3x/pmix/src/include/pmix_config.h.in

opal/tools/opal-checkpoint/opal-checkpoint
opal/tools/opal-checkpoint/opal-checkpoint.1
Expand Down
62 changes: 56 additions & 6 deletions config/opal_check_pmi.m4
Original file line number Diff line number Diff line change
Expand Up @@ -259,13 +259,63 @@ AC_DEFUN([OPAL_CHECK_PMIX],[
opal_external_pmix_save_LDFLAGS=$LDFLAGS
opal_external_pmix_save_LIBS=$LIBS
LDFLAGS="-L$pmix_ext_install_dir/lib $LDFLAGS"
AC_SEARCH_LIBS([PMIx_Register_event_handler], [pmix],
[opal_external_pmix_version=2],
[opal_external_pmix_version=1])
# if the pmix_version.h file does not exist, then
# this must be from a pre-1.1.5 version
AC_MSG_CHECKING([PMIx version])
AC_MSG_RESULT([$opal_external_pmix_version])
CPPFLAGS="-I$pmix_ext_install_dir/include $CPPFLAGS"
AS_IF([test "x`ls $pmix_ext_install_dir/include/pmix_version.h 2> /dev/null`" = "x"],
[AC_MSG_RESULT([version file not found - assuming v1.1.4])
opal_external_pmix_version_found=1
opal_external_pmix_version=114],
[AC_MSG_RESULT([version file found])
opal_external_pmix_version_found=0])
# if it does exist, then we need to parse it to find
# the actual release series
AS_IF([test "$opal_external_pmix_version_found" = "0"],
[AC_MSG_CHECKING([version 3x])
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
#include <pmix_version.h>
#if (PMIX_VERSION_MAJOR != 3L)
#error "not version 3"
#endif
], [])],
[AC_MSG_RESULT([found])
opal_external_pmix_version=3X
opal_external_pmix_version_found=1],
[AC_MSG_RESULT([not found])])])
AS_IF([test "$opal_external_pmix_version_found" = "0"],
[AC_MSG_CHECKING([version 2x])
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
#include <pmix_version.h>
#if (PMIX_VERSION_MAJOR != 2L)
#error "not version 2"
#endif
], [])],
[AC_MSG_RESULT([found])
opal_external_pmix_version=2X
opal_external_pmix_version_found=1],
[AC_MSG_RESULT([not found])])])
AS_IF([test "$opal_external_pmix_version_found" = "0"],
[AC_MSG_CHECKING([version 1x])
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
#include <pmix_version.h>
#if (PMIX_VERSION_MAJOR != 1L)
#error "not version 1"
#endif
], [])],
[AC_MSG_RESULT([found])
opal_external_pmix_version=1X
opal_external_pmix_version_found=1],
[AC_MSG_RESULT([not found])])])
AS_IF([test "x$opal_external_pmix_version" = "x"],
[AC_MSG_WARN([External PMIx support requested, but version])
AC_MSG_WARN([information of the external lib could not])
AC_MSG_WARN([be detected])
AC_MSG_ERROR([cannot continue])])
CPPFLAGS=$opal_external_pmix_save_CPPFLAGS
LDFLAGS=$opal_external_pmix_save_LDFLAGS
Expand Down
1 change: 1 addition & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ m4_ifdef([project_oshmem],
OPAL_CONFIGURE_OPTIONS
OPAL_CHECK_OS_FLAVORS
OPAL_CHECK_CUDA
OPAL_CHECK_PMIX
m4_ifdef([project_orte], [ORTE_CONFIGURE_OPTIONS])
m4_ifdef([project_ompi], [OMPI_CONFIGURE_OPTIONS])
m4_ifdef([project_oshmem], [OSHMEM_CONFIGURE_OPTIONS])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,25 +22,25 @@ sources = \
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
# (for static builds).

if MCA_BUILD_opal_pmix_ext114_DSO
if MCA_BUILD_opal_pmix_ext11_DSO
component_noinst =
component_install = mca_pmix_ext114.la
component_install = mca_pmix_ext11.la
else
component_noinst = libmca_pmix_ext114.la
component_noinst = libmca_pmix_ext11.la
component_install =
endif

mcacomponentdir = $(opallibdir)
mcacomponent_LTLIBRARIES = $(component_install)
mca_pmix_ext114_la_SOURCES = $(sources)
mca_pmix_ext114_la_CFLAGS =
mca_pmix_ext114_la_CPPFLAGS = $(opal_pmix_ext114_CPPFLAGS)
mca_pmix_ext114_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext114_LDFLAGS)
mca_pmix_ext114_la_LIBADD = $(opal_pmix_ext114_LIBS)
mca_pmix_ext11_la_SOURCES = $(sources)
mca_pmix_ext11_la_CFLAGS =
mca_pmix_ext11_la_CPPFLAGS = $(opal_pmix_ext11_CPPFLAGS)
mca_pmix_ext11_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext11_LDFLAGS)
mca_pmix_ext11_la_LIBADD = $(opal_pmix_ext11_LIBS)

noinst_LTLIBRARIES = $(component_noinst)
libmca_pmix_ext114_la_SOURCES =$(sources)
libmca_pmix_ext114_la_CFLAGS =
libmca_pmix_ext114_la_CPPFLAGS = $(opal_pmix_ext114_CPPFLAGS)
libmca_pmix_ext114_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext114_LDFLAGS)
libmca_pmix_ext114_la_LIBADD = $(opal_pmix_ext114_LIBS)
libmca_pmix_ext11_la_SOURCES =$(sources)
libmca_pmix_ext11_la_CFLAGS =
libmca_pmix_ext11_la_CPPFLAGS = $(opal_pmix_ext11_CPPFLAGS)
libmca_pmix_ext11_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext11_LDFLAGS)
libmca_pmix_ext11_la_LIBADD = $(opal_pmix_ext11_LIBS)
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,10 @@
# $HEADER$
#

# MCA_pmix_ext114_CONFIG([action-if-found], [action-if-not-found])
# MCA_pmix_ext11_CONFIG([action-if-found], [action-if-not-found])
# -----------------------------------------------------------
AC_DEFUN([MCA_opal_pmix_ext114_CONFIG],[
AC_CONFIG_FILES([opal/mca/pmix/ext114/Makefile])

AC_REQUIRE([OPAL_CHECK_PMIX])
AC_DEFUN([MCA_opal_pmix_ext11_CONFIG],[
AC_CONFIG_FILES([opal/mca/pmix/ext11/Makefile])

AS_IF([test "$opal_external_pmix_happy" = "yes"],
[AS_IF([test "$opal_event_external_support" != "yes"],
Expand All @@ -45,27 +43,28 @@ AC_DEFUN([MCA_opal_pmix_ext114_CONFIG],[
AC_MSG_ERROR([PLEASE CORRECT THE CONFIGURE COMMAND LINE AND REBUILD])])

# check for the 1.1.4 version
AC_MSG_CHECKING([if external component is version 1.x])
AS_IF([test "$opal_external_pmix_version" = "1"],
AC_MSG_CHECKING([if external component is version 1.1.4])
AS_IF([test "$opal_external_pmix_version" = "11" ||
test "$opal_external_pmix_version" = "1X"],
[AC_MSG_RESULT([yes])
opal_pmix_external_114_happy=yes],
opal_pmix_external_11_happy=yes],
[AC_MSG_RESULT([no])
opal_pmix_external_114_happy=no])
opal_pmix_external_11_happy=no])

AS_IF([test "$opal_pmix_external_114_happy" = "yes"],
AS_IF([test "$opal_pmix_external_11_happy" = "yes"],
[$1
# need to set the wrapper flags for static builds
pmix_ext114_WRAPPER_EXTRA_LDFLAGS=$opal_external_pmix_LDFLAGS
pmix_ext114_WRAPPER_EXTRA_LIBS=$opal_external_pmix_LIBS],
pmix_ext11_WRAPPER_EXTRA_LDFLAGS=$opal_external_pmix_LDFLAGS
pmix_ext11_WRAPPER_EXTRA_LIBS=$opal_external_pmix_LIBS],
[$2])],
[$2])

opal_pmix_ext114_CPPFLAGS=$opal_external_pmix_CPPFLAGS
opal_pmix_ext114_LDFLAGS=$opal_external_pmix_LDFLAGS
opal_pmix_ext114_LIBS=$opal_external_pmix_LIBS
opal_pmix_ext11_CPPFLAGS=$opal_external_pmix_CPPFLAGS
opal_pmix_ext11_LDFLAGS=$opal_external_pmix_LDFLAGS
opal_pmix_ext11_LIBS=$opal_external_pmix_LIBS

AC_SUBST([opal_pmix_ext114_CPPFLAGS])
AC_SUBST([opal_pmix_ext114_LDFLAGS])
AC_SUBST([opal_pmix_ext114_LIBS])
AC_SUBST([opal_pmix_ext11_CPPFLAGS])
AC_SUBST([opal_pmix_ext11_LDFLAGS])
AC_SUBST([opal_pmix_ext11_LIBS])

])dnl
33 changes: 28 additions & 5 deletions opal/mca/pmix/ext114/pmix_ext.c → opal/mca/pmix/ext11/pmix_ext.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
static const char *pmix1_get_nspace(opal_jobid_t jobid);
static void pmix1_register_jobid(opal_jobid_t jobid, const char *nspace);

const opal_pmix_base_module_t opal_pmix_ext114_module = {
const opal_pmix_base_module_t opal_pmix_ext11_module = {
/* client APIs */
.init = pmix1_client_init,
.finalize = pmix1_client_finalize,
Expand Down Expand Up @@ -100,7 +100,7 @@ static const char *pmix1_get_nspace(opal_jobid_t jobid)
{
opal_pmix1_jobid_trkr_t *jptr;

OPAL_LIST_FOREACH(jptr, &mca_pmix_ext114_component.jobids, opal_pmix1_jobid_trkr_t) {
OPAL_LIST_FOREACH(jptr, &mca_pmix_ext11_component.jobids, opal_pmix1_jobid_trkr_t) {
if (jptr->jobid == jobid) {
return jptr->nspace;
}
Expand All @@ -113,15 +113,15 @@ static void pmix1_register_jobid(opal_jobid_t jobid, const char *nspace)
opal_pmix1_jobid_trkr_t *jptr;

/* if we don't already have it, add this to our jobid tracker */
OPAL_LIST_FOREACH(jptr, &mca_pmix_ext114_component.jobids, opal_pmix1_jobid_trkr_t) {
OPAL_LIST_FOREACH(jptr, &mca_pmix_ext11_component.jobids, opal_pmix1_jobid_trkr_t) {
if (jptr->jobid == jobid) {
return;
}
}
jptr = OBJ_NEW(opal_pmix1_jobid_trkr_t);
(void)strncpy(jptr->nspace, nspace, PMIX_MAX_NSLEN);
jptr->jobid = jobid;
opal_list_append(&mca_pmix_ext114_component.jobids, &jptr->super);
opal_list_append(&mca_pmix_ext11_component.jobids, &jptr->super);
}

pmix_status_t pmix1_convert_opalrc(int rc)
Expand Down Expand Up @@ -287,10 +287,12 @@ pmix_scope_t pmix1_convert_opalscope(opal_pmix_scope_t scope) {
void pmix1_value_load(pmix_value_t *v,
opal_value_t *kv)
{
int ival;
unsigned int ui;

switch(kv->type) {
case OPAL_UNDEF:
v->type = PMIX_UNDEF;
opal_output(0, "TYPE WAS UNDEF");
break;
case OPAL_BOOL:
v->type = PMIX_BOOL;
Expand All @@ -317,6 +319,7 @@ void pmix1_value_load(pmix_value_t *v,
memcpy(&(v->data.pid), &kv->data.pid, sizeof(pid_t));
break;
case OPAL_INT:
case OPAL_STATUS:
v->type = PMIX_INT;
memcpy(&(v->data.integer), &kv->data.integer, sizeof(int));
break;
Expand All @@ -341,6 +344,7 @@ void pmix1_value_load(pmix_value_t *v,
memcpy(&(v->data.uint), &kv->data.uint, sizeof(int));
break;
case OPAL_UINT8:
case OPAL_PROC_STATE:
v->type = PMIX_UINT8;
memcpy(&(v->data.uint8), &kv->data.uint8, 1);
break;
Expand All @@ -349,6 +353,7 @@ void pmix1_value_load(pmix_value_t *v,
memcpy(&(v->data.uint16), &kv->data.uint16, 2);
break;
case OPAL_UINT32:
case OPAL_INFO_DIRECTIVES:
v->type = PMIX_UINT32;
memcpy(&(v->data.uint32), &kv->data.uint32, 4);
break;
Expand Down Expand Up @@ -379,13 +384,31 @@ void pmix1_value_load(pmix_value_t *v,
v->data.bo.size = 0;
}
break;
case OPAL_VPID:
v->type = PMIX_UINT32;
memcpy(&(v->data.uint32), &kv->data.name.vpid, 4);
break;
case OPAL_PERSIST:
v->type = PMIX_INT;
/* the value is in the uint8_t field, so convert it first */
ival = (int)kv->data.uint8;
memcpy(&(v->data.integer), &ival, sizeof(int));
break;
case OPAL_SCOPE:
case OPAL_DATA_RANGE:
v->type = PMIX_UINT;
ui = (unsigned int)kv->data.uint8;
memcpy(&(v->data.uint), &ui, sizeof(unsigned int));
break;
default:
/* silence warnings */
v->type = PMIX_UNDEF;
break;
}
}

int pmix1_value_unload(opal_value_t *kv,
const char *key,
const pmix_value_t *v)
{
int rc=OPAL_SUCCESS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
* $HEADER$
*/

#ifndef MCA_PMIX_EXT114_H
#define MCA_PMIX_EXT114_H
#ifndef MCA_PMIX_EXT11_H
#define MCA_PMIX_EXT11_H

#include "opal_config.h"

Expand All @@ -37,11 +37,11 @@ typedef struct {
opal_pmix_base_component_t super;
opal_list_t jobids;
bool native_launch;
} mca_pmix_ext114_component_t;
} mca_pmix_ext11_component_t;

OPAL_DECLSPEC extern mca_pmix_ext114_component_t mca_pmix_ext114_component;
OPAL_DECLSPEC extern mca_pmix_ext11_component_t mca_pmix_ext11_component;

OPAL_DECLSPEC extern const opal_pmix_base_module_t opal_pmix_ext114_module;
OPAL_DECLSPEC extern const opal_pmix_base_module_t opal_pmix_ext11_module;

/**** INTERNAL OBJECTS ****/
typedef struct {
Expand Down Expand Up @@ -171,6 +171,7 @@ OPAL_MODULE_DECLSPEC pmix_scope_t pmix1_convert_opalscope(opal_pmix_scope_t scop
OPAL_MODULE_DECLSPEC void pmix1_value_load(pmix_value_t *v,
opal_value_t *kv);
OPAL_MODULE_DECLSPEC int pmix1_value_unload(opal_value_t *kv,
const char *key,
const pmix_value_t *v);

END_C_DECLS
Expand Down
Loading

0 comments on commit af67f16

Please sign in to comment.