Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions opal/mca/pmix/pmix2x/pmix/VERSION
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ greek=
# command, or with the date (if "git describe" fails) in the form of
# "date<date>".

repo_rev=git0de7b68
repo_rev=git9526eb3

# 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 @@ -44,7 +44,7 @@ tarball_version=

# The date when this release was created

date="Oct 05, 2017"
date="Oct 06, 2017"

# 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,3 +76,5 @@ date="Oct 05, 2017"
# format.

libpmix_so_version=0:0:0
libpmi_so_version=0:0:0
libpmi2_so_version=0:0:0
29 changes: 23 additions & 6 deletions opal/mca/pmix/pmix2x/pmix/config/pmix_setup_libevent.m4
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ AC_DEFUN([_PMIX_LIBEVENT_EMBEDDED_MODE],[
])

AC_DEFUN([_PMIX_LIBEVENT_EXTERNAL],[
PMIX_VAR_SCOPE_PUSH([pmix_event_dir pmix_event_libdir])
PMIX_VAR_SCOPE_PUSH([pmix_event_dir pmix_event_libdir pmix_event_defaults])

AC_ARG_WITH([libevent],
[AC_HELP_STRING([--with-libevent=DIR],
Expand All @@ -67,17 +67,32 @@ AC_DEFUN([_PMIX_LIBEVENT_EXTERNAL],[

AC_MSG_CHECKING([for libevent in])
if test ! -z "$with_libevent" && test "$with_libevent" != "yes"; then
pmix_event_defaults=no
pmix_event_dir=$with_libevent
if test -d $with_libevent/lib; then
pmix_event_libdir=$with_libevent/lib
elif test -d $with_libevent/lib64; then
pmix_event_libdir=$with_libevent/lib64
elif test -d $with_libevent; then
pmix_event_libdir=$with_libevent
else
AC_MSG_RESULT([Could not find $with_libevent/lib or $with_libevent/lib64])
AC_MSG_RESULT([Could not find $with_libevent/lib, $with_libevent/lib64, or $with_libevent])
AC_MSG_ERROR([Can not continue])
fi
AC_MSG_RESULT([$pmix_event_dir and $pmix_event_libdir])
else
pmix_event_defaults=yes
pmix_event_dir=/usr/include
if test -d /usr/lib; then
pmix_event_libdir=/usr/lib
elif test -d /usr/lib64; then
pmix_event_libdir=/usr/lib64
else
AC_MSG_RESULT([not found])
AC_MSG_WARN([Could not find /usr/lib or /usr/lib64 - you may])
AC_MSG_WARN([to specify --with-libevent-libdir=<path>])
AC_MSG_ERROR([Can not continue])
fi
AC_MSG_RESULT([(default search paths)])
fi
AS_IF([test ! -z "$with_libevent_libdir" && "$with_libevent_libdir" != "yes"],
Expand All @@ -92,11 +107,13 @@ AC_DEFUN([_PMIX_LIBEVENT_EXTERNAL],[
[$pmix_event_libdir],
[],
[AC_MSG_WARN([LIBEVENT SUPPORT NOT FOUND])
AC_MSG_ERROR([CANNOT CONTINE])])
AC_MSG_ERROR([CANNOT CONTINUE])])

AS_IF([test "$pmix_event_defaults" = "no"],
[PMIX_FLAGS_APPEND_UNIQ(CPPFLAGS, $pmix_libevent_CPPFLAGS)
PMIX_FLAGS_APPEND_UNIQ(LIBS, $pmix_libevent_LIBS)
PMIX_FLAGS_APPEND_UNIQ(LDFLAGS, $pmix_libevent_LDFLAGS)])

PMIX_FLAGS_APPEND_UNIQ(CPPFLAGS, $pmix_libevent_CPPFLAGS)
PMIX_FLAGS_APPEND_UNIQ(LIBS, $pmix_libevent_LIBS)
PMIX_FLAGS_APPEND_UNIQ(LDFLAGS, $pmix_libevent_LDFLAGS)

# Ensure that this libevent has the symbol
# "evthread_set_lock_callbacks", which will only exist if
Expand Down
2 changes: 2 additions & 0 deletions opal/mca/pmix/pmix2x/pmix/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,8 @@ AC_SUBST([CONFIGURE_DEPENDENCIES], ['$(top_srcdir)/VERSION'])

. $srcdir/VERSION
AC_SUBST([libpmix_so_version])
AC_SUBST([libpmi_so_version])
AC_SUBST([libpmi2_so_version])

AC_CONFIG_FILES(pmix_config_prefix[contrib/Makefile]
pmix_config_prefix[examples/Makefile]
Expand Down
8 changes: 8 additions & 0 deletions opal/mca/pmix/pmix2x/pmix/src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,14 @@ lib_LTLIBRARIES = libpmix.la
libpmix_la_SOURCES = $(headers) $(sources)
libpmix_la_LDFLAGS = -version-info $(libpmix_so_version)

if WANT_PMI_BACKWARD
lib_LTLIBRARIES += libpmi.la libpmi2.la
libpmi_la_SOURCES = $(headers) $(sources)
libpmi_la_LDFLAGS = -version-info $(libpmi_so_version)
libpmi2_la_SOURCES = $(headers) $(sources)
libpmi2_la_LDFLAGS = -version-info $(libpmi2_so_version)
endif

endif !PMIX_EMBEDDED_MODE

include atomics/sys/Makefile.include
Expand Down
90 changes: 83 additions & 7 deletions opal/mca/pmix/pmix2x/pmix/src/client/pmi1.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,18 +45,19 @@
#define PMI_MAX_VAL_LEN 4096 /* Maximum size of a PMI value */


#define PMI_CHECK() \
do { \
if (!pmi_init) { \
return PMI_FAIL; \
} \
#define PMI_CHECK() \
do { \
if (!pmi_init) { \
return PMI_FAIL; \
} \
} while (0)

/* local functions */
static pmix_status_t convert_int(int *value, pmix_value_t *kv);
static int convert_err(pmix_status_t rc);
static pmix_proc_t myproc;
static int pmi_init = 0;
static bool pmi_singleton = false;

PMIX_EXPORT int PMI_Init(int *spawned)
{
Expand All @@ -66,7 +67,19 @@ PMIX_EXPORT int PMI_Init(int *spawned)
pmix_info_t info[1];
bool val_optinal = 1;

if (PMIX_SUCCESS != PMIx_Init(&myproc, NULL, 0)) {
if (PMIX_SUCCESS != (rc = PMIx_Init(&myproc, NULL, 0))) {
/* if we didn't see a PMIx server (e.g., missing envar),
* then allow us to run as a singleton */
if (PMIX_ERR_INVALID_NAMESPACE == rc) {
if (NULL != spawned) {
*spawned = 0;
}
pmi_singleton = true;
(void)strncpy(myproc.nspace, "1234", PMIX_MAX_NSLEN);
myproc.rank = 0;
pmi_init = 1;
return PMI_SUCCESS;
}
return PMI_ERR_INIT;
}

Expand Down Expand Up @@ -109,7 +122,11 @@ PMIX_EXPORT int PMI_Initialized(PMI_BOOL *initialized)
return PMI_ERR_INVALID_ARG;
}

*initialized = (PMIx_Initialized() ? PMI_TRUE : PMI_FALSE);
if (pmi_singleton) {
*initialized = PMI_TRUE;
} else {
*initialized = (PMIx_Initialized() ? PMI_TRUE : PMI_FALSE);
}

return PMI_SUCCESS;
}
Expand All @@ -120,6 +137,10 @@ PMIX_EXPORT int PMI_Finalize(void)

PMI_CHECK();

if (pmi_singleton) {
return PMI_SUCCESS;
}

pmi_init = 0;
rc = PMIx_Finalize(NULL, 0);
return convert_err(rc);
Expand All @@ -131,6 +152,10 @@ PMIX_EXPORT int PMI_Abort(int flag, const char msg[])

PMI_CHECK();

if (pmi_singleton) {
return PMI_SUCCESS;
}

rc = PMIx_Abort(flag, msg, NULL, 0);
return convert_err(rc);
}
Expand All @@ -153,6 +178,9 @@ PMIX_EXPORT int PMI_KVS_Put(const char kvsname[], const char key[], const char v
if ((value == NULL) || (strlen(value) > PMI_MAX_VAL_LEN)) {
return PMI_ERR_INVALID_VAL;
}
if (pmi_singleton) {
return PMI_SUCCESS;
}

pmix_output_verbose(2, pmix_globals.debug_output,
"PMI_KVS_Put: KVS=%s, key=%s value=%s", kvsname, key, value);
Expand All @@ -173,6 +201,9 @@ PMIX_EXPORT int PMI_KVS_Commit(const char kvsname[])
if ((kvsname == NULL) || (strlen(kvsname) > PMI_MAX_KVSNAME_LEN)) {
return PMI_ERR_INVALID_KVS;
}
if (pmi_singleton) {
return PMI_SUCCESS;
}

pmix_output_verbose(2, pmix_globals.debug_output, "PMI_KVS_Commit: KVS=%s",
kvsname);
Expand Down Expand Up @@ -256,6 +287,10 @@ PMIX_EXPORT int PMI_Barrier(void)

PMI_CHECK();

if (pmi_singleton) {
return PMI_SUCCESS;
}

info = &buf;
PMIX_INFO_CONSTRUCT(info);
PMIX_INFO_LOAD(info, PMIX_COLLECT_DATA, &val, PMIX_BOOL);
Expand All @@ -282,6 +317,11 @@ PMIX_EXPORT int PMI_Get_size(int *size)
return PMI_ERR_INVALID_ARG;
}

if (pmi_singleton) {
*size = 1;
return PMI_SUCCESS;
}

/* set controlling parameters
* PMIX_OPTIONAL - expect that these keys should be available on startup
*/
Expand Down Expand Up @@ -326,6 +366,11 @@ PMIX_EXPORT int PMI_Get_universe_size(int *size)
return PMI_ERR_INVALID_ARG;
}

if (pmi_singleton) {
*size = 1;
return PMI_SUCCESS;
}

/* set controlling parameters
* PMIX_OPTIONAL - expect that these keys should be available on startup
*/
Expand Down Expand Up @@ -358,6 +403,11 @@ PMIX_EXPORT int PMI_Get_appnum(int *appnum)
return PMI_ERR_INVALID_ARG;
}

if (pmi_singleton) {
*appnum = 0;
return PMI_SUCCESS;
}

/* set controlling parameters
* PMIX_OPTIONAL - expect that these keys should be available on startup
*/
Expand Down Expand Up @@ -390,6 +440,10 @@ PMIX_EXPORT int PMI_Publish_name(const char service_name[], const char port[])
return PMI_ERR_INVALID_ARG;
}

if (pmi_singleton) {
return PMI_FAIL;
}

/* pass the service/port */
(void) strncpy(info.key, service_name, PMIX_MAX_KEYLEN);
info.value.type = PMIX_STRING;
Expand All @@ -413,6 +467,10 @@ PMIX_EXPORT int PMI_Unpublish_name(const char service_name[])
return PMI_ERR_INVALID_ARG;
}

if (pmi_singleton) {
return PMI_FAIL;
}

/* pass the service */
keys[0] = (char*) service_name;
keys[1] = NULL;
Expand All @@ -432,6 +490,10 @@ PMIX_EXPORT int PMI_Lookup_name(const char service_name[], char port[])
return PMI_ERR_INVALID_ARG;
}

if (pmi_singleton) {
return PMI_FAIL;
}

PMIX_PDATA_CONSTRUCT(&pdata);

/* pass the service */
Expand Down Expand Up @@ -512,6 +574,11 @@ PMIX_EXPORT int PMI_Get_clique_size(int *size)
return PMI_ERR_INVALID_ARG;
}

if (pmi_singleton) {
*size = 1;
return PMI_SUCCESS;
}

/* set controlling parameters
* PMIX_OPTIONAL - expect that these keys should be available on startup
*/
Expand Down Expand Up @@ -544,6 +611,11 @@ PMIX_EXPORT int PMI_Get_clique_ranks(int ranks[], int length)
return PMI_ERR_INVALID_ARGS;
}

if (pmi_singleton) {
ranks[0] = 0;
return PMI_SUCCESS;
}

rc = PMIx_Get(&proc, PMIX_LOCAL_PEERS, NULL, 0, &val);
if (PMIX_SUCCESS == rc) {
/* kv will contain a string of comma-separated
Expand Down Expand Up @@ -655,6 +727,10 @@ PMIX_EXPORT int PMI_Spawn_multiple(int count,
return PMI_ERR_INVALID_ARG;
}

if (pmi_singleton) {
return PMI_FAIL;
}

/* setup the apps */
PMIX_APP_CREATE(apps, count);
for (i = 0; i < count; i++) {
Expand Down
Loading