Merge pull request #4313 from rhc54/topic/connect
Since PMIx is moving to release v3.0, embed the new release candidate…
Этот коммит содержится в:
Коммит
1ae78e23fa
46
.gitignore
поставляемый
46
.gitignore
поставляемый
@ -310,36 +310,30 @@ opal/mca/hwloc/base/static-components.h.new.struct
|
||||
|
||||
opal/mca/installdirs/config/install_dirs.h
|
||||
|
||||
opal/mca/pmix/ext2x/ext2x.c
|
||||
opal/mca/pmix/ext2x/ext2x.h
|
||||
opal/mca/pmix/ext2x/ext2x_client.c
|
||||
opal/mca/pmix/ext2x/ext2x_component.c
|
||||
opal/mca/pmix/ext2x/ext2x_server_north.c
|
||||
opal/mca/pmix/ext2x/ext2x_server_south.c
|
||||
opal/mca/pmix/pmix*/pmix/include/pmix/autogen/config.h
|
||||
opal/mca/pmix/pmix*/pmix/include/pmix/autogen/config.h.in
|
||||
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/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/pmix2x/pmix/include/pmix_rename.h
|
||||
opal/mca/pmix/pmix2x/pmix/include/pmix_version.h
|
||||
opal/mca/pmix/pmix2x/pmix/src/util/keyval/keyval_lex.c
|
||||
opal/mca/pmix/pmix2x/pmix/src/util/show_help_lex.c
|
||||
opal/mca/pmix/pmix2x/pmix/examples/alloc
|
||||
opal/mca/pmix/pmix2x/pmix/examples/client
|
||||
opal/mca/pmix/pmix2x/pmix/examples/debugger
|
||||
opal/mca/pmix/pmix2x/pmix/examples/debuggerd
|
||||
opal/mca/pmix/pmix2x/pmix/examples/dmodex
|
||||
opal/mca/pmix/pmix2x/pmix/examples/dynamic
|
||||
opal/mca/pmix/pmix2x/pmix/examples/fault
|
||||
opal/mca/pmix/pmix2x/pmix/examples/jctrl
|
||||
opal/mca/pmix/pmix2x/pmix/examples/pub
|
||||
opal/mca/pmix/pmix2x/pmix/examples/server
|
||||
opal/mca/pmix/pmix2x/pmix/examples/tool
|
||||
opal/mca/pmix/pmix*/pmix/src/include/frameworks.h
|
||||
opal/mca/pmix/pmix*/pmix/src/mca/pinstalldirs/config/pinstall_dirs.h
|
||||
opal/mca/pmix/pmix*/pmix/config/autogen_found_items.m4
|
||||
opal/mca/pmix/pmix*/pmix/src/include/pmix_config.h
|
||||
opal/mca/pmix/pmix*/pmix/src/include/pmix_config.h.in
|
||||
opal/mca/pmix/pmix*/pmix/include/pmix_rename.h
|
||||
opal/mca/pmix/pmix*/pmix/include/pmix_version.h
|
||||
opal/mca/pmix/pmix*/pmix/src/util/keyval/keyval_lex.c
|
||||
opal/mca/pmix/pmix*/pmix/src/util/show_help_lex.c
|
||||
opal/mca/pmix/pmix*/pmix/examples/alloc
|
||||
opal/mca/pmix/pmix*/pmix/examples/client
|
||||
opal/mca/pmix/pmix*/pmix/examples/debugger
|
||||
opal/mca/pmix/pmix*/pmix/examples/debuggerd
|
||||
opal/mca/pmix/pmix*/pmix/examples/dmodex
|
||||
opal/mca/pmix/pmix*/pmix/examples/dynamic
|
||||
opal/mca/pmix/pmix*/pmix/examples/fault
|
||||
opal/mca/pmix/pmix*/pmix/examples/jctrl
|
||||
opal/mca/pmix/pmix*/pmix/examples/pub
|
||||
opal/mca/pmix/pmix*/pmix/examples/server
|
||||
opal/mca/pmix/pmix*/pmix/examples/tool
|
||||
|
||||
opal/tools/opal-checkpoint/opal-checkpoint
|
||||
opal/tools/opal-checkpoint/opal-checkpoint.1
|
||||
|
@ -14,18 +14,16 @@
|
||||
dist_opaldata_DATA = help-pmix-ext2x.txt
|
||||
|
||||
sources = \
|
||||
ext2x_local.c
|
||||
|
||||
nodist_headers = \
|
||||
ext2x.h
|
||||
|
||||
nodist_sources = \
|
||||
ext2x_local.c \
|
||||
ext2x.c \
|
||||
ext2x_client.c \
|
||||
ext2x_component.c \
|
||||
ext2x_server_north.c \
|
||||
ext2x_server_south.c
|
||||
|
||||
headers = \
|
||||
ext2x.h
|
||||
|
||||
# Make the output library in this directory, and name it either
|
||||
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
|
||||
# (for static builds).
|
||||
@ -38,23 +36,9 @@ component_noinst = libmca_pmix_ext2x.la
|
||||
component_install =
|
||||
endif
|
||||
|
||||
#
|
||||
# Generate ext2x sources from the pmix2x component
|
||||
#
|
||||
$(nodist_headers):
|
||||
pmix2xname=`echo $@ | sed -e s/ext2x/pmix2x/g` ; \
|
||||
$(SED) 's/pmix2x/ext2x/g' $(top_srcdir)/opal/mca/pmix/pmix2x/$$pmix2xname > $@
|
||||
|
||||
$(sources): $(nodist_headers)
|
||||
|
||||
$(nodist_sources): $(nodist_headers)
|
||||
pmix2xname=`echo $@ | sed -e s/ext2x/pmix2x/g` ; \
|
||||
$(SED) 's/pmix2x/ext2x/g' $(top_srcdir)/opal/mca/pmix/pmix2x/$$pmix2xname > $@
|
||||
|
||||
mcacomponentdir = $(opallibdir)
|
||||
mcacomponent_LTLIBRARIES = $(component_install)
|
||||
mca_pmix_ext2x_la_SOURCES = $(sources)
|
||||
nodist_mca_pmix_ext2x_la_SOURCES = $(nodist_sources)
|
||||
mca_pmix_ext2x_la_CFLAGS = $(opal_pmix_ext2x_CFLAGS)
|
||||
mca_pmix_ext2x_la_CPPFLAGS =$(opal_pmix_ext2x_CPPFLAGS)
|
||||
mca_pmix_ext2x_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext2x_LDFLAGS)
|
||||
@ -67,6 +51,3 @@ libmca_pmix_ext2x_la_CFLAGS = $(opal_pmix_ext2x_CFLAGS)
|
||||
libmca_pmix_ext2x_la_CPPFLAGS = $(opal_pmix_ext2x_CPPFLAGS)
|
||||
libmca_pmix_ext2x_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext2x_LDFLAGS)
|
||||
libmca_pmix_ext2x_la_LIBADD = $(opal_pmix_ext2x_LIBS)
|
||||
|
||||
clean-local:
|
||||
$(RM) -f $(nodist_sources) $(nodist_headers)
|
||||
|
1547
opal/mca/pmix/ext2x/ext2x.c
Обычный файл
1547
opal/mca/pmix/ext2x/ext2x.c
Обычный файл
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
340
opal/mca/pmix/ext2x/ext2x.h
Обычный файл
340
opal/mca/pmix/ext2x/ext2x.h
Обычный файл
@ -0,0 +1,340 @@
|
||||
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2014-2015 Mellanox Technologies, Inc.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2016 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2017 Los Alamos National Security, LLC. All rights
|
||||
* reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
*
|
||||
* $HEADER$
|
||||
*/
|
||||
|
||||
#ifndef MCA_PMIX_PMIX2X_H
|
||||
#define MCA_PMIX_PMIX2X_H
|
||||
|
||||
#include "opal_config.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_UN_H
|
||||
#include <sys/un.h>
|
||||
#endif
|
||||
|
||||
#include "opal/class/opal_list.h"
|
||||
#include "opal/mca/mca.h"
|
||||
#include "opal/mca/event/event.h"
|
||||
#include "opal/util/proc.h"
|
||||
|
||||
#include "opal/mca/pmix/base/base.h"
|
||||
#include "pmix_server.h"
|
||||
#include "pmix_common.h"
|
||||
|
||||
BEGIN_C_DECLS
|
||||
|
||||
#ifdef OPAL_C_HAVE_VISIBILITY
|
||||
#define PMIX_HAVE_VISIBILITY 1
|
||||
#else
|
||||
#undef PMIX_HAVE_VISIBILITY
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
opal_pmix_base_component_t super;
|
||||
opal_list_t jobids;
|
||||
bool native_launch;
|
||||
size_t evindex;
|
||||
opal_list_t events;
|
||||
int cache_size;
|
||||
opal_list_t cache;
|
||||
opal_list_t dmdx;
|
||||
bool silence_warning;
|
||||
} mca_pmix_ext2x_component_t;
|
||||
|
||||
OPAL_DECLSPEC extern mca_pmix_ext2x_component_t mca_pmix_ext2x_component;
|
||||
|
||||
OPAL_DECLSPEC extern const opal_pmix_base_module_t opal_pmix_ext2x_module;
|
||||
|
||||
/**** INTERNAL OBJECTS ****/
|
||||
typedef struct {
|
||||
opal_list_item_t super;
|
||||
opal_jobid_t jobid;
|
||||
char nspace[PMIX_MAX_NSLEN + 1];
|
||||
} opal_ext2x_jobid_trkr_t;
|
||||
OBJ_CLASS_DECLARATION(opal_ext2x_jobid_trkr_t);
|
||||
|
||||
typedef struct {
|
||||
opal_list_item_t super;
|
||||
opal_pmix_lock_t lock;
|
||||
size_t index;
|
||||
opal_pmix_notification_fn_t handler;
|
||||
void *cbdata;
|
||||
} opal_ext2x_event_t;
|
||||
OBJ_CLASS_DECLARATION(opal_ext2x_event_t);
|
||||
|
||||
typedef struct {
|
||||
opal_list_item_t super;
|
||||
char *nspace;
|
||||
pmix_modex_cbfunc_t cbfunc;
|
||||
void *cbdata;
|
||||
} opal_ext2x_dmx_trkr_t;
|
||||
OBJ_CLASS_DECLARATION(opal_ext2x_dmx_trkr_t);
|
||||
|
||||
typedef struct {
|
||||
opal_object_t super;
|
||||
opal_event_t ev;
|
||||
pmix_status_t status;
|
||||
char *nspace;
|
||||
pmix_proc_t p;
|
||||
pmix_proc_t *procs;
|
||||
size_t nprocs;
|
||||
pmix_pdata_t *pdata;
|
||||
size_t npdata;
|
||||
pmix_proc_t *error_procs;
|
||||
size_t nerror_procs;
|
||||
pmix_info_t *info;
|
||||
size_t ninfo;
|
||||
pmix_app_t *apps;
|
||||
size_t sz;
|
||||
opal_pmix_lock_t lock;
|
||||
opal_list_t *codes;
|
||||
pmix_status_t *pcodes;
|
||||
size_t ncodes;
|
||||
pmix_query_t *queries;
|
||||
size_t nqueries;
|
||||
opal_ext2x_event_t *event;
|
||||
opal_pmix_op_cbfunc_t opcbfunc;
|
||||
opal_pmix_modex_cbfunc_t mdxcbfunc;
|
||||
opal_pmix_value_cbfunc_t valcbfunc;
|
||||
opal_pmix_lookup_cbfunc_t lkcbfunc;
|
||||
opal_pmix_spawn_cbfunc_t spcbfunc;
|
||||
opal_pmix_evhandler_reg_cbfunc_t evregcbfunc;
|
||||
opal_pmix_info_cbfunc_t qcbfunc;
|
||||
void *cbdata;
|
||||
} ext2x_opcaddy_t;
|
||||
OBJ_CLASS_DECLARATION(ext2x_opcaddy_t);
|
||||
|
||||
typedef struct {
|
||||
opal_object_t super;
|
||||
opal_list_t procs;
|
||||
opal_list_t info;
|
||||
opal_list_t apps;
|
||||
pmix_op_cbfunc_t opcbfunc;
|
||||
pmix_dmodex_response_fn_t dmdxfunc;
|
||||
pmix_modex_cbfunc_t mdxcbfunc;
|
||||
pmix_lookup_cbfunc_t lkupcbfunc;
|
||||
pmix_spawn_cbfunc_t spwncbfunc;
|
||||
pmix_info_cbfunc_t infocbfunc;
|
||||
pmix_tool_connection_cbfunc_t toolcbfunc;
|
||||
void *cbdata;
|
||||
opal_pmix_release_cbfunc_t odmdxfunc;
|
||||
void *ocbdata;
|
||||
} ext2x_opalcaddy_t;
|
||||
OBJ_CLASS_DECLARATION(ext2x_opalcaddy_t);
|
||||
|
||||
typedef struct {
|
||||
opal_object_t super;
|
||||
opal_event_t ev;
|
||||
opal_pmix_lock_t lock;
|
||||
const char *msg;
|
||||
char *strings;
|
||||
size_t id;
|
||||
int status;
|
||||
opal_process_name_t pname;
|
||||
opal_jobid_t jobid;
|
||||
const opal_process_name_t *source;
|
||||
opal_pmix_data_range_t range;
|
||||
bool nondefault;
|
||||
size_t handler;
|
||||
opal_value_t *val;
|
||||
opal_list_t *event_codes;
|
||||
opal_list_t *info;
|
||||
opal_list_t results;
|
||||
opal_pmix_notification_fn_t evhandler;
|
||||
opal_pmix_evhandler_reg_cbfunc_t cbfunc;
|
||||
opal_pmix_op_cbfunc_t opcbfunc;
|
||||
pmix_event_notification_cbfunc_fn_t pmixcbfunc;
|
||||
opal_pmix_value_cbfunc_t valcbfunc;
|
||||
opal_pmix_lookup_cbfunc_t lkcbfunc;
|
||||
void *cbdata;
|
||||
} ext2x_threadshift_t;
|
||||
OBJ_CLASS_DECLARATION(ext2x_threadshift_t);
|
||||
|
||||
#define OPAL_PMIX_OP_THREADSHIFT(e, fn, cb, cd) \
|
||||
do { \
|
||||
ext2x_threadshift_t *_cd; \
|
||||
_cd = OBJ_NEW(ext2x_threadshift_t); \
|
||||
_cd->handler = (e); \
|
||||
_cd->opcbfunc = (cb); \
|
||||
_cd->cbdata = (cd); \
|
||||
opal_event_assign(&((_cd)->ev), opal_pmix_base.evbase, \
|
||||
-1, EV_WRITE, (fn), (_cd)); \
|
||||
OPAL_POST_OBJECT(_cd); \
|
||||
opal_event_active(&((_cd)->ev), EV_WRITE, 1); \
|
||||
} while(0)
|
||||
|
||||
#define OPAL_PMIX_THREADSHIFT(e, i, eh, fn, cb, cd) \
|
||||
do { \
|
||||
ext2x_threadshift_t *_cd; \
|
||||
_cd = OBJ_NEW(ext2x_threadshift_t); \
|
||||
_cd->event_codes = (e); \
|
||||
_cd->info = (i); \
|
||||
_cd->evhandler = (eh); \
|
||||
_cd->cbfunc = (cb); \
|
||||
_cd->cbdata = (cd); \
|
||||
opal_event_assign(&((_cd)->ev), opal_pmix_base.evbase, \
|
||||
-1, EV_WRITE, (fn), (_cd)); \
|
||||
OPAL_POST_OBJECT(_cd); \
|
||||
opal_event_active(&((_cd)->ev), EV_WRITE, 1); \
|
||||
} while(0)
|
||||
|
||||
#define OPAL_PMIX_NOTIFY_THREADSHIFT(s, sr, r, i, fn, cb, cd) \
|
||||
do { \
|
||||
ext2x_threadshift_t *_cd; \
|
||||
_cd = OBJ_NEW(ext2x_threadshift_t); \
|
||||
_cd->status = (s); \
|
||||
_cd->source = (sr); \
|
||||
_cd->range = (r); \
|
||||
_cd->info = (i); \
|
||||
_cd->opcbfunc = (cb); \
|
||||
_cd->cbdata = (cd); \
|
||||
opal_event_assign(&((_cd)->ev), opal_pmix_base.evbase, \
|
||||
-1, EV_WRITE, (fn), (_cd)); \
|
||||
OPAL_POST_OBJECT(_cd); \
|
||||
opal_event_active(&((_cd)->ev), EV_WRITE, 1); \
|
||||
} while(0)
|
||||
|
||||
#define OPAL_PMIX2X_THREADSHIFT(p, cb) \
|
||||
do { \
|
||||
opal_event_assign(&((p)->ev), opal_pmix_base.evbase, \
|
||||
-1, EV_WRITE, (cb), (p)); \
|
||||
OPAL_POST_OBJECT(p); \
|
||||
opal_event_active(&((p)->ev), EV_WRITE, 1); \
|
||||
} while(0)
|
||||
|
||||
/**** CLIENT FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int ext2x_client_init(opal_list_t *ilist);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_client_finalize(void);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_initialized(void);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_abort(int flag, const char *msg,
|
||||
opal_list_t *procs);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_commit(void);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_fence(opal_list_t *procs, int collect_data);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_fencenb(opal_list_t *procs, int collect_data,
|
||||
opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_put(opal_pmix_scope_t scope,
|
||||
opal_value_t *val);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_get(const opal_process_name_t *proc, const char *key,
|
||||
opal_list_t *info, opal_value_t **val);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_getnb(const opal_process_name_t *proc, const char *key,
|
||||
opal_list_t *info,
|
||||
opal_pmix_value_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_publish(opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_publishnb(opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_lookup(opal_list_t *data, opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_lookupnb(char **keys, opal_list_t *info,
|
||||
opal_pmix_lookup_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_unpublish(char **keys, opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_unpublishnb(char **keys, opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_spawn(opal_list_t *job_info, opal_list_t *apps, opal_jobid_t *jobid);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_spawnnb(opal_list_t *job_info, opal_list_t *apps,
|
||||
opal_pmix_spawn_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_connect(opal_list_t *procs);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_connectnb(opal_list_t *procs,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_disconnect(opal_list_t *procs);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_disconnectnb(opal_list_t *procs,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_resolve_peers(const char *nodename, opal_jobid_t jobid,
|
||||
opal_list_t *procs);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_resolve_nodes(opal_jobid_t jobid, char **nodelist);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_allocate(opal_pmix_alloc_directive_t directive,
|
||||
opal_list_t *info,
|
||||
opal_pmix_info_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_job_control(opal_list_t *targets,
|
||||
opal_list_t *directives,
|
||||
opal_pmix_info_cbfunc_t cbfunc, void *cbdata);
|
||||
|
||||
/**** TOOL FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int ext2x_tool_init(opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_tool_fini(void);
|
||||
|
||||
/**** COMMON FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int ext2x_store_local(const opal_process_name_t *proc,
|
||||
opal_value_t *val);
|
||||
|
||||
/**** SERVER SOUTHBOUND FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int ext2x_server_init(opal_pmix_server_module_t *module,
|
||||
opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_server_finalize(void);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_server_gen_regex(const char *input, char **regex);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_server_gen_ppn(const char *input, char **ppn);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_server_register_nspace(opal_jobid_t jobid,
|
||||
int nlocalprocs,
|
||||
opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC void ext2x_server_deregister_nspace(opal_jobid_t jobid,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_server_register_client(const opal_process_name_t *proc,
|
||||
uid_t uid, gid_t gid,
|
||||
void *server_object,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC void ext2x_server_deregister_client(const opal_process_name_t *proc,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_server_setup_fork(const opal_process_name_t *proc, char ***env);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_server_dmodex(const opal_process_name_t *proc,
|
||||
opal_pmix_modex_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_server_notify_event(int status,
|
||||
const opal_process_name_t *source,
|
||||
opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
|
||||
|
||||
|
||||
/**** COMPONENT UTILITY FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int opal_pmix_ext2x_check_evars(void);
|
||||
|
||||
OPAL_MODULE_DECLSPEC void ext2x_event_hdlr(size_t evhdlr_registration_id,
|
||||
pmix_status_t status, const pmix_proc_t *source,
|
||||
pmix_info_t info[], size_t ninfo,
|
||||
pmix_info_t results[], size_t nresults,
|
||||
pmix_event_notification_cbfunc_fn_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC pmix_status_t ext2x_convert_opalrc(int rc);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_convert_rc(pmix_status_t rc);
|
||||
|
||||
OPAL_MODULE_DECLSPEC opal_vpid_t ext2x_convert_rank(pmix_rank_t rank);
|
||||
OPAL_MODULE_DECLSPEC pmix_rank_t ext2x_convert_opalrank(opal_vpid_t vpid);
|
||||
|
||||
OPAL_MODULE_DECLSPEC opal_pmix_scope_t ext2x_convert_scope(pmix_scope_t scope);
|
||||
OPAL_MODULE_DECLSPEC pmix_scope_t ext2x_convert_opalscope(opal_pmix_scope_t scope);
|
||||
|
||||
OPAL_MODULE_DECLSPEC pmix_data_range_t ext2x_convert_opalrange(opal_pmix_data_range_t range);
|
||||
OPAL_MODULE_DECLSPEC opal_pmix_data_range_t ext2x_convert_range(pmix_data_range_t range);
|
||||
|
||||
OPAL_MODULE_DECLSPEC opal_pmix_persistence_t ext2x_convert_persist(pmix_persistence_t scope);
|
||||
OPAL_MODULE_DECLSPEC pmix_persistence_t ext2x_convert_opalpersist(opal_pmix_persistence_t scope);
|
||||
|
||||
OPAL_MODULE_DECLSPEC void ext2x_value_load(pmix_value_t *v,
|
||||
opal_value_t *kv);
|
||||
OPAL_MODULE_DECLSPEC int ext2x_value_unload(opal_value_t *kv,
|
||||
const pmix_value_t *v);
|
||||
|
||||
OPAL_MODULE_DECLSPEC opal_pmix_alloc_directive_t ext2x_convert_allocdir(pmix_alloc_directive_t dir);
|
||||
|
||||
OPAL_MODULE_DECLSPEC char* ext2x_convert_jobid(opal_jobid_t jobid);
|
||||
|
||||
END_C_DECLS
|
||||
|
||||
#endif /* MCA_PMIX_EXTERNAL_H */
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
129
opal/mca/pmix/ext2x/ext2x_component.c
Обычный файл
129
opal/mca/pmix/ext2x/ext2x_component.c
Обычный файл
@ -0,0 +1,129 @@
|
||||
/*
|
||||
* Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2014-2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
*
|
||||
* $HEADER$
|
||||
*
|
||||
* These symbols are in a file by themselves to provide nice linker
|
||||
* semantics. Since linkers generally pull in symbols by object
|
||||
* files, keeping these symbols as the only symbols in this file
|
||||
* prevents utility programs such as "ompi_info" from having to import
|
||||
* entire components just to query their version and parameters.
|
||||
*/
|
||||
|
||||
#include "opal_config.h"
|
||||
|
||||
#include "opal/constants.h"
|
||||
#include "opal/class/opal_list.h"
|
||||
#include "opal/util/proc.h"
|
||||
#include "opal/mca/pmix/pmix.h"
|
||||
#include "ext2x.h"
|
||||
|
||||
/*
|
||||
* Public string showing the pmix external component version number
|
||||
*/
|
||||
const char *opal_pmix_ext2x_component_version_string =
|
||||
"OPAL ext2x MCA component version " OPAL_VERSION;
|
||||
|
||||
/*
|
||||
* Local function
|
||||
*/
|
||||
static int external_register(void);
|
||||
static int external_open(void);
|
||||
static int external_close(void);
|
||||
static int external_component_query(mca_base_module_t **module, int *priority);
|
||||
|
||||
|
||||
/*
|
||||
* Instantiate the public struct with all of our public information
|
||||
* and pointers to our public functions in it
|
||||
*/
|
||||
|
||||
mca_pmix_ext2x_component_t mca_pmix_ext2x_component = {
|
||||
{
|
||||
/* First, the mca_component_t struct containing meta information
|
||||
about the component itself */
|
||||
|
||||
.base_version = {
|
||||
/* Indicate that we are a pmix v1.1.0 component (which also
|
||||
implies a specific MCA version) */
|
||||
|
||||
OPAL_PMIX_BASE_VERSION_2_0_0,
|
||||
|
||||
/* Component name and version */
|
||||
|
||||
.mca_component_name = "ext2x",
|
||||
MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION,
|
||||
OPAL_RELEASE_VERSION),
|
||||
|
||||
/* Component open and close functions */
|
||||
|
||||
.mca_open_component = external_open,
|
||||
.mca_close_component = external_close,
|
||||
.mca_query_component = external_component_query,
|
||||
.mca_register_component_params = external_register
|
||||
},
|
||||
/* Next the MCA v1.0.0 component meta data */
|
||||
.base_data = {
|
||||
/* The component is checkpoint ready */
|
||||
MCA_BASE_METADATA_PARAM_CHECKPOINT
|
||||
}
|
||||
},
|
||||
.native_launch = false
|
||||
};
|
||||
|
||||
static int external_register(void)
|
||||
{
|
||||
mca_base_component_t *component = &mca_pmix_ext2x_component.super.base_version;
|
||||
|
||||
mca_pmix_ext2x_component.silence_warning = false;
|
||||
(void) mca_base_component_var_register (component, "silence_warning",
|
||||
"Silence warning about PMIX_INSTALL_PREFIX",
|
||||
MCA_BASE_VAR_TYPE_BOOL, NULL, 0, 0,
|
||||
OPAL_INFO_LVL_4,
|
||||
MCA_BASE_VAR_SCOPE_READONLY,
|
||||
&mca_pmix_ext2x_component.silence_warning);
|
||||
|
||||
return OPAL_SUCCESS;
|
||||
}
|
||||
|
||||
static int external_open(void)
|
||||
{
|
||||
mca_pmix_ext2x_component.evindex = 0;
|
||||
OBJ_CONSTRUCT(&mca_pmix_ext2x_component.jobids, opal_list_t);
|
||||
OBJ_CONSTRUCT(&mca_pmix_ext2x_component.events, opal_list_t);
|
||||
OBJ_CONSTRUCT(&mca_pmix_ext2x_component.dmdx, opal_list_t);
|
||||
|
||||
return OPAL_SUCCESS;
|
||||
}
|
||||
|
||||
static int external_close(void)
|
||||
{
|
||||
OPAL_LIST_DESTRUCT(&mca_pmix_ext2x_component.jobids);
|
||||
OPAL_LIST_DESTRUCT(&mca_pmix_ext2x_component.events);
|
||||
OPAL_LIST_DESTRUCT(&mca_pmix_ext2x_component.dmdx);
|
||||
return OPAL_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
static int external_component_query(mca_base_module_t **module, int *priority)
|
||||
{
|
||||
char *t, *id;
|
||||
|
||||
/* see if a PMIx server is present */
|
||||
if (NULL != (t = getenv("PMIX_SERVER_URI")) ||
|
||||
NULL != (id = getenv("PMIX_ID"))) {
|
||||
/* if PMIx is present, then we are a client and need to use it */
|
||||
*priority = 100;
|
||||
} else {
|
||||
/* we could be a server, so we still need to be considered */
|
||||
*priority = 5;
|
||||
}
|
||||
*module = (mca_base_module_t *)&opal_pmix_ext2x_module;
|
||||
return OPAL_SUCCESS;
|
||||
}
|
@ -36,7 +36,7 @@
|
||||
#include "opal/util/proc.h"
|
||||
#include "opal/util/show_help.h"
|
||||
#include "opal/mca/pmix/base/base.h"
|
||||
#include "pmix2x.h"
|
||||
#include "ext2x.h"
|
||||
|
||||
#include "pmix.h"
|
||||
#include "pmix_server.h"
|
||||
@ -141,11 +141,11 @@ opal_pmix_server_module_t *host_module = NULL;
|
||||
|
||||
static void opal_opcbfunc(int status, void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy = (pmix2x_opalcaddy_t*)cbdata;
|
||||
ext2x_opalcaddy_t *opalcaddy = (ext2x_opalcaddy_t*)cbdata;
|
||||
|
||||
OPAL_ACQUIRE_OBJECT(opalcaddy);
|
||||
if (NULL != opalcaddy->opcbfunc) {
|
||||
opalcaddy->opcbfunc(pmix2x_convert_opalrc(status), opalcaddy->cbdata);
|
||||
opalcaddy->opcbfunc(ext2x_convert_opalrc(status), opalcaddy->cbdata);
|
||||
}
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
@ -155,33 +155,33 @@ static pmix_status_t server_client_connected_fn(const pmix_proc_t *p, void *serv
|
||||
{
|
||||
int rc;
|
||||
opal_process_name_t proc;
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
|
||||
if (NULL == host_module || NULL == host_module->client_connected) {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
/* convert the nspace/rank to an opal_process_name_t */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&proc.jobid, p->nspace))) {
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
proc.vpid = pmix2x_convert_rank(p->rank);
|
||||
proc.vpid = ext2x_convert_rank(p->rank);
|
||||
|
||||
/* pass it up */
|
||||
rc = host_module->client_connected(&proc, server_object,
|
||||
opal_opcbfunc, opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static pmix_status_t server_client_finalized_fn(const pmix_proc_t *p, void* server_object,
|
||||
pmix_op_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
int rc;
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t proc;
|
||||
|
||||
if (NULL == host_module || NULL == host_module->client_finalized) {
|
||||
@ -190,12 +190,12 @@ static pmix_status_t server_client_finalized_fn(const pmix_proc_t *p, void* serv
|
||||
|
||||
/* convert the nspace/rank to an opal_process_name_t */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&proc.jobid, p->nspace))) {
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
proc.vpid = pmix2x_convert_rank(p->rank);
|
||||
proc.vpid = ext2x_convert_rank(p->rank);
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -208,7 +208,7 @@ static pmix_status_t server_client_finalized_fn(const pmix_proc_t *p, void* serv
|
||||
if (OPAL_SUCCESS != rc) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static pmix_status_t server_abort_fn(const pmix_proc_t *p, void *server_object,
|
||||
@ -220,7 +220,7 @@ static pmix_status_t server_abort_fn(const pmix_proc_t *p, void *server_object,
|
||||
opal_namelist_t *nm;
|
||||
opal_process_name_t proc;
|
||||
int rc;
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
|
||||
if (NULL == host_module || NULL == host_module->abort) {
|
||||
return PMIX_ERR_NOT_SUPPORTED;
|
||||
@ -228,9 +228,9 @@ static pmix_status_t server_abort_fn(const pmix_proc_t *p, void *server_object,
|
||||
|
||||
/* convert the nspace/rank to an opal_process_name_t */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&proc.jobid, p->nspace))) {
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
proc.vpid = pmix2x_convert_rank(p->rank);
|
||||
proc.vpid = ext2x_convert_rank(p->rank);
|
||||
|
||||
opal_output_verbose(3, opal_pmix_base_framework.framework_output,
|
||||
"%s CLIENT %s CALLED ABORT",
|
||||
@ -238,7 +238,7 @@ static pmix_status_t server_abort_fn(const pmix_proc_t *p, void *server_object,
|
||||
OPAL_NAME_PRINT(proc));
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -248,9 +248,9 @@ static pmix_status_t server_abort_fn(const pmix_proc_t *p, void *server_object,
|
||||
opal_list_append(&opalcaddy->procs, &nm->super);
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&nm->name.jobid, procs[n].nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
nm->name.vpid = pmix2x_convert_rank(procs[n].rank);
|
||||
nm->name.vpid = ext2x_convert_rank(procs[n].rank);
|
||||
}
|
||||
|
||||
/* pass it up */
|
||||
@ -259,12 +259,12 @@ static pmix_status_t server_abort_fn(const pmix_proc_t *p, void *server_object,
|
||||
if (OPAL_SUCCESS != rc) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static void _data_release(void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy = (pmix2x_opalcaddy_t*)cbdata;
|
||||
ext2x_opalcaddy_t *opalcaddy = (ext2x_opalcaddy_t*)cbdata;
|
||||
|
||||
if (NULL != opalcaddy->odmdxfunc) {
|
||||
opalcaddy->odmdxfunc(opalcaddy->ocbdata);
|
||||
@ -276,10 +276,10 @@ static void opmdx_response(int status, const char *data, size_t sz, void *cbdata
|
||||
opal_pmix_release_cbfunc_t relcbfunc, void *relcbdata)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
pmix2x_opalcaddy_t *opalcaddy = (pmix2x_opalcaddy_t*)cbdata;
|
||||
opal_pmix2x_dmx_trkr_t *dmdx;
|
||||
ext2x_opalcaddy_t *opalcaddy = (ext2x_opalcaddy_t*)cbdata;
|
||||
opal_ext2x_dmx_trkr_t *dmdx;
|
||||
|
||||
rc = pmix2x_convert_rc(status);
|
||||
rc = ext2x_convert_rc(status);
|
||||
if (NULL != opalcaddy->mdxcbfunc) {
|
||||
opalcaddy->odmdxfunc = relcbfunc;
|
||||
opalcaddy->ocbdata = relcbdata;
|
||||
@ -289,7 +289,7 @@ static void opmdx_response(int status, const char *data, size_t sz, void *cbdata
|
||||
* dmodx requests that we cached and notify them that the
|
||||
* data has arrived */
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
while (NULL != (dmdx = (opal_pmix2x_dmx_trkr_t*)opal_list_remove_first(&mca_pmix_pmix2x_component.dmdx))) {
|
||||
while (NULL != (dmdx = (opal_ext2x_dmx_trkr_t*)opal_list_remove_first(&mca_pmix_ext2x_component.dmdx))) {
|
||||
dmdx->cbfunc(PMIX_SUCCESS, NULL, 0, dmdx->cbdata, NULL, NULL);
|
||||
OBJ_RELEASE(dmdx);
|
||||
}
|
||||
@ -304,7 +304,7 @@ static pmix_status_t server_fencenb_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
char *data, size_t ndata,
|
||||
pmix_modex_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
size_t n;
|
||||
opal_namelist_t *nm;
|
||||
opal_value_t *iptr;
|
||||
@ -317,7 +317,7 @@ static pmix_status_t server_fencenb_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
return PMIX_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->mdxcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -327,9 +327,9 @@ static pmix_status_t server_fencenb_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
opal_list_append(&opalcaddy->procs, &nm->super);
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&nm->name.jobid, procs[n].nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
nm->name.vpid = pmix2x_convert_rank(procs[n].rank);
|
||||
nm->name.vpid = ext2x_convert_rank(procs[n].rank);
|
||||
}
|
||||
|
||||
/* convert the array of pmix_info_t to the list of info */
|
||||
@ -337,9 +337,9 @@ static pmix_status_t server_fencenb_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
iptr = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &iptr->super);
|
||||
iptr->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(iptr, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(iptr, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -349,7 +349,7 @@ static pmix_status_t server_fencenb_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
if (OPAL_SUCCESS != rc) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static pmix_status_t server_dmodex_req_fn(const pmix_proc_t *p,
|
||||
@ -357,11 +357,11 @@ static pmix_status_t server_dmodex_req_fn(const pmix_proc_t *p,
|
||||
pmix_modex_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
int rc;
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t proc;
|
||||
opal_value_t *iptr;
|
||||
size_t n;
|
||||
opal_pmix2x_dmx_trkr_t *dmdx;
|
||||
opal_ext2x_dmx_trkr_t *dmdx;
|
||||
|
||||
if (NULL == host_module || NULL == host_module->direct_modex) {
|
||||
return PMIX_ERR_NOT_SUPPORTED;
|
||||
@ -369,9 +369,9 @@ static pmix_status_t server_dmodex_req_fn(const pmix_proc_t *p,
|
||||
|
||||
/* convert the nspace/rank to an opal_process_name_t */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&proc.jobid, p->nspace))) {
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
proc.vpid = pmix2x_convert_rank(p->rank);
|
||||
proc.vpid = ext2x_convert_rank(p->rank);
|
||||
|
||||
opal_output_verbose(3, opal_pmix_base_framework.framework_output,
|
||||
"%s CLIENT %s CALLED DMODX",
|
||||
@ -379,7 +379,7 @@ static pmix_status_t server_dmodex_req_fn(const pmix_proc_t *p,
|
||||
OPAL_NAME_PRINT(proc));
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->mdxcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -392,10 +392,10 @@ static pmix_status_t server_dmodex_req_fn(const pmix_proc_t *p,
|
||||
* client that the data is available */
|
||||
if (opal_pmix_base_async_modex && opal_pmix_collect_all_data) {
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
dmdx = OBJ_NEW(opal_pmix2x_dmx_trkr_t);
|
||||
dmdx = OBJ_NEW(opal_ext2x_dmx_trkr_t);
|
||||
dmdx->cbfunc = cbfunc;
|
||||
dmdx->cbdata = cbdata;
|
||||
opal_list_append(&mca_pmix_pmix2x_component.dmdx, &dmdx->super);
|
||||
opal_list_append(&mca_pmix_ext2x_component.dmdx, &dmdx->super);
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
@ -405,9 +405,9 @@ static pmix_status_t server_dmodex_req_fn(const pmix_proc_t *p,
|
||||
iptr = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &iptr->super);
|
||||
iptr->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(iptr, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(iptr, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -419,7 +419,7 @@ static pmix_status_t server_dmodex_req_fn(const pmix_proc_t *p,
|
||||
if (OPAL_ERR_IN_PROCESS == rc) {
|
||||
rc = OPAL_SUCCESS;
|
||||
}
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static pmix_status_t server_publish_fn(const pmix_proc_t *p,
|
||||
@ -428,7 +428,7 @@ static pmix_status_t server_publish_fn(const pmix_proc_t *p,
|
||||
{
|
||||
int rc;
|
||||
size_t n;
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t proc;
|
||||
opal_value_t *oinfo;
|
||||
|
||||
@ -438,9 +438,9 @@ static pmix_status_t server_publish_fn(const pmix_proc_t *p,
|
||||
|
||||
/* convert the nspace/rank to an opal_process_name_t */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&proc.jobid, p->nspace))) {
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
proc.vpid = pmix2x_convert_rank(p->rank);
|
||||
proc.vpid = ext2x_convert_rank(p->rank);
|
||||
|
||||
opal_output_verbose(3, opal_pmix_base_framework.framework_output,
|
||||
"%s CLIENT %s CALLED PUBLISH",
|
||||
@ -448,7 +448,7 @@ static pmix_status_t server_publish_fn(const pmix_proc_t *p,
|
||||
OPAL_NAME_PRINT(proc));
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -457,9 +457,9 @@ static pmix_status_t server_publish_fn(const pmix_proc_t *p,
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
oinfo->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -469,21 +469,21 @@ static pmix_status_t server_publish_fn(const pmix_proc_t *p,
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static void opal_lkupcbfunc(int status,
|
||||
opal_list_t *data,
|
||||
void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy = (pmix2x_opalcaddy_t*)cbdata;
|
||||
ext2x_opalcaddy_t *opalcaddy = (ext2x_opalcaddy_t*)cbdata;
|
||||
pmix_status_t rc;
|
||||
pmix_pdata_t *d=NULL;
|
||||
size_t nd=0, n;
|
||||
opal_pmix_pdata_t *p;
|
||||
|
||||
if (NULL != opalcaddy->lkupcbfunc) {
|
||||
rc = pmix2x_convert_opalrc(status);
|
||||
rc = ext2x_convert_opalrc(status);
|
||||
/* convert any returned data */
|
||||
if (NULL != data) {
|
||||
nd = opal_list_get_size(data);
|
||||
@ -492,9 +492,9 @@ static void opal_lkupcbfunc(int status,
|
||||
OPAL_LIST_FOREACH(p, data, opal_pmix_pdata_t) {
|
||||
/* convert the jobid */
|
||||
(void)opal_snprintf_jobid(d[n].proc.nspace, PMIX_MAX_NSLEN, p->proc.jobid);
|
||||
d[n].proc.rank = pmix2x_convert_opalrank(p->proc.vpid);
|
||||
d[n].proc.rank = ext2x_convert_opalrank(p->proc.vpid);
|
||||
(void)strncpy(d[n].key, p->value.key, PMIX_MAX_KEYLEN);
|
||||
pmix2x_value_load(&d[n].value, &p->value);
|
||||
ext2x_value_load(&d[n].value, &p->value);
|
||||
}
|
||||
}
|
||||
opalcaddy->lkupcbfunc(rc, d, nd, opalcaddy->cbdata);
|
||||
@ -508,7 +508,7 @@ static pmix_status_t server_lookup_fn(const pmix_proc_t *p, char **keys,
|
||||
pmix_lookup_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
int rc;
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t proc;
|
||||
opal_value_t *iptr;
|
||||
size_t n;
|
||||
@ -519,9 +519,9 @@ static pmix_status_t server_lookup_fn(const pmix_proc_t *p, char **keys,
|
||||
|
||||
/* convert the nspace/rank to an opal_process_name_t */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&proc.jobid, p->nspace))) {
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
proc.vpid = pmix2x_convert_rank(p->rank);
|
||||
proc.vpid = ext2x_convert_rank(p->rank);
|
||||
|
||||
opal_output_verbose(3, opal_pmix_base_framework.framework_output,
|
||||
"%s CLIENT %s CALLED LOOKUP",
|
||||
@ -529,7 +529,7 @@ static pmix_status_t server_lookup_fn(const pmix_proc_t *p, char **keys,
|
||||
OPAL_NAME_PRINT(proc));
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->lkupcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -538,9 +538,9 @@ static pmix_status_t server_lookup_fn(const pmix_proc_t *p, char **keys,
|
||||
iptr = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &iptr->super);
|
||||
iptr->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(iptr, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(iptr, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -550,7 +550,7 @@ static pmix_status_t server_lookup_fn(const pmix_proc_t *p, char **keys,
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
|
||||
@ -559,7 +559,7 @@ static pmix_status_t server_unpublish_fn(const pmix_proc_t *p, char **keys,
|
||||
pmix_op_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
int rc;
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t proc;
|
||||
opal_value_t *iptr;
|
||||
size_t n;
|
||||
@ -570,9 +570,9 @@ static pmix_status_t server_unpublish_fn(const pmix_proc_t *p, char **keys,
|
||||
|
||||
/* convert the nspace/rank to an opal_process_name_t */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&proc.jobid, p->nspace))) {
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
proc.vpid = pmix2x_convert_rank(p->rank);
|
||||
proc.vpid = ext2x_convert_rank(p->rank);
|
||||
|
||||
opal_output_verbose(3, opal_pmix_base_framework.framework_output,
|
||||
"%s CLIENT %s CALLED UNPUBLISH",
|
||||
@ -580,7 +580,7 @@ static pmix_status_t server_unpublish_fn(const pmix_proc_t *p, char **keys,
|
||||
OPAL_NAME_PRINT(proc));
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -589,9 +589,9 @@ static pmix_status_t server_unpublish_fn(const pmix_proc_t *p, char **keys,
|
||||
iptr = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &iptr->super);
|
||||
iptr->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(iptr, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(iptr, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -601,17 +601,17 @@ static pmix_status_t server_unpublish_fn(const pmix_proc_t *p, char **keys,
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static void opal_spncbfunc(int status, opal_jobid_t jobid, void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy = (pmix2x_opalcaddy_t*)cbdata;
|
||||
ext2x_opalcaddy_t *opalcaddy = (ext2x_opalcaddy_t*)cbdata;
|
||||
pmix_status_t rc;
|
||||
char nspace[PMIX_MAX_NSLEN];
|
||||
|
||||
if (NULL != opalcaddy->spwncbfunc) {
|
||||
rc = pmix2x_convert_opalrc(status);
|
||||
rc = ext2x_convert_opalrc(status);
|
||||
/* convert the jobid */
|
||||
(void)opal_snprintf_jobid(nspace, PMIX_MAX_NSLEN, jobid);
|
||||
opalcaddy->spwncbfunc(rc, nspace, opalcaddy->cbdata);
|
||||
@ -624,7 +624,7 @@ static pmix_status_t server_spawn_fn(const pmix_proc_t *p,
|
||||
const pmix_app_t apps[], size_t napps,
|
||||
pmix_spawn_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t proc;
|
||||
opal_pmix_app_t *app;
|
||||
opal_value_t *oinfo;
|
||||
@ -637,12 +637,12 @@ static pmix_status_t server_spawn_fn(const pmix_proc_t *p,
|
||||
|
||||
/* convert the nspace/rank to an opal_process_name_t */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&proc.jobid, p->nspace))) {
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
proc.vpid = pmix2x_convert_rank(p->rank);
|
||||
proc.vpid = ext2x_convert_rank(p->rank);
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->spwncbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -651,9 +651,9 @@ static pmix_status_t server_spawn_fn(const pmix_proc_t *p,
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
oinfo->key = strdup(job_info[k].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &job_info[k].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &job_info[k].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -678,9 +678,9 @@ static pmix_status_t server_spawn_fn(const pmix_proc_t *p,
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&app->info, &oinfo->super);
|
||||
oinfo->key = strdup(apps[n].info[k].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &apps[n].info[k].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &apps[n].info[k].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -692,7 +692,7 @@ static pmix_status_t server_spawn_fn(const pmix_proc_t *p,
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
|
||||
@ -701,7 +701,7 @@ static pmix_status_t server_connect_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
pmix_op_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
int rc;
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_namelist_t *nm;
|
||||
size_t n;
|
||||
opal_value_t *oinfo;
|
||||
@ -711,7 +711,7 @@ static pmix_status_t server_connect_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
}
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -721,9 +721,9 @@ static pmix_status_t server_connect_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
opal_list_append(&opalcaddy->procs, &nm->super);
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&nm->name.jobid, procs[n].nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
nm->name.vpid = pmix2x_convert_rank(procs[n].rank);
|
||||
nm->name.vpid = ext2x_convert_rank(procs[n].rank);
|
||||
}
|
||||
|
||||
/* convert the info */
|
||||
@ -731,9 +731,9 @@ static pmix_status_t server_connect_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
oinfo->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -743,7 +743,7 @@ static pmix_status_t server_connect_fn(const pmix_proc_t procs[], size_t nprocs,
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
|
||||
@ -752,7 +752,7 @@ static pmix_status_t server_disconnect_fn(const pmix_proc_t procs[], size_t npro
|
||||
pmix_op_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
int rc;
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_namelist_t *nm;
|
||||
size_t n;
|
||||
opal_value_t *oinfo;
|
||||
@ -762,7 +762,7 @@ static pmix_status_t server_disconnect_fn(const pmix_proc_t procs[], size_t npro
|
||||
}
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -772,9 +772,9 @@ static pmix_status_t server_disconnect_fn(const pmix_proc_t procs[], size_t npro
|
||||
opal_list_append(&opalcaddy->procs, &nm->super);
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&nm->name.jobid, procs[n].nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
nm->name.vpid = pmix2x_convert_rank(procs[n].rank);
|
||||
nm->name.vpid = ext2x_convert_rank(procs[n].rank);
|
||||
}
|
||||
|
||||
/* convert the info */
|
||||
@ -782,9 +782,9 @@ static pmix_status_t server_disconnect_fn(const pmix_proc_t procs[], size_t npro
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
oinfo->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -794,14 +794,14 @@ static pmix_status_t server_disconnect_fn(const pmix_proc_t procs[], size_t npro
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static pmix_status_t server_register_events(pmix_status_t *codes, size_t ncodes,
|
||||
const pmix_info_t info[], size_t ninfo,
|
||||
pmix_op_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
size_t n;
|
||||
opal_value_t *oinfo;
|
||||
int rc;
|
||||
@ -811,7 +811,7 @@ static pmix_status_t server_register_events(pmix_status_t *codes, size_t ncodes,
|
||||
OPAL_NAME_PRINT(OPAL_PROC_MY_NAME));
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -820,9 +820,9 @@ static pmix_status_t server_register_events(pmix_status_t *codes, size_t ncodes,
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
oinfo->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -832,7 +832,7 @@ static pmix_status_t server_register_events(pmix_status_t *codes, size_t ncodes,
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static pmix_status_t server_deregister_events(pmix_status_t *codes, size_t ncodes,
|
||||
@ -850,7 +850,7 @@ static pmix_status_t server_notify_event(pmix_status_t code,
|
||||
pmix_info_t info[], size_t ninfo,
|
||||
pmix_op_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t src;
|
||||
size_t n;
|
||||
opal_value_t *oinfo;
|
||||
@ -861,19 +861,19 @@ static pmix_status_t server_notify_event(pmix_status_t code,
|
||||
}
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
/* convert the code */
|
||||
status = pmix2x_convert_rc(code);
|
||||
status = ext2x_convert_rc(code);
|
||||
|
||||
/* convert the source */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&src.jobid, source->nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
src.vpid = pmix2x_convert_rank(source->rank);
|
||||
src.vpid = ext2x_convert_rank(source->rank);
|
||||
|
||||
opal_output_verbose(3, opal_pmix_base_framework.framework_output,
|
||||
"%s CLIENT %s CALLED NOTIFY",
|
||||
@ -887,9 +887,9 @@ static pmix_status_t server_notify_event(pmix_status_t code,
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
oinfo->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -898,12 +898,12 @@ static pmix_status_t server_notify_event(pmix_status_t code,
|
||||
opal_opcbfunc, opalcaddy))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static void _info_rel(void *cbdata)
|
||||
{
|
||||
pmix2x_opcaddy_t *pcaddy = (pmix2x_opcaddy_t*)cbdata;
|
||||
ext2x_opcaddy_t *pcaddy = (ext2x_opcaddy_t*)cbdata;
|
||||
|
||||
OBJ_RELEASE(pcaddy);
|
||||
}
|
||||
@ -913,15 +913,15 @@ static void info_cbfunc(int status,
|
||||
opal_pmix_release_cbfunc_t release_fn,
|
||||
void *release_cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy = (pmix2x_opalcaddy_t*)cbdata;
|
||||
pmix2x_opcaddy_t *pcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy = (ext2x_opalcaddy_t*)cbdata;
|
||||
ext2x_opcaddy_t *pcaddy;
|
||||
opal_value_t *kv;
|
||||
size_t n;
|
||||
|
||||
pcaddy = OBJ_NEW(pmix2x_opcaddy_t);
|
||||
pcaddy = OBJ_NEW(ext2x_opcaddy_t);
|
||||
|
||||
/* convert the status */
|
||||
pcaddy->status = pmix2x_convert_opalrc(status);
|
||||
pcaddy->status = ext2x_convert_opalrc(status);
|
||||
|
||||
/* convert the list to a pmix_info_t array */
|
||||
if (NULL != info && 0 < (pcaddy->ninfo = opal_list_get_size(info))) {
|
||||
@ -929,7 +929,7 @@ static void info_cbfunc(int status,
|
||||
n = 0;
|
||||
OPAL_LIST_FOREACH(kv, info, opal_value_t) {
|
||||
(void)strncpy(pcaddy->info[n].key, kv->key, PMIX_MAX_KEYLEN);
|
||||
pmix2x_value_load(&pcaddy->info[n].value, kv);
|
||||
ext2x_value_load(&pcaddy->info[n].value, kv);
|
||||
}
|
||||
}
|
||||
/* we are done with the incoming data */
|
||||
@ -950,7 +950,7 @@ static pmix_status_t server_query(pmix_proc_t *proct,
|
||||
pmix_info_cbfunc_t cbfunc,
|
||||
void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t requestor;
|
||||
int rc;
|
||||
size_t n, m;
|
||||
@ -962,16 +962,16 @@ static pmix_status_t server_query(pmix_proc_t *proct,
|
||||
}
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->infocbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
/* convert the requestor */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&requestor.jobid, proct->nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
requestor.vpid = pmix2x_convert_rank(proct->rank);
|
||||
requestor.vpid = ext2x_convert_rank(proct->rank);
|
||||
|
||||
opal_output_verbose(3, opal_pmix_base_framework.framework_output,
|
||||
"%s CLIENT %s CALLED QUERY",
|
||||
@ -989,9 +989,9 @@ static pmix_status_t server_query(pmix_proc_t *proct,
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&q->qualifiers, &oinfo->super);
|
||||
oinfo->key = strdup(queries[n].qualifiers[m].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &queries[n].qualifiers[m].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &queries[n].qualifiers[m].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1003,32 +1003,32 @@ static pmix_status_t server_query(pmix_proc_t *proct,
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
}
|
||||
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
static void toolcbfunc(int status,
|
||||
opal_process_name_t proc,
|
||||
void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy = (pmix2x_opalcaddy_t*)cbdata;
|
||||
ext2x_opalcaddy_t *opalcaddy = (ext2x_opalcaddy_t*)cbdata;
|
||||
pmix_status_t rc;
|
||||
pmix_proc_t p;
|
||||
opal_pmix2x_jobid_trkr_t *job;
|
||||
opal_ext2x_jobid_trkr_t *job;
|
||||
|
||||
/* convert the status */
|
||||
rc = pmix2x_convert_opalrc(status);
|
||||
rc = ext2x_convert_opalrc(status);
|
||||
|
||||
memset(&p, 0, sizeof(pmix_proc_t));
|
||||
if (OPAL_SUCCESS == status) {
|
||||
/* convert the process name */
|
||||
(void)opal_snprintf_jobid(p.nspace, PMIX_MAX_NSLEN, proc.jobid);
|
||||
p.rank = pmix2x_convert_opalrank(proc.vpid);
|
||||
p.rank = ext2x_convert_opalrank(proc.vpid);
|
||||
/* store this job in our list of known nspaces */
|
||||
job = OBJ_NEW(opal_pmix2x_jobid_trkr_t);
|
||||
job = OBJ_NEW(opal_ext2x_jobid_trkr_t);
|
||||
(void)strncpy(job->nspace, p.nspace, PMIX_MAX_NSLEN);
|
||||
job->jobid = proc.jobid;
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
opal_list_append(&mca_pmix_pmix2x_component.jobids, &job->super);
|
||||
opal_list_append(&mca_pmix_ext2x_component.jobids, &job->super);
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
}
|
||||
|
||||
@ -1043,14 +1043,14 @@ static void server_tool_connection(pmix_info_t *info, size_t ninfo,
|
||||
pmix_tool_connection_cbfunc_t cbfunc,
|
||||
void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
size_t n;
|
||||
opal_value_t *oinfo;
|
||||
int rc;
|
||||
pmix_status_t err;
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->toolcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
@ -1059,9 +1059,9 @@ static void server_tool_connection(pmix_info_t *info, size_t ninfo,
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
oinfo->key = strdup(info[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &info[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &info[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
err = pmix2x_convert_opalrc(rc);
|
||||
err = ext2x_convert_opalrc(rc);
|
||||
if (NULL != cbfunc) {
|
||||
cbfunc(err, NULL, cbdata);
|
||||
}
|
||||
@ -1077,7 +1077,7 @@ static void server_log(const pmix_proc_t *proct,
|
||||
const pmix_info_t directives[], size_t ndirs,
|
||||
pmix_op_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t requestor;
|
||||
int rc;
|
||||
size_t n;
|
||||
@ -1092,20 +1092,20 @@ static void server_log(const pmix_proc_t *proct,
|
||||
}
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->opcbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
/* convert the requestor */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&requestor.jobid, proct->nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
ret = pmix2x_convert_opalrc(rc);
|
||||
ret = ext2x_convert_opalrc(rc);
|
||||
if (NULL != cbfunc) {
|
||||
cbfunc(ret, cbdata);
|
||||
}
|
||||
return;
|
||||
}
|
||||
requestor.vpid = pmix2x_convert_rank(proct->rank);
|
||||
requestor.vpid = ext2x_convert_rank(proct->rank);
|
||||
|
||||
/* convert the data */
|
||||
for (n=0; n < ndata; n++) {
|
||||
@ -1114,9 +1114,9 @@ static void server_log(const pmix_proc_t *proct,
|
||||
/* we "borrow" the info field of the caddy as we and the
|
||||
* server function both agree on what will be there */
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &data[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &data[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
ret = pmix2x_convert_opalrc(rc);
|
||||
ret = ext2x_convert_opalrc(rc);
|
||||
if (NULL != cbfunc) {
|
||||
cbfunc(ret, cbdata);
|
||||
}
|
||||
@ -1130,9 +1130,9 @@ static void server_log(const pmix_proc_t *proct,
|
||||
/* we "borrow" the apps field of the caddy as we and the
|
||||
* server function both agree on what will be there */
|
||||
opal_list_append(&opalcaddy->apps, &oinfo->super);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &directives[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &directives[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
ret = pmix2x_convert_opalrc(rc);
|
||||
ret = ext2x_convert_opalrc(rc);
|
||||
if (NULL != cbfunc) {
|
||||
cbfunc(ret, cbdata);
|
||||
}
|
||||
@ -1152,7 +1152,7 @@ static pmix_status_t server_allocate(const pmix_proc_t *proct,
|
||||
const pmix_info_t data[], size_t ndata,
|
||||
pmix_info_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t requestor;
|
||||
int rc;
|
||||
size_t n;
|
||||
@ -1164,27 +1164,27 @@ static pmix_status_t server_allocate(const pmix_proc_t *proct,
|
||||
}
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->infocbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
/* convert the requestor */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&requestor.jobid, proct->nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
requestor.vpid = pmix2x_convert_rank(proct->rank);
|
||||
requestor.vpid = ext2x_convert_rank(proct->rank);
|
||||
|
||||
/* convert the directive */
|
||||
odir = pmix2x_convert_allocdir(directive);
|
||||
odir = ext2x_convert_allocdir(directive);
|
||||
|
||||
/* convert the data */
|
||||
for (n=0; n < ndata; n++) {
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &data[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &data[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1193,7 +1193,7 @@ static pmix_status_t server_allocate(const pmix_proc_t *proct,
|
||||
&opalcaddy->info,
|
||||
info_cbfunc, opalcaddy))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
return PMIX_SUCCESS;
|
||||
@ -1205,7 +1205,7 @@ static pmix_status_t server_job_control(const pmix_proc_t *proct,
|
||||
const pmix_info_t directives[], size_t ndirs,
|
||||
pmix_info_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
pmix2x_opalcaddy_t *opalcaddy;
|
||||
ext2x_opalcaddy_t *opalcaddy;
|
||||
opal_process_name_t requestor;
|
||||
int rc;
|
||||
size_t n;
|
||||
@ -1217,16 +1217,16 @@ static pmix_status_t server_job_control(const pmix_proc_t *proct,
|
||||
}
|
||||
|
||||
/* setup the caddy */
|
||||
opalcaddy = OBJ_NEW(pmix2x_opalcaddy_t);
|
||||
opalcaddy = OBJ_NEW(ext2x_opalcaddy_t);
|
||||
opalcaddy->infocbfunc = cbfunc;
|
||||
opalcaddy->cbdata = cbdata;
|
||||
|
||||
/* convert the requestor */
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&requestor.jobid, proct->nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
requestor.vpid = pmix2x_convert_rank(proct->rank);
|
||||
requestor.vpid = ext2x_convert_rank(proct->rank);
|
||||
|
||||
/* convert the targets */
|
||||
for (n=0; n < ntargets; n++) {
|
||||
@ -1234,9 +1234,9 @@ static pmix_status_t server_job_control(const pmix_proc_t *proct,
|
||||
opal_list_append(&opalcaddy->procs, &nm->super);
|
||||
if (OPAL_SUCCESS != (rc = opal_convert_string_to_jobid(&nm->name.jobid, targets[n].nspace))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
nm->name.vpid = pmix2x_convert_rank(targets[n].rank);
|
||||
nm->name.vpid = ext2x_convert_rank(targets[n].rank);
|
||||
}
|
||||
|
||||
/* convert the directives */
|
||||
@ -1244,9 +1244,9 @@ static pmix_status_t server_job_control(const pmix_proc_t *proct,
|
||||
oinfo = OBJ_NEW(opal_value_t);
|
||||
opal_list_append(&opalcaddy->info, &oinfo->super);
|
||||
oinfo->key = strdup(directives[n].key);
|
||||
if (OPAL_SUCCESS != (rc = pmix2x_value_unload(oinfo, &directives[n].value))) {
|
||||
if (OPAL_SUCCESS != (rc = ext2x_value_unload(oinfo, &directives[n].value))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1256,7 +1256,7 @@ static pmix_status_t server_job_control(const pmix_proc_t *proct,
|
||||
&opalcaddy->info,
|
||||
info_cbfunc, opalcaddy))) {
|
||||
OBJ_RELEASE(opalcaddy);
|
||||
return pmix2x_convert_opalrc(rc);
|
||||
return ext2x_convert_opalrc(rc);
|
||||
}
|
||||
|
||||
return PMIX_SUCCESS;
|
560
opal/mca/pmix/ext2x/ext2x_server_south.c
Обычный файл
560
opal/mca/pmix/ext2x/ext2x_server_south.c
Обычный файл
@ -0,0 +1,560 @@
|
||||
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2014-2017 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2014-2016 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2014-2017 Mellanox Technologies, Inc.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2017 Los Alamos National Security, LLC. All rights
|
||||
* reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
*
|
||||
* $HEADER$
|
||||
*/
|
||||
|
||||
#include "opal_config.h"
|
||||
#include "opal/constants.h"
|
||||
#include "opal/types.h"
|
||||
|
||||
#ifdef HAVE_STRING_H
|
||||
#include <string.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "opal/dss/dss.h"
|
||||
#include "opal/mca/event/event.h"
|
||||
#include "opal/mca/hwloc/base/base.h"
|
||||
#include "opal/runtime/opal.h"
|
||||
#include "opal/runtime/opal_progress_threads.h"
|
||||
#include "opal/threads/threads.h"
|
||||
#include "opal/util/argv.h"
|
||||
#include "opal/util/error.h"
|
||||
#include "opal/util/output.h"
|
||||
#include "opal/util/opal_environ.h"
|
||||
#include "opal/util/proc.h"
|
||||
#include "opal/util/show_help.h"
|
||||
#include "opal/mca/pmix/base/base.h"
|
||||
#include "ext2x.h"
|
||||
|
||||
#include "pmix.h"
|
||||
#include "pmix_server.h"
|
||||
|
||||
/**** S.O.U.T.H.B.O.U.N.D I.N.T.E.R.F.A.C.E.S ****/
|
||||
|
||||
/* These are the interfaces used by the OMPI/ORTE/OPAL layer to call
|
||||
* down into the embedded PMIx server. */
|
||||
|
||||
extern pmix_server_module_t mymodule;
|
||||
extern opal_pmix_server_module_t *host_module;
|
||||
static char *dbgvalue=NULL;
|
||||
|
||||
static void errreg_cbfunc (pmix_status_t status,
|
||||
size_t errhandler_ref,
|
||||
void *cbdata)
|
||||
{
|
||||
opal_ext2x_event_t *ev = (opal_ext2x_event_t*)cbdata;
|
||||
|
||||
OPAL_ACQUIRE_OBJECT(ev);
|
||||
ev->index = errhandler_ref;
|
||||
opal_output_verbose(5, opal_pmix_base_framework.framework_output,
|
||||
"PMIX server errreg_cbfunc - error handler registered status=%d, reference=%lu",
|
||||
status, (unsigned long)errhandler_ref);
|
||||
OPAL_POST_OBJECT(ev);
|
||||
OPAL_PMIX_WAKEUP_THREAD(&ev->lock);
|
||||
}
|
||||
|
||||
static void opcbfunc(pmix_status_t status, void *cbdata)
|
||||
{
|
||||
ext2x_opcaddy_t *op = (ext2x_opcaddy_t*)cbdata;
|
||||
|
||||
OPAL_ACQUIRE_OBJECT(op);
|
||||
|
||||
if (NULL != op->opcbfunc) {
|
||||
op->opcbfunc(ext2x_convert_rc(status), op->cbdata);
|
||||
}
|
||||
OBJ_RELEASE(op);
|
||||
}
|
||||
|
||||
static void lkcbfunc(pmix_status_t status, void *cbdata)
|
||||
{
|
||||
opal_pmix_lock_t *lk = (opal_pmix_lock_t*)cbdata;
|
||||
|
||||
OPAL_POST_OBJECT(lk);
|
||||
OPAL_PMIX_WAKEUP_THREAD(lk);
|
||||
}
|
||||
|
||||
int ext2x_server_init(opal_pmix_server_module_t *module,
|
||||
opal_list_t *info)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
int dbg;
|
||||
opal_value_t *kv;
|
||||
pmix_info_t *pinfo;
|
||||
size_t sz, n;
|
||||
opal_ext2x_event_t *event;
|
||||
opal_ext2x_jobid_trkr_t *job;
|
||||
opal_pmix_lock_t lk;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
if (0 == opal_pmix_base.initialized) {
|
||||
if (0 < (dbg = opal_output_get_verbosity(opal_pmix_base_framework.framework_output))) {
|
||||
asprintf(&dbgvalue, "PMIX_DEBUG=%d", dbg);
|
||||
putenv(dbgvalue);
|
||||
}
|
||||
/* check the evars for a mismatch */
|
||||
if (OPAL_SUCCESS != (dbg = opal_pmix_ext2x_check_evars())) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
return dbg;
|
||||
}
|
||||
}
|
||||
++opal_pmix_base.initialized;
|
||||
|
||||
/* convert the list to an array of pmix_info_t */
|
||||
sz = 2 + ((NULL==info)?0:opal_list_get_size(info));
|
||||
PMIX_INFO_CREATE(pinfo, sz);
|
||||
n = 0;
|
||||
if (NULL != info) {
|
||||
OPAL_LIST_FOREACH(kv, info, opal_value_t) {
|
||||
(void)strncpy(pinfo[n].key, kv->key, PMIX_MAX_KEYLEN);
|
||||
ext2x_value_load(&pinfo[n].value, kv);
|
||||
++n;
|
||||
}
|
||||
}
|
||||
|
||||
/* insert ourselves into our list of jobids - it will be the
|
||||
* first, and so we'll check it first */
|
||||
job = OBJ_NEW(opal_ext2x_jobid_trkr_t);
|
||||
(void)opal_snprintf_jobid(job->nspace, PMIX_MAX_NSLEN, OPAL_PROC_MY_NAME.jobid);
|
||||
job->jobid = OPAL_PROC_MY_NAME.jobid;
|
||||
opal_list_append(&mca_pmix_ext2x_component.jobids, &job->super);
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
/* add our nspace and rank to the array going down to the PMIx server */
|
||||
PMIX_INFO_LOAD(&pinfo[sz-2], PMIX_SERVER_NSPACE, job->nspace, PMIX_STRING);
|
||||
PMIX_INFO_LOAD(&pinfo[sz-1], PMIX_SERVER_RANK, &OPAL_PROC_MY_NAME.vpid, PMIX_PROC_RANK);
|
||||
if (PMIX_SUCCESS != (rc = PMIx_server_init(&mymodule, pinfo, sz))) {
|
||||
PMIX_INFO_FREE(pinfo, sz);
|
||||
return ext2x_convert_rc(rc);
|
||||
}
|
||||
PMIX_INFO_FREE(pinfo, sz);
|
||||
|
||||
/* record the host module */
|
||||
host_module = module;
|
||||
|
||||
/* register the default event handler */
|
||||
event = OBJ_NEW(opal_ext2x_event_t);
|
||||
opal_list_append(&mca_pmix_ext2x_component.events, &event->super);
|
||||
PMIX_INFO_CREATE(pinfo, 1);
|
||||
PMIX_INFO_LOAD(&pinfo[0], PMIX_EVENT_HDLR_NAME, "OPAL-PMIX-2X-SERVER-DEFAULT", PMIX_STRING);
|
||||
PMIx_Register_event_handler(NULL, 0, pinfo, 1, ext2x_event_hdlr, errreg_cbfunc, (void*)event);
|
||||
OPAL_PMIX_WAIT_THREAD(&event->lock);
|
||||
PMIX_INFO_FREE(pinfo, 1);
|
||||
|
||||
/* as we might want to use some client-side functions, be sure
|
||||
* to register our own nspace */
|
||||
OPAL_PMIX_CONSTRUCT_LOCK(&lk);
|
||||
PMIX_INFO_CREATE(pinfo, 1);
|
||||
PMIX_INFO_LOAD(&pinfo[0], PMIX_REGISTER_NODATA, NULL, PMIX_BOOL);
|
||||
PMIx_server_register_nspace(job->nspace, 1, pinfo, 1, lkcbfunc, (void*)&lk);
|
||||
OPAL_PMIX_WAIT_THREAD(&lk);
|
||||
OPAL_PMIX_DESTRUCT_LOCK(&lk);
|
||||
PMIX_INFO_FREE(pinfo, 1);
|
||||
|
||||
return OPAL_SUCCESS;
|
||||
}
|
||||
|
||||
static void dereg_cbfunc(pmix_status_t st, void *cbdata)
|
||||
{
|
||||
opal_ext2x_event_t *ev = (opal_ext2x_event_t*)cbdata;
|
||||
OPAL_PMIX_WAKEUP_THREAD(&ev->lock);
|
||||
}
|
||||
|
||||
int ext2x_server_finalize(void)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
opal_ext2x_event_t *event, *ev2;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
--opal_pmix_base.initialized;
|
||||
|
||||
if (0 < opal_pmix_base.initialized) {
|
||||
/* deregister all event handlers */
|
||||
OPAL_LIST_FOREACH_SAFE(event, ev2, &mca_pmix_ext2x_component.events, opal_ext2x_event_t) {
|
||||
OPAL_PMIX_DESTRUCT_LOCK(&event->lock);
|
||||
OPAL_PMIX_CONSTRUCT_LOCK(&event->lock);
|
||||
PMIx_Deregister_event_handler(event->index, dereg_cbfunc, (void*)event);
|
||||
OPAL_PMIX_WAIT_THREAD(&event->lock);
|
||||
opal_list_remove_item(&mca_pmix_ext2x_component.events, &event->super);
|
||||
OBJ_RELEASE(event);
|
||||
}
|
||||
}
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
rc = PMIx_server_finalize();
|
||||
return ext2x_convert_rc(rc);
|
||||
}
|
||||
|
||||
int ext2x_server_gen_regex(const char *input, char **regex)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
if (0 >= opal_pmix_base.initialized) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
return OPAL_ERR_NOT_INITIALIZED;
|
||||
}
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
rc = PMIx_generate_regex(input, regex);
|
||||
return ext2x_convert_rc(rc);
|
||||
}
|
||||
|
||||
|
||||
int ext2x_server_gen_ppn(const char *input, char **ppn)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
if (0 >= opal_pmix_base.initialized) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
return OPAL_ERR_NOT_INITIALIZED;
|
||||
}
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
rc = PMIx_generate_ppn(input, ppn);
|
||||
return ext2x_convert_rc(rc);
|
||||
}
|
||||
|
||||
int ext2x_server_register_nspace(opal_jobid_t jobid,
|
||||
int nlocalprocs,
|
||||
opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata)
|
||||
{
|
||||
opal_value_t *kv, *k2;
|
||||
pmix_info_t *pinfo = NULL, *pmap;
|
||||
size_t sz, szmap, m, n;
|
||||
char nspace[PMIX_MAX_NSLEN];
|
||||
pmix_status_t rc;
|
||||
opal_list_t *pmapinfo;
|
||||
opal_ext2x_jobid_trkr_t *job;
|
||||
opal_pmix_lock_t lock;
|
||||
int ret;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
if (0 >= opal_pmix_base.initialized) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
return OPAL_ERR_NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
/* convert the jobid */
|
||||
(void)opal_snprintf_jobid(nspace, PMIX_MAX_NSLEN, jobid);
|
||||
|
||||
/* store this job in our list of known nspaces */
|
||||
job = OBJ_NEW(opal_ext2x_jobid_trkr_t);
|
||||
(void)strncpy(job->nspace, nspace, PMIX_MAX_NSLEN);
|
||||
job->jobid = jobid;
|
||||
opal_list_append(&mca_pmix_ext2x_component.jobids, &job->super);
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
/* convert the list to an array of pmix_info_t */
|
||||
if (NULL != info && 0 < (sz = opal_list_get_size(info))) {
|
||||
PMIX_INFO_CREATE(pinfo, sz);
|
||||
n = 0;
|
||||
OPAL_LIST_FOREACH(kv, info, opal_value_t) {
|
||||
(void)strncpy(pinfo[n].key, kv->key, PMIX_MAX_KEYLEN);
|
||||
if (0 == strcmp(kv->key, OPAL_PMIX_PROC_DATA)) {
|
||||
pinfo[n].value.type = PMIX_DATA_ARRAY;
|
||||
/* the value contains a list of values - convert
|
||||
* that list to another array */
|
||||
pmapinfo = (opal_list_t*)kv->data.ptr;
|
||||
szmap = opal_list_get_size(pmapinfo);
|
||||
if (0 < szmap) {
|
||||
PMIX_INFO_CREATE(pmap, szmap);
|
||||
pinfo[n].value.data.darray = (pmix_data_array_t*)calloc(1, sizeof(pmix_data_array_t));
|
||||
pinfo[n].value.data.darray->type = PMIX_INFO;
|
||||
pinfo[n].value.data.darray->array = (struct pmix_info_t*)pmap;
|
||||
pinfo[n].value.data.darray->size = szmap;
|
||||
m = 0;
|
||||
OPAL_LIST_FOREACH(k2, pmapinfo, opal_value_t) {
|
||||
(void)strncpy(pmap[m].key, k2->key, PMIX_MAX_KEYLEN);
|
||||
ext2x_value_load(&pmap[m].value, k2);
|
||||
++m;
|
||||
}
|
||||
}
|
||||
OPAL_LIST_RELEASE(pmapinfo);
|
||||
} else {
|
||||
ext2x_value_load(&pinfo[n].value, kv);
|
||||
}
|
||||
++n;
|
||||
}
|
||||
} else {
|
||||
sz = 0;
|
||||
pinfo = NULL;
|
||||
}
|
||||
|
||||
OPAL_PMIX_CONSTRUCT_LOCK(&lock);
|
||||
rc = PMIx_server_register_nspace(nspace, nlocalprocs, pinfo, sz,
|
||||
lkcbfunc, (void*)&lock);
|
||||
if (PMIX_SUCCESS == rc) {
|
||||
OPAL_PMIX_WAIT_THREAD(&lock);
|
||||
}
|
||||
OPAL_PMIX_DESTRUCT_LOCK(&lock);
|
||||
|
||||
if (NULL != pinfo) {
|
||||
PMIX_INFO_FREE(pinfo, sz);
|
||||
}
|
||||
|
||||
ret = ext2x_convert_rc(rc);
|
||||
|
||||
/* release the caller */
|
||||
if (NULL != cbfunc) {
|
||||
cbfunc(ret, cbdata);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ext2x_server_deregister_nspace(opal_jobid_t jobid,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata)
|
||||
{
|
||||
opal_ext2x_jobid_trkr_t *jptr;
|
||||
opal_pmix_lock_t lock;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
if (0 >= opal_pmix_base.initialized) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
/* release the caller */
|
||||
if (NULL != cbfunc) {
|
||||
cbfunc(OPAL_ERR_NOT_INITIALIZED, cbdata);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* if we don't already have it, we can ignore this */
|
||||
OPAL_LIST_FOREACH(jptr, &mca_pmix_ext2x_component.jobids, opal_ext2x_jobid_trkr_t) {
|
||||
if (jptr->jobid == jobid) {
|
||||
/* found it - tell the server to deregister */
|
||||
OPAL_PMIX_CONSTRUCT_LOCK(&lock);
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
PMIx_server_deregister_nspace(jptr->nspace, lkcbfunc, (void*)&lock);
|
||||
OPAL_PMIX_WAIT_THREAD(&lock);
|
||||
OPAL_PMIX_DESTRUCT_LOCK(&lock);
|
||||
/* now get rid of it from our list */
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
opal_list_remove_item(&mca_pmix_ext2x_component.jobids, &jptr->super);
|
||||
OBJ_RELEASE(jptr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
/* release the caller */
|
||||
if (NULL != cbfunc) {
|
||||
cbfunc(OPAL_SUCCESS, cbdata);
|
||||
}
|
||||
}
|
||||
|
||||
int ext2x_server_register_client(const opal_process_name_t *proc,
|
||||
uid_t uid, gid_t gid,
|
||||
void *server_object,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
pmix_proc_t p;
|
||||
opal_pmix_lock_t lock;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
if (0 >= opal_pmix_base.initialized) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
return OPAL_ERR_NOT_INITIALIZED;
|
||||
}
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
/* convert the jobid */
|
||||
(void)opal_snprintf_jobid(p.nspace, PMIX_MAX_NSLEN, proc->jobid);
|
||||
p.rank = ext2x_convert_opalrank(proc->vpid);
|
||||
|
||||
OPAL_PMIX_CONSTRUCT_LOCK(&lock);
|
||||
rc = PMIx_server_register_client(&p, uid, gid, server_object,
|
||||
lkcbfunc, (void*)&lock);
|
||||
if (PMIX_SUCCESS == rc) {
|
||||
OPAL_PMIX_WAIT_THREAD(&lock);
|
||||
}
|
||||
OPAL_PMIX_DESTRUCT_LOCK(&lock);
|
||||
return ext2x_convert_rc(rc);
|
||||
}
|
||||
|
||||
/* tell the local PMIx server to cleanup this client as it is
|
||||
* done executing */
|
||||
void ext2x_server_deregister_client(const opal_process_name_t *proc,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata)
|
||||
{
|
||||
opal_ext2x_jobid_trkr_t *jptr;
|
||||
pmix_proc_t p;
|
||||
opal_pmix_lock_t lock;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
if (0 >= opal_pmix_base.initialized) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
if (NULL != cbfunc) {
|
||||
cbfunc(OPAL_ERR_NOT_INITIALIZED, cbdata);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* if we don't already have it, we can ignore this */
|
||||
OPAL_LIST_FOREACH(jptr, &mca_pmix_ext2x_component.jobids, opal_ext2x_jobid_trkr_t) {
|
||||
if (jptr->jobid == proc->jobid) {
|
||||
/* found it - tell the server to deregister */
|
||||
(void)strncpy(p.nspace, jptr->nspace, PMIX_MAX_NSLEN);
|
||||
p.rank = ext2x_convert_opalrank(proc->vpid);
|
||||
OPAL_PMIX_CONSTRUCT_LOCK(&lock);
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
PMIx_server_deregister_client(&p, lkcbfunc, (void*)&lock);
|
||||
OPAL_PMIX_WAIT_THREAD(&lock);
|
||||
OPAL_PMIX_DESTRUCT_LOCK(&lock);
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
break;
|
||||
}
|
||||
}
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
if (NULL != cbfunc) {
|
||||
cbfunc(OPAL_SUCCESS, cbdata);
|
||||
}
|
||||
}
|
||||
|
||||
/* have the local PMIx server setup the environment for this client */
|
||||
int ext2x_server_setup_fork(const opal_process_name_t *proc, char ***env)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
pmix_proc_t p;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
if (0 >= opal_pmix_base.initialized) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
return OPAL_ERR_NOT_INITIALIZED;
|
||||
}
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
/* convert the jobid */
|
||||
(void)opal_snprintf_jobid(p.nspace, PMIX_MAX_NSLEN, proc->jobid);
|
||||
p.rank = ext2x_convert_opalrank(proc->vpid);
|
||||
|
||||
rc = PMIx_server_setup_fork(&p, env);
|
||||
return ext2x_convert_rc(rc);
|
||||
}
|
||||
|
||||
/* this is the call back up from the embedded PMIx server that
|
||||
* will contain the returned data. Note that the embedded server
|
||||
* "owns" the data and will free it upon return from this function */
|
||||
static void dmdx_response(pmix_status_t status, char *data, size_t sz, void *cbdata)
|
||||
{
|
||||
int rc;
|
||||
ext2x_opcaddy_t *op = (ext2x_opcaddy_t*)cbdata;
|
||||
|
||||
rc = ext2x_convert_rc(status);
|
||||
if (NULL != op->mdxcbfunc) {
|
||||
op->mdxcbfunc(rc, data, sz, op->cbdata, NULL, NULL);
|
||||
}
|
||||
OBJ_RELEASE(op);
|
||||
}
|
||||
|
||||
/* request modex data for a local proc from the PMIx server */
|
||||
int ext2x_server_dmodex(const opal_process_name_t *proc,
|
||||
opal_pmix_modex_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
ext2x_opcaddy_t *op;
|
||||
pmix_status_t rc;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
if (0 >= opal_pmix_base.initialized) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
return OPAL_ERR_NOT_INITIALIZED;
|
||||
}
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
/* setup the caddy */
|
||||
op = OBJ_NEW(ext2x_opcaddy_t);
|
||||
op->mdxcbfunc = cbfunc;
|
||||
op->cbdata = cbdata;
|
||||
|
||||
/* convert the jobid */
|
||||
(void)opal_snprintf_jobid(op->p.nspace, PMIX_MAX_NSLEN, proc->jobid);
|
||||
op->p.rank = ext2x_convert_opalrank(proc->vpid);
|
||||
|
||||
/* find the internally-cached data for this proc */
|
||||
rc = PMIx_server_dmodex_request(&op->p, dmdx_response, op);
|
||||
if (PMIX_SUCCESS != rc) {
|
||||
OBJ_RELEASE(op);
|
||||
}
|
||||
return ext2x_convert_rc(rc);
|
||||
}
|
||||
|
||||
/* tell the PMIx server to notify its local clients of an event */
|
||||
int ext2x_server_notify_event(int status,
|
||||
const opal_process_name_t *source,
|
||||
opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
opal_value_t *kv;
|
||||
pmix_info_t *pinfo;
|
||||
size_t sz, n;
|
||||
pmix_status_t rc;
|
||||
ext2x_opcaddy_t *op;
|
||||
|
||||
OPAL_PMIX_ACQUIRE_THREAD(&opal_pmix_base.lock);
|
||||
if (0 >= opal_pmix_base.initialized) {
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
return OPAL_ERR_NOT_INITIALIZED;
|
||||
}
|
||||
OPAL_PMIX_RELEASE_THREAD(&opal_pmix_base.lock);
|
||||
|
||||
/* convert the list to an array of pmix_info_t */
|
||||
if (NULL != info && 0 < (sz = opal_list_get_size(info))) {
|
||||
PMIX_INFO_CREATE(pinfo, sz);
|
||||
n = 0;
|
||||
OPAL_LIST_FOREACH(kv, info, opal_value_t) {
|
||||
(void)strncpy(pinfo[n].key, kv->key, PMIX_MAX_KEYLEN);
|
||||
ext2x_value_load(&pinfo[n].value, kv);
|
||||
++n;
|
||||
}
|
||||
} else {
|
||||
sz = 0;
|
||||
pinfo = NULL;
|
||||
}
|
||||
/* setup the caddy */
|
||||
op = OBJ_NEW(ext2x_opcaddy_t);
|
||||
op->info = pinfo;
|
||||
op->sz = sz;
|
||||
op->opcbfunc = cbfunc;
|
||||
op->cbdata = cbdata;
|
||||
/* convert the jobid */
|
||||
if (NULL == source) {
|
||||
(void)opal_snprintf_jobid(op->p.nspace, PMIX_MAX_NSLEN, OPAL_JOBID_INVALID);
|
||||
op->p.rank = ext2x_convert_opalrank(OPAL_VPID_INVALID);
|
||||
} else {
|
||||
(void)opal_snprintf_jobid(op->p.nspace, PMIX_MAX_NSLEN, source->jobid);
|
||||
op->p.rank = ext2x_convert_opalrank(source->vpid);
|
||||
}
|
||||
|
||||
|
||||
rc = ext2x_convert_opalrc(status);
|
||||
/* the range must be nonlocal so the server will pass
|
||||
* the event down to its local clients */
|
||||
rc = PMIx_Notify_event(rc, &op->p, PMIX_RANGE_SESSION,
|
||||
pinfo, sz, opcbfunc, op);
|
||||
if (PMIX_SUCCESS != rc) {
|
||||
OBJ_RELEASE(op);
|
||||
}
|
||||
return ext2x_convert_rc(rc);
|
||||
}
|
72
opal/mca/pmix/ext3x/Makefile.am
Обычный файл
72
opal/mca/pmix/ext3x/Makefile.am
Обычный файл
@ -0,0 +1,72 @@
|
||||
#
|
||||
# Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
# Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2015 Research Organization for Information Science
|
||||
# and Technology (RIST). All rights reserved.
|
||||
# Copyright (c) 2017 IBM Corporation. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
dist_opaldata_DATA = help-pmix-ext3x.txt
|
||||
|
||||
sources = \
|
||||
ext3x_local.c
|
||||
|
||||
nodist_headers = \
|
||||
ext3x.h
|
||||
|
||||
nodist_sources = \
|
||||
ext3x.c \
|
||||
ext3x_client.c \
|
||||
ext3x_component.c \
|
||||
ext3x_server_north.c \
|
||||
ext3x_server_south.c
|
||||
|
||||
# Make the output library in this directory, and name it either
|
||||
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
|
||||
# (for static builds).
|
||||
|
||||
if MCA_BUILD_opal_pmix_ext3x_DSO
|
||||
component_noinst =
|
||||
component_install = mca_pmix_ext3x.la
|
||||
else
|
||||
component_noinst = libmca_pmix_ext3x.la
|
||||
component_install =
|
||||
endif
|
||||
|
||||
#
|
||||
# Generate ext3x sources from the pmix3x component
|
||||
#
|
||||
$(nodist_headers):
|
||||
pmix3xname=`echo $@ | sed -e s/ext3x/pmix3x/g` ; \
|
||||
$(SED) 's/pmix3x/ext3x/g' $(top_srcdir)/opal/mca/pmix/pmix3x/$$pmix3xname > $@
|
||||
|
||||
$(sources): $(nodist_headers)
|
||||
|
||||
$(nodist_sources): $(nodist_headers)
|
||||
pmix3xname=`echo $@ | sed -e s/ext3x/pmix3x/g` ; \
|
||||
$(SED) 's/pmix3x/ext3x/g' $(top_srcdir)/opal/mca/pmix/pmix3x/$$pmix3xname > $@
|
||||
|
||||
mcacomponentdir = $(opallibdir)
|
||||
mcacomponent_LTLIBRARIES = $(component_install)
|
||||
mca_pmix_ext3x_la_SOURCES = $(sources)
|
||||
nodist_mca_pmix_ext3x_la_SOURCES = $(nodist_sources)
|
||||
mca_pmix_ext3x_la_CFLAGS = $(opal_pmix_ext3x_CFLAGS)
|
||||
mca_pmix_ext3x_la_CPPFLAGS =$(opal_pmix_ext3x_CPPFLAGS)
|
||||
mca_pmix_ext3x_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext3x_LDFLAGS)
|
||||
mca_pmix_ext3x_la_LIBADD = $(top_builddir)/opal/lib@OPAL_LIB_PREFIX@open-pal.la \
|
||||
$(opal_pmix_ext3x_LIBS)
|
||||
|
||||
noinst_LTLIBRARIES = $(component_noinst)
|
||||
libmca_pmix_ext3x_la_SOURCES =$(sources)
|
||||
libmca_pmix_ext3x_la_CFLAGS = $(opal_pmix_ext3x_CFLAGS)
|
||||
libmca_pmix_ext3x_la_CPPFLAGS = $(opal_pmix_ext3x_CPPFLAGS)
|
||||
libmca_pmix_ext3x_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext3x_LDFLAGS)
|
||||
libmca_pmix_ext3x_la_LIBADD = $(opal_pmix_ext3x_LIBS)
|
||||
|
||||
clean-local:
|
||||
$(RM) -f $(nodist_sources) $(nodist_headers)
|
63
opal/mca/pmix/ext3x/configure.m4
Обычный файл
63
opal/mca/pmix/ext3x/configure.m4
Обычный файл
@ -0,0 +1,63 @@
|
||||
# -*- shell-script -*-
|
||||
#
|
||||
# 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) 2011-2013 Los Alamos National Security, LLC.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 2010-2015 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2013-2017 Intel, Inc. All rights reserved.
|
||||
# Copyright (c) 2015-2017 Research Organization for Information Science
|
||||
# and Technology (RIST). All rights reserved.
|
||||
# Copyright (c) 2014-2015 Mellanox Technologies, Inc.
|
||||
# All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
# MCA_pmix_ext3x_CONFIG([action-if-found], [action-if-not-found])
|
||||
# -----------------------------------------------------------
|
||||
AC_DEFUN([MCA_opal_pmix_ext3x_CONFIG],[
|
||||
AC_CONFIG_FILES([opal/mca/pmix/ext3x/Makefile])
|
||||
|
||||
AS_IF([test "$opal_external_pmix_happy" = "yes"],
|
||||
[ # check for the 3.x version
|
||||
AC_MSG_CHECKING([if external component is version 3.x])
|
||||
AS_IF([test "$opal_external_pmix_version" = "3x"],
|
||||
[AC_MSG_RESULT([yes])
|
||||
AS_IF([test "$opal_event_external_support" != "yes"],
|
||||
[AC_MSG_WARN([EXTERNAL PMIX SUPPORT REQUIRES USE OF EXTERNAL LIBEVENT])
|
||||
AC_MSG_WARN([LIBRARY. THIS LIBRARY MUST POINT TO THE SAME ONE USED])
|
||||
AC_MSG_WARN([TO BUILD PMIX OR ELSE UNPREDICTABLE BEHAVIOR MAY RESULT])
|
||||
AC_MSG_ERROR([PLEASE CORRECT THE CONFIGURE COMMAND LINE AND REBUILD])])
|
||||
opal_pmix_external_3x_happy=yes],
|
||||
[AC_MSG_RESULT([no])
|
||||
opal_pmix_external_3x_happy=no])
|
||||
|
||||
AS_IF([test "$opal_pmix_external_3x_happy" = "yes"],
|
||||
[$1
|
||||
# need to set the wrapper flags for static builds
|
||||
pmix_ext3x_WRAPPER_EXTRA_LDFLAGS=$opal_external_pmix_LDFLAGS
|
||||
pmix_ext3x_WRAPPER_EXTRA_LIBS=$opal_external_pmix_LIBS],
|
||||
[$2])],
|
||||
[$2])
|
||||
|
||||
opal_pmix_ext3x_CPPFLAGS=$opal_external_pmix_CPPFLAGS
|
||||
opal_pmix_ext3x_LDFLAGS=$opal_external_pmix_LDFLAGS
|
||||
opal_pmix_ext3x_LIBS=$opal_external_pmix_LIBS
|
||||
|
||||
AC_SUBST([opal_pmix_ext3x_CPPFLAGS])
|
||||
AC_SUBST([opal_pmix_ext3x_LDFLAGS])
|
||||
AC_SUBST([opal_pmix_ext3x_LIBS])
|
||||
|
||||
])dnl
|
340
opal/mca/pmix/ext3x/ext3x.h
Обычный файл
340
opal/mca/pmix/ext3x/ext3x.h
Обычный файл
@ -0,0 +1,340 @@
|
||||
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2014-2015 Mellanox Technologies, Inc.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2016 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2017 Los Alamos National Security, LLC. All rights
|
||||
* reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
*
|
||||
* $HEADER$
|
||||
*/
|
||||
|
||||
#ifndef MCA_PMIX_PMIX2X_H
|
||||
#define MCA_PMIX_PMIX2X_H
|
||||
|
||||
#include "opal_config.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_UN_H
|
||||
#include <sys/un.h>
|
||||
#endif
|
||||
|
||||
#include "opal/class/opal_list.h"
|
||||
#include "opal/mca/mca.h"
|
||||
#include "opal/mca/event/event.h"
|
||||
#include "opal/util/proc.h"
|
||||
|
||||
#include "opal/mca/pmix/base/base.h"
|
||||
#include "pmix_server.h"
|
||||
#include "pmix_common.h"
|
||||
|
||||
BEGIN_C_DECLS
|
||||
|
||||
#ifdef OPAL_C_HAVE_VISIBILITY
|
||||
#define PMIX_HAVE_VISIBILITY 1
|
||||
#else
|
||||
#undef PMIX_HAVE_VISIBILITY
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
opal_pmix_base_component_t super;
|
||||
opal_list_t jobids;
|
||||
bool native_launch;
|
||||
size_t evindex;
|
||||
opal_list_t events;
|
||||
int cache_size;
|
||||
opal_list_t cache;
|
||||
opal_list_t dmdx;
|
||||
bool silence_warning;
|
||||
} mca_pmix_ext3x_component_t;
|
||||
|
||||
OPAL_DECLSPEC extern mca_pmix_ext3x_component_t mca_pmix_ext3x_component;
|
||||
|
||||
OPAL_DECLSPEC extern const opal_pmix_base_module_t opal_pmix_ext3x_module;
|
||||
|
||||
/**** INTERNAL OBJECTS ****/
|
||||
typedef struct {
|
||||
opal_list_item_t super;
|
||||
opal_jobid_t jobid;
|
||||
char nspace[PMIX_MAX_NSLEN + 1];
|
||||
} opal_ext3x_jobid_trkr_t;
|
||||
OBJ_CLASS_DECLARATION(opal_ext3x_jobid_trkr_t);
|
||||
|
||||
typedef struct {
|
||||
opal_list_item_t super;
|
||||
opal_pmix_lock_t lock;
|
||||
size_t index;
|
||||
opal_pmix_notification_fn_t handler;
|
||||
void *cbdata;
|
||||
} opal_ext3x_event_t;
|
||||
OBJ_CLASS_DECLARATION(opal_ext3x_event_t);
|
||||
|
||||
typedef struct {
|
||||
opal_list_item_t super;
|
||||
char *nspace;
|
||||
pmix_modex_cbfunc_t cbfunc;
|
||||
void *cbdata;
|
||||
} opal_ext3x_dmx_trkr_t;
|
||||
OBJ_CLASS_DECLARATION(opal_ext3x_dmx_trkr_t);
|
||||
|
||||
typedef struct {
|
||||
opal_object_t super;
|
||||
opal_event_t ev;
|
||||
pmix_status_t status;
|
||||
char *nspace;
|
||||
pmix_proc_t p;
|
||||
pmix_proc_t *procs;
|
||||
size_t nprocs;
|
||||
pmix_pdata_t *pdata;
|
||||
size_t npdata;
|
||||
pmix_proc_t *error_procs;
|
||||
size_t nerror_procs;
|
||||
pmix_info_t *info;
|
||||
size_t ninfo;
|
||||
pmix_app_t *apps;
|
||||
size_t sz;
|
||||
opal_pmix_lock_t lock;
|
||||
opal_list_t *codes;
|
||||
pmix_status_t *pcodes;
|
||||
size_t ncodes;
|
||||
pmix_query_t *queries;
|
||||
size_t nqueries;
|
||||
opal_ext3x_event_t *event;
|
||||
opal_pmix_op_cbfunc_t opcbfunc;
|
||||
opal_pmix_modex_cbfunc_t mdxcbfunc;
|
||||
opal_pmix_value_cbfunc_t valcbfunc;
|
||||
opal_pmix_lookup_cbfunc_t lkcbfunc;
|
||||
opal_pmix_spawn_cbfunc_t spcbfunc;
|
||||
opal_pmix_evhandler_reg_cbfunc_t evregcbfunc;
|
||||
opal_pmix_info_cbfunc_t qcbfunc;
|
||||
void *cbdata;
|
||||
} ext3x_opcaddy_t;
|
||||
OBJ_CLASS_DECLARATION(ext3x_opcaddy_t);
|
||||
|
||||
typedef struct {
|
||||
opal_object_t super;
|
||||
opal_list_t procs;
|
||||
opal_list_t info;
|
||||
opal_list_t apps;
|
||||
pmix_op_cbfunc_t opcbfunc;
|
||||
pmix_dmodex_response_fn_t dmdxfunc;
|
||||
pmix_modex_cbfunc_t mdxcbfunc;
|
||||
pmix_lookup_cbfunc_t lkupcbfunc;
|
||||
pmix_spawn_cbfunc_t spwncbfunc;
|
||||
pmix_info_cbfunc_t infocbfunc;
|
||||
pmix_tool_connection_cbfunc_t toolcbfunc;
|
||||
void *cbdata;
|
||||
opal_pmix_release_cbfunc_t odmdxfunc;
|
||||
void *ocbdata;
|
||||
} ext3x_opalcaddy_t;
|
||||
OBJ_CLASS_DECLARATION(ext3x_opalcaddy_t);
|
||||
|
||||
typedef struct {
|
||||
opal_object_t super;
|
||||
opal_event_t ev;
|
||||
opal_pmix_lock_t lock;
|
||||
const char *msg;
|
||||
char *strings;
|
||||
size_t id;
|
||||
int status;
|
||||
opal_process_name_t pname;
|
||||
opal_jobid_t jobid;
|
||||
const opal_process_name_t *source;
|
||||
opal_pmix_data_range_t range;
|
||||
bool nondefault;
|
||||
size_t handler;
|
||||
opal_value_t *val;
|
||||
opal_list_t *event_codes;
|
||||
opal_list_t *info;
|
||||
opal_list_t results;
|
||||
opal_pmix_notification_fn_t evhandler;
|
||||
opal_pmix_evhandler_reg_cbfunc_t cbfunc;
|
||||
opal_pmix_op_cbfunc_t opcbfunc;
|
||||
pmix_event_notification_cbfunc_fn_t pmixcbfunc;
|
||||
opal_pmix_value_cbfunc_t valcbfunc;
|
||||
opal_pmix_lookup_cbfunc_t lkcbfunc;
|
||||
void *cbdata;
|
||||
} ext3x_threadshift_t;
|
||||
OBJ_CLASS_DECLARATION(ext3x_threadshift_t);
|
||||
|
||||
#define OPAL_PMIX_OP_THREADSHIFT(e, fn, cb, cd) \
|
||||
do { \
|
||||
ext3x_threadshift_t *_cd; \
|
||||
_cd = OBJ_NEW(ext3x_threadshift_t); \
|
||||
_cd->handler = (e); \
|
||||
_cd->opcbfunc = (cb); \
|
||||
_cd->cbdata = (cd); \
|
||||
opal_event_assign(&((_cd)->ev), opal_pmix_base.evbase, \
|
||||
-1, EV_WRITE, (fn), (_cd)); \
|
||||
OPAL_POST_OBJECT(_cd); \
|
||||
opal_event_active(&((_cd)->ev), EV_WRITE, 1); \
|
||||
} while(0)
|
||||
|
||||
#define OPAL_PMIX_THREADSHIFT(e, i, eh, fn, cb, cd) \
|
||||
do { \
|
||||
ext3x_threadshift_t *_cd; \
|
||||
_cd = OBJ_NEW(ext3x_threadshift_t); \
|
||||
_cd->event_codes = (e); \
|
||||
_cd->info = (i); \
|
||||
_cd->evhandler = (eh); \
|
||||
_cd->cbfunc = (cb); \
|
||||
_cd->cbdata = (cd); \
|
||||
opal_event_assign(&((_cd)->ev), opal_pmix_base.evbase, \
|
||||
-1, EV_WRITE, (fn), (_cd)); \
|
||||
OPAL_POST_OBJECT(_cd); \
|
||||
opal_event_active(&((_cd)->ev), EV_WRITE, 1); \
|
||||
} while(0)
|
||||
|
||||
#define OPAL_PMIX_NOTIFY_THREADSHIFT(s, sr, r, i, fn, cb, cd) \
|
||||
do { \
|
||||
ext3x_threadshift_t *_cd; \
|
||||
_cd = OBJ_NEW(ext3x_threadshift_t); \
|
||||
_cd->status = (s); \
|
||||
_cd->source = (sr); \
|
||||
_cd->range = (r); \
|
||||
_cd->info = (i); \
|
||||
_cd->opcbfunc = (cb); \
|
||||
_cd->cbdata = (cd); \
|
||||
opal_event_assign(&((_cd)->ev), opal_pmix_base.evbase, \
|
||||
-1, EV_WRITE, (fn), (_cd)); \
|
||||
OPAL_POST_OBJECT(_cd); \
|
||||
opal_event_active(&((_cd)->ev), EV_WRITE, 1); \
|
||||
} while(0)
|
||||
|
||||
#define OPAL_PMIX2X_THREADSHIFT(p, cb) \
|
||||
do { \
|
||||
opal_event_assign(&((p)->ev), opal_pmix_base.evbase, \
|
||||
-1, EV_WRITE, (cb), (p)); \
|
||||
OPAL_POST_OBJECT(p); \
|
||||
opal_event_active(&((p)->ev), EV_WRITE, 1); \
|
||||
} while(0)
|
||||
|
||||
/**** CLIENT FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int ext3x_client_init(opal_list_t *ilist);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_client_finalize(void);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_initialized(void);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_abort(int flag, const char *msg,
|
||||
opal_list_t *procs);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_commit(void);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_fence(opal_list_t *procs, int collect_data);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_fencenb(opal_list_t *procs, int collect_data,
|
||||
opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_put(opal_pmix_scope_t scope,
|
||||
opal_value_t *val);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_get(const opal_process_name_t *proc, const char *key,
|
||||
opal_list_t *info, opal_value_t **val);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_getnb(const opal_process_name_t *proc, const char *key,
|
||||
opal_list_t *info,
|
||||
opal_pmix_value_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_publish(opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_publishnb(opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_lookup(opal_list_t *data, opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_lookupnb(char **keys, opal_list_t *info,
|
||||
opal_pmix_lookup_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_unpublish(char **keys, opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_unpublishnb(char **keys, opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_spawn(opal_list_t *job_info, opal_list_t *apps, opal_jobid_t *jobid);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_spawnnb(opal_list_t *job_info, opal_list_t *apps,
|
||||
opal_pmix_spawn_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_connect(opal_list_t *procs);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_connectnb(opal_list_t *procs,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_disconnect(opal_list_t *procs);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_disconnectnb(opal_list_t *procs,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_resolve_peers(const char *nodename, opal_jobid_t jobid,
|
||||
opal_list_t *procs);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_resolve_nodes(opal_jobid_t jobid, char **nodelist);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_allocate(opal_pmix_alloc_directive_t directive,
|
||||
opal_list_t *info,
|
||||
opal_pmix_info_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_job_control(opal_list_t *targets,
|
||||
opal_list_t *directives,
|
||||
opal_pmix_info_cbfunc_t cbfunc, void *cbdata);
|
||||
|
||||
/**** TOOL FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int ext3x_tool_init(opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_tool_fini(void);
|
||||
|
||||
/**** COMMON FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int ext3x_store_local(const opal_process_name_t *proc,
|
||||
opal_value_t *val);
|
||||
|
||||
/**** SERVER SOUTHBOUND FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int ext3x_server_init(opal_pmix_server_module_t *module,
|
||||
opal_list_t *info);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_server_finalize(void);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_server_gen_regex(const char *input, char **regex);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_server_gen_ppn(const char *input, char **ppn);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_server_register_nspace(opal_jobid_t jobid,
|
||||
int nlocalprocs,
|
||||
opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC void ext3x_server_deregister_nspace(opal_jobid_t jobid,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_server_register_client(const opal_process_name_t *proc,
|
||||
uid_t uid, gid_t gid,
|
||||
void *server_object,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC void ext3x_server_deregister_client(const opal_process_name_t *proc,
|
||||
opal_pmix_op_cbfunc_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_server_setup_fork(const opal_process_name_t *proc, char ***env);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_server_dmodex(const opal_process_name_t *proc,
|
||||
opal_pmix_modex_cbfunc_t cbfunc, void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_server_notify_event(int status,
|
||||
const opal_process_name_t *source,
|
||||
opal_list_t *info,
|
||||
opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
|
||||
|
||||
|
||||
/**** COMPONENT UTILITY FUNCTIONS ****/
|
||||
OPAL_MODULE_DECLSPEC int opal_pmix_ext3x_check_evars(void);
|
||||
|
||||
OPAL_MODULE_DECLSPEC void ext3x_event_hdlr(size_t evhdlr_registration_id,
|
||||
pmix_status_t status, const pmix_proc_t *source,
|
||||
pmix_info_t info[], size_t ninfo,
|
||||
pmix_info_t results[], size_t nresults,
|
||||
pmix_event_notification_cbfunc_fn_t cbfunc,
|
||||
void *cbdata);
|
||||
OPAL_MODULE_DECLSPEC pmix_status_t ext3x_convert_opalrc(int rc);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_convert_rc(pmix_status_t rc);
|
||||
|
||||
OPAL_MODULE_DECLSPEC opal_vpid_t ext3x_convert_rank(pmix_rank_t rank);
|
||||
OPAL_MODULE_DECLSPEC pmix_rank_t ext3x_convert_opalrank(opal_vpid_t vpid);
|
||||
|
||||
OPAL_MODULE_DECLSPEC opal_pmix_scope_t ext3x_convert_scope(pmix_scope_t scope);
|
||||
OPAL_MODULE_DECLSPEC pmix_scope_t ext3x_convert_opalscope(opal_pmix_scope_t scope);
|
||||
|
||||
OPAL_MODULE_DECLSPEC pmix_data_range_t ext3x_convert_opalrange(opal_pmix_data_range_t range);
|
||||
OPAL_MODULE_DECLSPEC opal_pmix_data_range_t ext3x_convert_range(pmix_data_range_t range);
|
||||
|
||||
OPAL_MODULE_DECLSPEC opal_pmix_persistence_t ext3x_convert_persist(pmix_persistence_t scope);
|
||||
OPAL_MODULE_DECLSPEC pmix_persistence_t ext3x_convert_opalpersist(opal_pmix_persistence_t scope);
|
||||
|
||||
OPAL_MODULE_DECLSPEC void ext3x_value_load(pmix_value_t *v,
|
||||
opal_value_t *kv);
|
||||
OPAL_MODULE_DECLSPEC int ext3x_value_unload(opal_value_t *kv,
|
||||
const pmix_value_t *v);
|
||||
|
||||
OPAL_MODULE_DECLSPEC opal_pmix_alloc_directive_t ext3x_convert_allocdir(pmix_alloc_directive_t dir);
|
||||
|
||||
OPAL_MODULE_DECLSPEC char* ext3x_convert_jobid(opal_jobid_t jobid);
|
||||
|
||||
END_C_DECLS
|
||||
|
||||
#endif /* MCA_PMIX_EXTERNAL_H */
|
27
opal/mca/pmix/ext3x/ext3x_local.c
Обычный файл
27
opal/mca/pmix/ext3x/ext3x_local.c
Обычный файл
@ -0,0 +1,27 @@
|
||||
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2014-2017 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2014-2015 Mellanox Technologies, Inc.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2017 Los Alamos National Security, LLC. All rights
|
||||
* reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
*
|
||||
* $HEADER$
|
||||
*/
|
||||
|
||||
#include "opal_config.h"
|
||||
#include "opal/constants.h"
|
||||
|
||||
#include "ext3x.h"
|
||||
|
||||
int opal_pmix_ext3x_check_evars(void)
|
||||
{
|
||||
/* a dummy function */
|
||||
return OPAL_SUCCESS;
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
# Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2015 Research Organization for Information Science
|
||||
# and Technology (RIST). All rights reserved.
|
||||
# Copyright (c) 2017 IBM Corporation. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
EXTRA_DIST = autogen.subdirs
|
||||
|
||||
dist_opaldata_DATA = help-pmix-pmix2x.txt
|
||||
|
||||
SUBDIRS = pmix
|
||||
|
||||
sources = \
|
||||
pmix2x.h \
|
||||
pmix2x_component.c \
|
||||
pmix2x.c \
|
||||
pmix2x_client.c \
|
||||
pmix2x_local.c \
|
||||
pmix2x_server_south.c \
|
||||
pmix2x_server_north.c
|
||||
|
||||
# Make the output library in this directory, and name it either
|
||||
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
|
||||
# (for static builds).
|
||||
|
||||
if MCA_BUILD_opal_pmix_pmix2x_DSO
|
||||
component_noinst =
|
||||
component_install = mca_pmix_pmix2x.la
|
||||
else
|
||||
component_noinst = libmca_pmix_pmix2x.la
|
||||
component_install =
|
||||
endif
|
||||
|
||||
mcacomponentdir = $(opallibdir)
|
||||
mcacomponent_LTLIBRARIES = $(component_install)
|
||||
mca_pmix_pmix2x_la_SOURCES = $(sources)
|
||||
mca_pmix_pmix2x_la_CFLAGS = $(opal_pmix_pmix2x_CFLAGS)
|
||||
mca_pmix_pmix2x_la_CPPFLAGS = \
|
||||
-I$(srcdir)/pmix/include $(opal_pmix_pmix2x_CPPFLAGS)
|
||||
mca_pmix_pmix2x_la_LDFLAGS = -module -avoid-version $(opal_pmix_pmix2x_LDFLAGS)
|
||||
mca_pmix_pmix2x_la_LIBADD = $(top_builddir)/opal/lib@OPAL_LIB_PREFIX@open-pal.la \
|
||||
$(opal_pmix_pmix2x_LIBS)
|
||||
mca_pmix_pmix2x_la_DEPENDENCIES = $(opal_pmix_pmix2x_DEPENDENCIES)
|
||||
|
||||
noinst_LTLIBRARIES = $(component_noinst)
|
||||
libmca_pmix_pmix2x_la_SOURCES =$(sources)
|
||||
libmca_pmix_pmix2x_la_CFLAGS = $(opal_pmix_pmix2x_CFLAGS)
|
||||
libmca_pmix_pmix2x_la_CPPFLAGS = $(opal_pmix_pmix2x_CPPFLAGS)
|
||||
libmca_pmix_pmix2x_la_LDFLAGS = -module -avoid-version $(opal_pmix_pmix2x_LDFLAGS)
|
||||
libmca_pmix_pmix2x_la_LIBADD = $(opal_pmix_pmix2x_LIBS)
|
||||
libmca_pmix_pmix2x_la_DEPENDENCIES = $(opal_pmix_pmix2x_DEPENDENCIES)
|
@ -1,67 +0,0 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <pmix.h>
|
||||
#include <assert.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
pmix_proc_t myproc;
|
||||
pmix_status_t rc;
|
||||
|
||||
int rank;
|
||||
rc = PMIx_Init(&myproc, NULL, 0);
|
||||
assert(PMIX_SUCCESS == rc);
|
||||
|
||||
{
|
||||
pmix_value_t *value;
|
||||
rc = PMIx_Get(&myproc, PMIX_RANK, NULL, 0, &value);
|
||||
assert(PMIX_SUCCESS == rc);
|
||||
printf("%d\n", value->type);
|
||||
assert(value->type == PMIX_INT);
|
||||
rank = value->data.uint32;
|
||||
PMIX_VALUE_RELEASE(value);
|
||||
}
|
||||
|
||||
if (rank == 0 ) {
|
||||
pmix_info_t *info;
|
||||
PMIX_INFO_CREATE(info, 1);
|
||||
snprintf(info[0].key, PMIX_MAX_KEYLEN, "magic-found");
|
||||
info[0].value.type = PMIX_STRING;
|
||||
info[0].value.data.string = "yes";
|
||||
rc = PMIx_Publish(info, 1);
|
||||
assert(PMIX_SUCCESS == rc);
|
||||
}
|
||||
|
||||
printf("I am rank %d\n", rank);
|
||||
|
||||
{
|
||||
bool flag;
|
||||
pmix_info_t *info;
|
||||
PMIX_INFO_CREATE(info, 1);
|
||||
flag = true;
|
||||
PMIX_INFO_LOAD(info, PMIX_COLLECT_DATA, &flag, PMIX_BOOL);
|
||||
rc = PMIx_Fence(&myproc, 1, info, 1);
|
||||
assert(PMIX_SUCCESS == rc);
|
||||
PMIX_INFO_FREE(info, 1);
|
||||
}
|
||||
|
||||
if (rank == 1) {
|
||||
int i;
|
||||
pmix_pdata_t *pdata;
|
||||
PMIX_PDATA_CREATE(pdata, 2);
|
||||
snprintf(pdata[0].key, PMIX_MAX_KEYLEN, "magic-found");
|
||||
snprintf(pdata[1].key, PMIX_MAX_KEYLEN, "magic-not-found");
|
||||
rc = PMIx_Lookup(&pdata[0], 2, NULL, 0);
|
||||
assert((PMIX_SUCCESS == rc) || (PMIX_ERR_NOT_FOUND == rc));
|
||||
for ( i = 0 ; i < 2 ; i++ )
|
||||
if (pdata[i].value.type == PMIX_STRING)
|
||||
printf("Found[%d] %d %s\n", i, pdata[i].value.type, pdata[i].value.data.string);
|
||||
else
|
||||
printf("Found[%d] %d\n", i, pdata[i].value.type);
|
||||
PMIX_PDATA_FREE(pdata, 1);
|
||||
}
|
||||
|
||||
rc = PMIx_Finalize(NULL, 0);
|
||||
assert(PMIX_SUCCESS == rc);
|
||||
|
||||
}
|
58
opal/mca/pmix/pmix3x/Makefile.am
Обычный файл
58
opal/mca/pmix/pmix3x/Makefile.am
Обычный файл
@ -0,0 +1,58 @@
|
||||
#
|
||||
# Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
# Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2015 Research Organization for Information Science
|
||||
# and Technology (RIST). All rights reserved.
|
||||
# Copyright (c) 2017 IBM Corporation. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
EXTRA_DIST = autogen.subdirs
|
||||
|
||||
dist_opaldata_DATA = help-pmix-pmix3x.txt
|
||||
|
||||
SUBDIRS = pmix
|
||||
|
||||
sources = \
|
||||
pmix3x.h \
|
||||
pmix3x_component.c \
|
||||
pmix3x.c \
|
||||
pmix3x_client.c \
|
||||
pmix3x_local.c \
|
||||
pmix3x_server_south.c \
|
||||
pmix3x_server_north.c
|
||||
|
||||
# Make the output library in this directory, and name it either
|
||||
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
|
||||
# (for static builds).
|
||||
|
||||
if MCA_BUILD_opal_pmix_pmix3x_DSO
|
||||
component_noinst =
|
||||
component_install = mca_pmix_pmix3x.la
|
||||
else
|
||||
component_noinst = libmca_pmix_pmix3x.la
|
||||
component_install =
|
||||
endif
|
||||
|
||||
mcacomponentdir = $(opallibdir)
|
||||
mcacomponent_LTLIBRARIES = $(component_install)
|
||||
mca_pmix_pmix3x_la_SOURCES = $(sources)
|
||||
mca_pmix_pmix3x_la_CFLAGS = $(opal_pmix_pmix3x_CFLAGS)
|
||||
mca_pmix_pmix3x_la_CPPFLAGS = \
|
||||
-I$(srcdir)/pmix/include $(opal_pmix_pmix3x_CPPFLAGS)
|
||||
mca_pmix_pmix3x_la_LDFLAGS = -module -avoid-version $(opal_pmix_pmix3x_LDFLAGS)
|
||||
mca_pmix_pmix3x_la_LIBADD = $(top_builddir)/opal/lib@OPAL_LIB_PREFIX@open-pal.la \
|
||||
$(opal_pmix_pmix3x_LIBS)
|
||||
mca_pmix_pmix3x_la_DEPENDENCIES = $(opal_pmix_pmix3x_DEPENDENCIES)
|
||||
|
||||
noinst_LTLIBRARIES = $(component_noinst)
|
||||
libmca_pmix_pmix3x_la_SOURCES =$(sources)
|
||||
libmca_pmix_pmix3x_la_CFLAGS = $(opal_pmix_pmix3x_CFLAGS)
|
||||
libmca_pmix_pmix3x_la_CPPFLAGS = $(opal_pmix_pmix3x_CPPFLAGS)
|
||||
libmca_pmix_pmix3x_la_LDFLAGS = -module -avoid-version $(opal_pmix_pmix3x_LDFLAGS)
|
||||
libmca_pmix_pmix3x_la_LIBADD = $(opal_pmix_pmix3x_LIBS)
|
||||
libmca_pmix_pmix3x_la_DEPENDENCIES = $(opal_pmix_pmix3x_DEPENDENCIES)
|
6
opal/mca/pmix/pmix3x/common_sym_whitelist.txt
Обычный файл
6
opal/mca/pmix/pmix3x/common_sym_whitelist.txt
Обычный файл
@ -0,0 +1,6 @@
|
||||
# Ignore symbols in this component that are auto-generated and we
|
||||
# can't do anything about them (e.g., flex/bison symbols).
|
||||
pmix_util_keyval_yyleng
|
||||
pmix_util_keyval_yytext
|
||||
pmix_show_help_yyleng
|
||||
pmix_show_help_yytext
|
@ -23,19 +23,19 @@
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
# MCA_pmix_pmix2x_CONFIG([action-if-found], [action-if-not-found])
|
||||
# MCA_pmix_pmix3x_CONFIG([action-if-found], [action-if-not-found])
|
||||
# -----------------------------------------------------------
|
||||
AC_DEFUN([MCA_opal_pmix_pmix2x_CONFIG],[
|
||||
AC_CONFIG_FILES([opal/mca/pmix/pmix2x/Makefile])
|
||||
AC_DEFUN([MCA_opal_pmix_pmix3x_CONFIG],[
|
||||
AC_CONFIG_FILES([opal/mca/pmix/pmix3x/Makefile])
|
||||
|
||||
OPAL_VAR_SCOPE_PUSH([PMIX_VERSION opal_pmix_pmix2x_save_CPPFLAGS opal_pmix_pmix2_save_CFLAGS opal_pmix_pmix2x_save_LDFLAGS opal_pmix_pmix2x_save_LIBS opal_pmix_pmix2x_basedir opal_pmix_pmix2x_args opal_pmix_pmix2x_happy pmix_pmix2x_status_filename])
|
||||
OPAL_VAR_SCOPE_PUSH([PMIX_VERSION opal_pmix_pmix3x_save_CPPFLAGS opal_pmix_pmix2_save_CFLAGS opal_pmix_pmix3x_save_LDFLAGS opal_pmix_pmix3x_save_LIBS opal_pmix_pmix3x_basedir opal_pmix_pmix3x_args opal_pmix_pmix3x_happy pmix_pmix3x_status_filename])
|
||||
|
||||
opal_pmix_pmix2x_basedir=opal/mca/pmix/pmix2x
|
||||
opal_pmix_pmix3x_basedir=opal/mca/pmix/pmix3x
|
||||
|
||||
opal_pmix_pmix2x_save_CFLAGS=$CFLAGS
|
||||
opal_pmix_pmix2x_save_CPPFLAGS=$CPPFLAGS
|
||||
opal_pmix_pmix2x_save_LDFLAGS=$LDFLAGS
|
||||
opal_pmix_pmix2x_save_LIBS=$LIBS
|
||||
opal_pmix_pmix3x_save_CFLAGS=$CFLAGS
|
||||
opal_pmix_pmix3x_save_CPPFLAGS=$CPPFLAGS
|
||||
opal_pmix_pmix3x_save_LDFLAGS=$LDFLAGS
|
||||
opal_pmix_pmix3x_save_LIBS=$LIBS
|
||||
|
||||
AC_ARG_ENABLE([install-libpmix],
|
||||
[AC_HELP_STRING([--enable-install-libpmix],
|
||||
@ -47,33 +47,33 @@ AC_DEFUN([MCA_opal_pmix_pmix2x_CONFIG],[
|
||||
AC_MSG_CHECKING([if PMIx timing is enabled])
|
||||
if test "$enable_pmix_timing" = "yes"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
opal_pmix_pmix2x_timing_flag=--enable-pmix-timing
|
||||
opal_pmix_pmix3x_timing_flag=--enable-pmix-timing
|
||||
else
|
||||
AC_MSG_RESULT([no (disabled)])
|
||||
opal_pmix_pmix2x_timing_flag=--disable-pmix-timing
|
||||
opal_pmix_pmix3x_timing_flag=--disable-pmix-timing
|
||||
fi
|
||||
|
||||
opal_pmix_pmix2x_args="--with-pmix-symbol-rename=OPAL_MCA_PMIX2X_ $opal_pmix_pmix2x_timing_flag --without-tests-examples --disable-pmix-backward-compatibility --disable-visibility --enable-embedded-libevent --with-libevent-header=\\\"opal/mca/event/$opal_event_base_include\\\""
|
||||
opal_pmix_pmix3x_args="--with-pmix-symbol-rename=OPAL_MCA_PMIX2X_ $opal_pmix_pmix3x_timing_flag --without-tests-examples --disable-pmix-backward-compatibility --disable-visibility --enable-embedded-libevent --with-libevent-header=\\\"opal/mca/event/$opal_event_base_include\\\""
|
||||
AS_IF([test "$enable_debug" = "yes"],
|
||||
[opal_pmix_pmix2x_args="--enable-debug $opal_pmix_pmix2x_args"
|
||||
[opal_pmix_pmix3x_args="--enable-debug $opal_pmix_pmix3x_args"
|
||||
CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS -g"],
|
||||
[opal_pmix_pmix2x_args="--disable-debug $opal_pmix_pmix2x_args"
|
||||
[opal_pmix_pmix3x_args="--disable-debug $opal_pmix_pmix3x_args"
|
||||
CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS"])
|
||||
AS_IF([test "$enable_install_libpmix" = "yes" && test "$enable_dlopen" != "no"],
|
||||
[opal_pmix_pmix2x_args="--with-pmix-extra-lib=$OPAL_TOP_BUILDDIR/opal/lib${OPAL_LIB_PREFIX}open-pal.la $opal_pmix_pmix2x_args"],
|
||||
[opal_pmix_pmix2x_args="--enable-embedded-mode $opal_pmix_pmix2x_args"])
|
||||
[opal_pmix_pmix3x_args="--with-pmix-extra-lib=$OPAL_TOP_BUILDDIR/opal/lib${OPAL_LIB_PREFIX}open-pal.la $opal_pmix_pmix3x_args"],
|
||||
[opal_pmix_pmix3x_args="--enable-embedded-mode $opal_pmix_pmix3x_args"])
|
||||
AS_IF([test "$with_devel_headers" = "yes"],
|
||||
[opal_pmix_pmix2x_args="--with-devel-headers $opal_pmix_pmix2x_args"])
|
||||
[opal_pmix_pmix3x_args="--with-devel-headers $opal_pmix_pmix3x_args"])
|
||||
CPPFLAGS="-I$OPAL_TOP_SRCDIR -I$OPAL_TOP_BUILDDIR -I$OPAL_TOP_SRCDIR/opal/include -I$OPAL_TOP_BUILDDIR/opal/include $CPPFLAGS"
|
||||
|
||||
OPAL_CONFIG_SUBDIR([$opal_pmix_pmix2x_basedir/pmix],
|
||||
[$opal_pmix_pmix2x_args $opal_subdir_args 'CFLAGS=$CFLAGS' 'CPPFLAGS=$CPPFLAGS'],
|
||||
[opal_pmix_pmix2x_happy=1], [opal_pmix_pmix2x_happy=0])
|
||||
OPAL_CONFIG_SUBDIR([$opal_pmix_pmix3x_basedir/pmix],
|
||||
[$opal_pmix_pmix3x_args $opal_subdir_args 'CFLAGS=$CFLAGS' 'CPPFLAGS=$CPPFLAGS'],
|
||||
[opal_pmix_pmix3x_happy=1], [opal_pmix_pmix3x_happy=0])
|
||||
|
||||
CFLAGS=$opal_pmix_pmix2x_save_CFLAGS
|
||||
CPPFLAGS=$opal_pmix_pmix2x_save_CPPFLAGS
|
||||
LDFLAGS=$opal_pmix_pmix2x_save_LDFLAGS
|
||||
LIBS=$opal_pmix_pmix2x_save_LIBS
|
||||
CFLAGS=$opal_pmix_pmix3x_save_CFLAGS
|
||||
CPPFLAGS=$opal_pmix_pmix3x_save_CPPFLAGS
|
||||
LDFLAGS=$opal_pmix_pmix3x_save_LDFLAGS
|
||||
LIBS=$opal_pmix_pmix3x_save_LIBS
|
||||
|
||||
# If we are not building the internal pmix, then check to see
|
||||
# if we are linking to an external v2.x library. If not, then
|
||||
@ -82,37 +82,37 @@ AC_DEFUN([MCA_opal_pmix_pmix2x_CONFIG],[
|
||||
# infrastructure is setup properly (e.g., w.r.t. SUBDIRS=pmix in
|
||||
# this directory's Makefile.am, we still need the Autotools "make
|
||||
# distclean" infrastructure to work properly).
|
||||
AC_MSG_CHECKING([if v2.x component is to be used])
|
||||
AC_MSG_CHECKING([if v3.x component is to be used])
|
||||
AS_IF([test "$opal_external_pmix_happy" = "yes"],
|
||||
[AC_MSG_RESULT([no - disqualifying this component])
|
||||
opal_pmix_pmix2x_happy=0],
|
||||
[AC_MSG_RESULT([yes - using the internal v2.x library])
|
||||
opal_pmix_pmix3x_happy=0],
|
||||
[AC_MSG_RESULT([yes - using the internal v3.x library])
|
||||
# Build flags for our Makefile.am
|
||||
opal_pmix_pmix2x_LDFLAGS=
|
||||
opal_pmix_pmix2x_LIBS="$OPAL_TOP_BUILDDIR/$opal_pmix_pmix2x_basedir/pmix/src/libpmix.la"
|
||||
opal_pmix_pmix2x_CPPFLAGS="-I$OPAL_TOP_BUILDDIR/$opal_pmix_pmix2x_basedir/pmix/include -I$OPAL_TOP_BUILDDIR/$opal_pmix_pmix2x_basedir/pmix -I$OPAL_TOP_SRCDIR/$opal_pmix_pmix2x_basedir/pmix/include -I$OPAL_TOP_SRCDIR/$opal_pmix_pmix2x_basedir/pmix"
|
||||
opal_pmix_pmix2x_DEPENDENCIES="$OPAL_TOP_BUILDDIR/$opal_pmix_pmix2x_basedir/pmix/src/libpmix.la"])
|
||||
opal_pmix_pmix3x_LDFLAGS=
|
||||
opal_pmix_pmix3x_LIBS="$OPAL_TOP_BUILDDIR/$opal_pmix_pmix3x_basedir/pmix/src/libpmix.la"
|
||||
opal_pmix_pmix3x_CPPFLAGS="-I$OPAL_TOP_BUILDDIR/$opal_pmix_pmix3x_basedir/pmix/include -I$OPAL_TOP_BUILDDIR/$opal_pmix_pmix3x_basedir/pmix -I$OPAL_TOP_SRCDIR/$opal_pmix_pmix3x_basedir/pmix/include -I$OPAL_TOP_SRCDIR/$opal_pmix_pmix3x_basedir/pmix"
|
||||
opal_pmix_pmix3x_DEPENDENCIES="$OPAL_TOP_BUILDDIR/$opal_pmix_pmix3x_basedir/pmix/src/libpmix.la"])
|
||||
|
||||
AC_SUBST([opal_pmix_pmix2x_LIBS])
|
||||
AC_SUBST([opal_pmix_pmix2x_CPPFLAGS])
|
||||
AC_SUBST([opal_pmix_pmix2x_LDFLAGS])
|
||||
AC_SUBST([opal_pmix_pmix2x_DEPENDENCIES])
|
||||
AC_SUBST([opal_pmix_pmix3x_LIBS])
|
||||
AC_SUBST([opal_pmix_pmix3x_CPPFLAGS])
|
||||
AC_SUBST([opal_pmix_pmix3x_LDFLAGS])
|
||||
AC_SUBST([opal_pmix_pmix3x_DEPENDENCIES])
|
||||
|
||||
# Finally, add some flags to the wrapper compiler so that our
|
||||
# headers can be found.
|
||||
pmix_pmix2x_status_filename="$OPAL_TOP_BUILDDIR/$opal_pmix_pmix2x_basedir/pmix/config.status"
|
||||
pmix_pmix2x_WRAPPER_EXTRA_CPPFLAGS=`egrep PMIX_EMBEDDED_CPPFLAGS $pmix_pmix2x_status_filename | cut -d\" -f4`
|
||||
pmix_pmix2x_WRAPPER_EXTRA_LDFLAGS=`egrep PMIX_EMBEDDED_LDFLAGS $pmix_pmix2x_status_filename | cut -d\" -f4`
|
||||
pmix_pmix2x_WRAPPER_EXTRA_LIBS=`egrep PMIX_EMBEDDED_LIBS $pmix_pmix2x_status_filename | cut -d\" -f4`
|
||||
pmix_pmix3x_status_filename="$OPAL_TOP_BUILDDIR/$opal_pmix_pmix3x_basedir/pmix/config.status"
|
||||
pmix_pmix3x_WRAPPER_EXTRA_CPPFLAGS=`egrep PMIX_EMBEDDED_CPPFLAGS $pmix_pmix3x_status_filename | cut -d\" -f4`
|
||||
pmix_pmix3x_WRAPPER_EXTRA_LDFLAGS=`egrep PMIX_EMBEDDED_LDFLAGS $pmix_pmix3x_status_filename | cut -d\" -f4`
|
||||
pmix_pmix3x_WRAPPER_EXTRA_LIBS=`egrep PMIX_EMBEDDED_LIBS $pmix_pmix3x_status_filename | cut -d\" -f4`
|
||||
|
||||
AC_MSG_CHECKING([PMIx extra wrapper CPPFLAGS])
|
||||
AC_MSG_RESULT([$pmix_pmix2x_WRAPPER_EXTRA_CPPFLAGS])
|
||||
AC_MSG_RESULT([$pmix_pmix3x_WRAPPER_EXTRA_CPPFLAGS])
|
||||
AC_MSG_CHECKING([PMIx extra wrapper LDFLAGS])
|
||||
AC_MSG_RESULT([$pmix_pmix2x_WRAPPER_EXTRA_LDFLAGS])
|
||||
AC_MSG_RESULT([$pmix_pmix3x_WRAPPER_EXTRA_LDFLAGS])
|
||||
AC_MSG_CHECKING([PMIx extra wrapper LIBS])
|
||||
AC_MSG_RESULT([$pmix_pmix2x_WRAPPER_EXTRA_LIBS])
|
||||
AC_MSG_RESULT([$pmix_pmix3x_WRAPPER_EXTRA_LIBS])
|
||||
|
||||
AS_IF([test $opal_pmix_pmix2x_happy -eq 1],
|
||||
AS_IF([test $opal_pmix_pmix3x_happy -eq 1],
|
||||
[$1],
|
||||
[$2])
|
||||
|
32
opal/mca/pmix/pmix3x/help-pmix-pmix3x.txt
Обычный файл
32
opal/mca/pmix/pmix3x/help-pmix-pmix3x.txt
Обычный файл
@ -0,0 +1,32 @@
|
||||
# -*- text -*-
|
||||
#
|
||||
# Copyright (c) 2004-2007 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) 2017 Intel, Inc. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
# This is the US/English help file for Open MPI MCA error messages.
|
||||
#
|
||||
[evars]
|
||||
We found conflicting directives regarding the location of OPAL vs PMIx
|
||||
installation directories:
|
||||
|
||||
%s
|
||||
|
||||
This usually indicates that OMPI was configured to use its internal copy
|
||||
of PMIx, but another installation of PMIx is also in use on this system
|
||||
and could potentially cause confusion between the two sets of plugins.
|
||||
Please either unset the indicated environment variables, or configure
|
||||
OMPI to use the external PMIx installation.
|
@ -13,8 +13,8 @@
|
||||
# major, minor, and release are generally combined in the form
|
||||
# <major>.<minor>.<release>.
|
||||
|
||||
major=2
|
||||
minor=1
|
||||
major=3
|
||||
minor=0
|
||||
release=0
|
||||
|
||||
# greek is used for alpha or beta release tags. If it is non-empty,
|
||||
@ -30,7 +30,7 @@ greek=
|
||||
# command, or with the date (if "git describe" fails) in the form of
|
||||
# "date<date>".
|
||||
|
||||
repo_rev=git9526eb3
|
||||
repo_rev=git6001265
|
||||
|
||||
# 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="Oct 06, 2017"
|
||||
date="Oct 09, 2017"
|
||||
|
||||
# The shared library version of each of PMIx's public libraries.
|
||||
# These versions are maintained in accordance with the "Library
|
@ -96,19 +96,19 @@ echo "--> Found specfile: $specfile"
|
||||
|
||||
rpmtopdir=${rpmtopdir:-"`grep %_topdir $HOME/.rpmmacros | awk '{ print $2 }'`"}
|
||||
if test "$rpmtopdir" != ""; then
|
||||
rpmbuild_options="$rpmbuild_options --define '_topdir $rpmtopdir'"
|
||||
rpmbuild_options="$rpmbuild_options --define '_topdir $rpmtopdir'"
|
||||
if test ! -d "$rpmtopdir"; then
|
||||
mkdir -p "$rpmtopdir"
|
||||
mkdir -p "$rpmtopdir/BUILD"
|
||||
mkdir -p "$rpmtopdir/RPMS"
|
||||
mkdir -p "$rpmtopdir/RPMS/i386"
|
||||
mkdir -p "$rpmtopdir/RPMS/i586"
|
||||
mkdir -p "$rpmtopdir/RPMS/i686"
|
||||
mkdir -p "$rpmtopdir/RPMS/noarch"
|
||||
mkdir -p "$rpmtopdir/RPMS/athlon"
|
||||
mkdir -p "$rpmtopdir/SOURCES"
|
||||
mkdir -p "$rpmtopdir/SPECS"
|
||||
mkdir -p "$rpmtopdir/SRPMS"
|
||||
mkdir -p "$rpmtopdir"
|
||||
mkdir -p "$rpmtopdir/BUILD"
|
||||
mkdir -p "$rpmtopdir/RPMS"
|
||||
mkdir -p "$rpmtopdir/RPMS/i386"
|
||||
mkdir -p "$rpmtopdir/RPMS/i586"
|
||||
mkdir -p "$rpmtopdir/RPMS/i686"
|
||||
mkdir -p "$rpmtopdir/RPMS/noarch"
|
||||
mkdir -p "$rpmtopdir/RPMS/athlon"
|
||||
mkdir -p "$rpmtopdir/SOURCES"
|
||||
mkdir -p "$rpmtopdir/SPECS"
|
||||
mkdir -p "$rpmtopdir/SRPMS"
|
||||
fi
|
||||
need_root=0
|
||||
elif test -d /usr/src/RPM; then
|
@ -36,16 +36,16 @@ for branch in $branches; do
|
||||
module load libevent/pmix-$branch
|
||||
|
||||
./$script $@ >dist.out 2>&1
|
||||
if test "$?" != "0"; then
|
||||
cat <<EOF
|
||||
if test "$?" != "0"; then
|
||||
cat <<EOF
|
||||
=============================================================================
|
||||
== Dist failure
|
||||
== Last few lines of output (full results in dist.out file):
|
||||
=============================================================================
|
||||
EOF
|
||||
tail -n 20 dist.out
|
||||
exit 1
|
||||
fi
|
||||
tail -n 20 dist.out
|
||||
exit 1
|
||||
fi
|
||||
|
||||
module unload libevent
|
||||
module unload autotools
|
@ -44,5 +44,3 @@
|
||||
fun:PMIx_init
|
||||
fun:main
|
||||
}
|
||||
|
||||
|
@ -192,7 +192,7 @@
|
||||
|
||||
Summary: An extended/exascale implementation of PMI
|
||||
Name: %{?_name:%{_name}}%{!?_name:pmix}
|
||||
Version: 2.1.0
|
||||
Version: 3.0.0
|
||||
Release: 1%{?dist}
|
||||
License: BSD
|
||||
Group: Development/Libraries
|
@ -395,4 +395,3 @@ if [ -n "$JENKINS_RUN_TESTS" -a "$JENKINS_RUN_TESTS" -ne "0" ]; then
|
||||
set -e
|
||||
fi
|
||||
fi
|
||||
|
@ -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 (c) 2016 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
@ -44,7 +44,7 @@ int main(int argc, char **argv)
|
||||
int rc;
|
||||
pmix_value_t value;
|
||||
pmix_value_t *val = &value;
|
||||
pmix_proc_t proc;
|
||||
pmix_proc_t proc, newproc;
|
||||
uint32_t nprocs;
|
||||
char nsp2[PMIX_MAX_NSLEN+1];
|
||||
pmix_app_t *app;
|
||||
@ -135,12 +135,13 @@ int main(int argc, char **argv)
|
||||
/* just cycle the connect/disconnect functions */
|
||||
(void)strncpy(proc.nspace, myproc.nspace, PMIX_MAX_NSLEN);
|
||||
proc.rank = PMIX_RANK_WILDCARD;
|
||||
if (PMIX_SUCCESS != (rc = PMIx_Connect(&proc, 1, NULL, 0))) {
|
||||
if (PMIX_SUCCESS != (rc = PMIx_Connect(&proc, 1, NULL, 0, newproc.nspace, &newproc.rank))) {
|
||||
fprintf(stderr, "Client ns %s rank %d: PMIx_Connect failed: %d\n", myproc.nspace, myproc.rank, rc);
|
||||
goto done;
|
||||
}
|
||||
fprintf(stderr, "Client ns %s rank %d: PMIx_Connect succeeded\n", myproc.nspace, myproc.rank);
|
||||
if (PMIX_SUCCESS != (rc = PMIx_Disconnect(&proc, 1, NULL, 0))) {
|
||||
fprintf(stderr, "Client ns %s rank %d: PMIx_Connect succeeded - new ID: %s:%d\n",
|
||||
myproc.nspace, myproc.rank, newproc.nspace, newproc.rank);
|
||||
if (PMIX_SUCCESS != (rc = PMIx_Disconnect(newproc.nspace, NULL, 0))) {
|
||||
fprintf(stderr, "Client ns %s rank %d: PMIx_Disonnect failed: %d\n", myproc.nspace, myproc.rank, rc);
|
||||
goto done;
|
||||
}
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
x
Ссылка в новой задаче
Block a user