Skip to content

Commit c3b239c

Browse files
author
Ralph Castain
committed
Sync to PMIx master
Signed-off-by: Ralph Castain <[email protected]>
1 parent 3326439 commit c3b239c

File tree

10 files changed

+223
-38
lines changed

10 files changed

+223
-38
lines changed

opal/mca/pmix/pmix2x/pmix/VERSION

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ greek=
3030
# command, or with the date (if "git describe" fails) in the form of
3131
# "date<date>".
3232

33-
repo_rev=git0de7b68
33+
repo_rev=git9526eb3
3434

3535
# If tarball_version is not empty, it is used as the version string in
3636
# the tarball filename, regardless of all other versions listed in
@@ -44,7 +44,7 @@ tarball_version=
4444

4545
# The date when this release was created
4646

47-
date="Oct 05, 2017"
47+
date="Oct 06, 2017"
4848

4949
# The shared library version of each of PMIx's public libraries.
5050
# These versions are maintained in accordance with the "Library
@@ -76,3 +76,5 @@ date="Oct 05, 2017"
7676
# format.
7777

7878
libpmix_so_version=0:0:0
79+
libpmi_so_version=0:0:0
80+
libpmi2_so_version=0:0:0

opal/mca/pmix/pmix2x/pmix/config/pmix_setup_libevent.m4

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ AC_DEFUN([_PMIX_LIBEVENT_EMBEDDED_MODE],[
5050
])
5151

5252
AC_DEFUN([_PMIX_LIBEVENT_EXTERNAL],[
53-
PMIX_VAR_SCOPE_PUSH([pmix_event_dir pmix_event_libdir])
53+
PMIX_VAR_SCOPE_PUSH([pmix_event_dir pmix_event_libdir pmix_event_defaults])
5454

5555
AC_ARG_WITH([libevent],
5656
[AC_HELP_STRING([--with-libevent=DIR],
@@ -67,17 +67,32 @@ AC_DEFUN([_PMIX_LIBEVENT_EXTERNAL],[
6767

6868
AC_MSG_CHECKING([for libevent in])
6969
if test ! -z "$with_libevent" && test "$with_libevent" != "yes"; then
70+
pmix_event_defaults=no
7071
pmix_event_dir=$with_libevent
7172
if test -d $with_libevent/lib; then
7273
pmix_event_libdir=$with_libevent/lib
7374
elif test -d $with_libevent/lib64; then
7475
pmix_event_libdir=$with_libevent/lib64
76+
elif test -d $with_libevent; then
77+
pmix_event_libdir=$with_libevent
7578
else
76-
AC_MSG_RESULT([Could not find $with_libevent/lib or $with_libevent/lib64])
79+
AC_MSG_RESULT([Could not find $with_libevent/lib, $with_libevent/lib64, or $with_libevent])
7780
AC_MSG_ERROR([Can not continue])
7881
fi
7982
AC_MSG_RESULT([$pmix_event_dir and $pmix_event_libdir])
8083
else
84+
pmix_event_defaults=yes
85+
pmix_event_dir=/usr/include
86+
if test -d /usr/lib; then
87+
pmix_event_libdir=/usr/lib
88+
elif test -d /usr/lib64; then
89+
pmix_event_libdir=/usr/lib64
90+
else
91+
AC_MSG_RESULT([not found])
92+
AC_MSG_WARN([Could not find /usr/lib or /usr/lib64 - you may])
93+
AC_MSG_WARN([to specify --with-libevent-libdir=<path>])
94+
AC_MSG_ERROR([Can not continue])
95+
fi
8196
AC_MSG_RESULT([(default search paths)])
8297
fi
8398
AS_IF([test ! -z "$with_libevent_libdir" && "$with_libevent_libdir" != "yes"],
@@ -92,11 +107,13 @@ AC_DEFUN([_PMIX_LIBEVENT_EXTERNAL],[
92107
[$pmix_event_libdir],
93108
[],
94109
[AC_MSG_WARN([LIBEVENT SUPPORT NOT FOUND])
95-
AC_MSG_ERROR([CANNOT CONTINE])])
110+
AC_MSG_ERROR([CANNOT CONTINUE])])
111+
112+
AS_IF([test "$pmix_event_defaults" = "no"],
113+
[PMIX_FLAGS_APPEND_UNIQ(CPPFLAGS, $pmix_libevent_CPPFLAGS)
114+
PMIX_FLAGS_APPEND_UNIQ(LIBS, $pmix_libevent_LIBS)
115+
PMIX_FLAGS_APPEND_UNIQ(LDFLAGS, $pmix_libevent_LDFLAGS)])
96116

97-
PMIX_FLAGS_APPEND_UNIQ(CPPFLAGS, $pmix_libevent_CPPFLAGS)
98-
PMIX_FLAGS_APPEND_UNIQ(LIBS, $pmix_libevent_LIBS)
99-
PMIX_FLAGS_APPEND_UNIQ(LDFLAGS, $pmix_libevent_LDFLAGS)
100117

101118
# Ensure that this libevent has the symbol
102119
# "evthread_set_lock_callbacks", which will only exist if

opal/mca/pmix/pmix2x/pmix/configure.ac

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,8 @@ AC_SUBST([CONFIGURE_DEPENDENCIES], ['$(top_srcdir)/VERSION'])
237237

238238
. $srcdir/VERSION
239239
AC_SUBST([libpmix_so_version])
240+
AC_SUBST([libpmi_so_version])
241+
AC_SUBST([libpmi2_so_version])
240242

241243
AC_CONFIG_FILES(pmix_config_prefix[contrib/Makefile]
242244
pmix_config_prefix[examples/Makefile]

opal/mca/pmix/pmix2x/pmix/src/Makefile.am

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@ lib_LTLIBRARIES = libpmix.la
7171
libpmix_la_SOURCES = $(headers) $(sources)
7272
libpmix_la_LDFLAGS = -version-info $(libpmix_so_version)
7373

74+
if WANT_PMI_BACKWARD
75+
lib_LTLIBRARIES += libpmi.la libpmi2.la
76+
libpmi_la_SOURCES = $(headers) $(sources)
77+
libpmi_la_LDFLAGS = -version-info $(libpmi_so_version)
78+
libpmi2_la_SOURCES = $(headers) $(sources)
79+
libpmi2_la_LDFLAGS = -version-info $(libpmi2_so_version)
80+
endif
81+
7482
endif !PMIX_EMBEDDED_MODE
7583

7684
include atomics/sys/Makefile.include

opal/mca/pmix/pmix2x/pmix/src/client/pmi1.c

Lines changed: 83 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,19 @@
4545
#define PMI_MAX_VAL_LEN 4096 /* Maximum size of a PMI value */
4646

4747

48-
#define PMI_CHECK() \
49-
do { \
50-
if (!pmi_init) { \
51-
return PMI_FAIL; \
52-
} \
48+
#define PMI_CHECK() \
49+
do { \
50+
if (!pmi_init) { \
51+
return PMI_FAIL; \
52+
} \
5353
} while (0)
5454

5555
/* local functions */
5656
static pmix_status_t convert_int(int *value, pmix_value_t *kv);
5757
static int convert_err(pmix_status_t rc);
5858
static pmix_proc_t myproc;
5959
static int pmi_init = 0;
60+
static bool pmi_singleton = false;
6061

6162
PMIX_EXPORT int PMI_Init(int *spawned)
6263
{
@@ -66,7 +67,19 @@ PMIX_EXPORT int PMI_Init(int *spawned)
6667
pmix_info_t info[1];
6768
bool val_optinal = 1;
6869

69-
if (PMIX_SUCCESS != PMIx_Init(&myproc, NULL, 0)) {
70+
if (PMIX_SUCCESS != (rc = PMIx_Init(&myproc, NULL, 0))) {
71+
/* if we didn't see a PMIx server (e.g., missing envar),
72+
* then allow us to run as a singleton */
73+
if (PMIX_ERR_INVALID_NAMESPACE == rc) {
74+
if (NULL != spawned) {
75+
*spawned = 0;
76+
}
77+
pmi_singleton = true;
78+
(void)strncpy(myproc.nspace, "1234", PMIX_MAX_NSLEN);
79+
myproc.rank = 0;
80+
pmi_init = 1;
81+
return PMI_SUCCESS;
82+
}
7083
return PMI_ERR_INIT;
7184
}
7285

@@ -109,7 +122,11 @@ PMIX_EXPORT int PMI_Initialized(PMI_BOOL *initialized)
109122
return PMI_ERR_INVALID_ARG;
110123
}
111124

112-
*initialized = (PMIx_Initialized() ? PMI_TRUE : PMI_FALSE);
125+
if (pmi_singleton) {
126+
*initialized = PMI_TRUE;
127+
} else {
128+
*initialized = (PMIx_Initialized() ? PMI_TRUE : PMI_FALSE);
129+
}
113130

114131
return PMI_SUCCESS;
115132
}
@@ -120,6 +137,10 @@ PMIX_EXPORT int PMI_Finalize(void)
120137

121138
PMI_CHECK();
122139

140+
if (pmi_singleton) {
141+
return PMI_SUCCESS;
142+
}
143+
123144
pmi_init = 0;
124145
rc = PMIx_Finalize(NULL, 0);
125146
return convert_err(rc);
@@ -131,6 +152,10 @@ PMIX_EXPORT int PMI_Abort(int flag, const char msg[])
131152

132153
PMI_CHECK();
133154

155+
if (pmi_singleton) {
156+
return PMI_SUCCESS;
157+
}
158+
134159
rc = PMIx_Abort(flag, msg, NULL, 0);
135160
return convert_err(rc);
136161
}
@@ -153,6 +178,9 @@ PMIX_EXPORT int PMI_KVS_Put(const char kvsname[], const char key[], const char v
153178
if ((value == NULL) || (strlen(value) > PMI_MAX_VAL_LEN)) {
154179
return PMI_ERR_INVALID_VAL;
155180
}
181+
if (pmi_singleton) {
182+
return PMI_SUCCESS;
183+
}
156184

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

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

257288
PMI_CHECK();
258289

290+
if (pmi_singleton) {
291+
return PMI_SUCCESS;
292+
}
293+
259294
info = &buf;
260295
PMIX_INFO_CONSTRUCT(info);
261296
PMIX_INFO_LOAD(info, PMIX_COLLECT_DATA, &val, PMIX_BOOL);
@@ -282,6 +317,11 @@ PMIX_EXPORT int PMI_Get_size(int *size)
282317
return PMI_ERR_INVALID_ARG;
283318
}
284319

320+
if (pmi_singleton) {
321+
*size = 1;
322+
return PMI_SUCCESS;
323+
}
324+
285325
/* set controlling parameters
286326
* PMIX_OPTIONAL - expect that these keys should be available on startup
287327
*/
@@ -326,6 +366,11 @@ PMIX_EXPORT int PMI_Get_universe_size(int *size)
326366
return PMI_ERR_INVALID_ARG;
327367
}
328368

369+
if (pmi_singleton) {
370+
*size = 1;
371+
return PMI_SUCCESS;
372+
}
373+
329374
/* set controlling parameters
330375
* PMIX_OPTIONAL - expect that these keys should be available on startup
331376
*/
@@ -358,6 +403,11 @@ PMIX_EXPORT int PMI_Get_appnum(int *appnum)
358403
return PMI_ERR_INVALID_ARG;
359404
}
360405

406+
if (pmi_singleton) {
407+
*appnum = 0;
408+
return PMI_SUCCESS;
409+
}
410+
361411
/* set controlling parameters
362412
* PMIX_OPTIONAL - expect that these keys should be available on startup
363413
*/
@@ -390,6 +440,10 @@ PMIX_EXPORT int PMI_Publish_name(const char service_name[], const char port[])
390440
return PMI_ERR_INVALID_ARG;
391441
}
392442

443+
if (pmi_singleton) {
444+
return PMI_FAIL;
445+
}
446+
393447
/* pass the service/port */
394448
(void) strncpy(info.key, service_name, PMIX_MAX_KEYLEN);
395449
info.value.type = PMIX_STRING;
@@ -413,6 +467,10 @@ PMIX_EXPORT int PMI_Unpublish_name(const char service_name[])
413467
return PMI_ERR_INVALID_ARG;
414468
}
415469

470+
if (pmi_singleton) {
471+
return PMI_FAIL;
472+
}
473+
416474
/* pass the service */
417475
keys[0] = (char*) service_name;
418476
keys[1] = NULL;
@@ -432,6 +490,10 @@ PMIX_EXPORT int PMI_Lookup_name(const char service_name[], char port[])
432490
return PMI_ERR_INVALID_ARG;
433491
}
434492

493+
if (pmi_singleton) {
494+
return PMI_FAIL;
495+
}
496+
435497
PMIX_PDATA_CONSTRUCT(&pdata);
436498

437499
/* pass the service */
@@ -512,6 +574,11 @@ PMIX_EXPORT int PMI_Get_clique_size(int *size)
512574
return PMI_ERR_INVALID_ARG;
513575
}
514576

577+
if (pmi_singleton) {
578+
*size = 1;
579+
return PMI_SUCCESS;
580+
}
581+
515582
/* set controlling parameters
516583
* PMIX_OPTIONAL - expect that these keys should be available on startup
517584
*/
@@ -544,6 +611,11 @@ PMIX_EXPORT int PMI_Get_clique_ranks(int ranks[], int length)
544611
return PMI_ERR_INVALID_ARGS;
545612
}
546613

614+
if (pmi_singleton) {
615+
ranks[0] = 0;
616+
return PMI_SUCCESS;
617+
}
618+
547619
rc = PMIx_Get(&proc, PMIX_LOCAL_PEERS, NULL, 0, &val);
548620
if (PMIX_SUCCESS == rc) {
549621
/* kv will contain a string of comma-separated
@@ -655,6 +727,10 @@ PMIX_EXPORT int PMI_Spawn_multiple(int count,
655727
return PMI_ERR_INVALID_ARG;
656728
}
657729

730+
if (pmi_singleton) {
731+
return PMI_FAIL;
732+
}
733+
658734
/* setup the apps */
659735
PMIX_APP_CREATE(apps, count);
660736
for (i = 0; i < count; i++) {

0 commit comments

Comments
 (0)