Modify the orte_process_info structure to handle a broader range of process types by replacing the individual booleans with a 32-bit bitmap. Use a set of #define's to define the individual bits, and a set of matching macros to test for them. Update the orte code base to use the macros instead of the booleans.
Minor mod to the ompi layer to use the new #define's - just one-line name replacements. This commit was SVN r21144.
Этот коммит содержится в:
родитель
c32516c9a3
Коммит
4be24521aa
@ -336,9 +336,8 @@ int ompi_mpi_init(int argc, char **argv, int requested, int *provided)
|
|||||||
gettimeofday(&ompistart, NULL);
|
gettimeofday(&ompistart, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Setup ORTE - note that we are not a tool */
|
/* Setup ORTE - note that we are an MPI process */
|
||||||
orte_process_info.mpi_proc = true;
|
if (ORTE_SUCCESS != (ret = orte_init(ORTE_PROC_MPI))) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_init(ORTE_NON_TOOL))) {
|
|
||||||
error = "ompi_mpi_init: orte_init failed";
|
error = "ompi_mpi_init: orte_init failed";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
#include "orte/mca/rml/rml.h"
|
#include "orte/mca/rml/rml.h"
|
||||||
|
|
||||||
@ -187,7 +188,7 @@ int main(int argc, char *argv[])
|
|||||||
* so that we only open up the communications infrastructure. No
|
* so that we only open up the communications infrastructure. No
|
||||||
* session directories will be created.
|
* session directories will be created.
|
||||||
*/
|
*/
|
||||||
if (ORTE_SUCCESS != (ret = orte_init(ORTE_TOOL))) {
|
if (ORTE_SUCCESS != (ret = orte_init(ORTE_PROC_TOOL))) {
|
||||||
fprintf(stderr, "ompi-server: failed to initialize -- aborting\n");
|
fprintf(stderr, "ompi-server: failed to initialize -- aborting\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -89,6 +89,7 @@
|
|||||||
#include "orte/mca/notifier/notifier.h"
|
#include "orte/mca/notifier/notifier.h"
|
||||||
#include "orte/mca/notifier/base/base.h"
|
#include "orte/mca/notifier/base/base.h"
|
||||||
#include "orte/util/show_help.h"
|
#include "orte/util/show_help.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#if !ORTE_DISABLE_FULL_SUPPORT
|
#if !ORTE_DISABLE_FULL_SUPPORT
|
||||||
#include "orte/mca/iof/iof.h"
|
#include "orte/mca/iof/iof.h"
|
||||||
#include "orte/mca/iof/base/base.h"
|
#include "orte/mca/iof/base/base.h"
|
||||||
@ -269,9 +270,9 @@ void ompi_info::open_components()
|
|||||||
component_map["installdirs"] = &opal_installdirs_components;
|
component_map["installdirs"] = &opal_installdirs_components;
|
||||||
|
|
||||||
// ORTE frameworks
|
// ORTE frameworks
|
||||||
// Set orte_process_info.hnp to true to force all frameworks to
|
// Set orte_process_info.proc_type to HNP to force all frameworks to
|
||||||
// open components
|
// open components
|
||||||
orte_process_info.hnp = true;
|
orte_process_info.proc_type = ORTE_PROC_HNP;
|
||||||
|
|
||||||
if (ORTE_SUCCESS != orte_errmgr_base_open()) {
|
if (ORTE_SUCCESS != orte_errmgr_base_open()) {
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -92,7 +92,7 @@ int orte_errmgr_default_component_close(void)
|
|||||||
int orte_errmgr_default_component_query(mca_base_module_t **module, int *priority)
|
int orte_errmgr_default_component_query(mca_base_module_t **module, int *priority)
|
||||||
{
|
{
|
||||||
/* If we are not an HNP, then don't pick us! */
|
/* If we are not an HNP, then don't pick us! */
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
/* don't take me! */
|
/* don't take me! */
|
||||||
*module = NULL;
|
*module = NULL;
|
||||||
return ORTE_ERROR;
|
return ORTE_ERROR;
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
static int alps_set_name(void);
|
static int alps_set_name(void);
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
||||||
@ -66,7 +66,7 @@ orte_ess_base_module_t orte_ess_alps_module = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
@ -83,13 +83,13 @@ static int rte_init(char flags)
|
|||||||
/* if I am a daemon, complete my setup using the
|
/* if I am a daemon, complete my setup using the
|
||||||
* default procedure
|
* default procedure
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_ess_base_orted_setup";
|
error = "orte_ess_base_orted_setup";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
@ -131,11 +131,11 @@ static int rte_finalize(void)
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* if I am a daemon, finalize using the default procedure */
|
/* if I am a daemon, finalize using the default procedure */
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
|
@ -164,7 +164,7 @@ int orte_ess_base_app_setup(void)
|
|||||||
error = "orte_snapc_base_open";
|
error = "orte_snapc_base_open";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
if (ORTE_SUCCESS != (ret = orte_snapc_base_select(orte_process_info.hnp, !orte_process_info.daemon))) {
|
if (ORTE_SUCCESS != (ret = orte_snapc_base_select(ORTE_PROC_IS_HNP, !ORTE_PROC_IS_DAEMON))) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_snapc_base_select";
|
error = "orte_snapc_base_select";
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -243,7 +243,7 @@ int orte_ess_base_orted_setup(void)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_snapc_base_select(orte_process_info.hnp, !orte_process_info.daemon))) {
|
if (ORTE_SUCCESS != (ret = orte_snapc_base_select(ORTE_PROC_IS_HNP, !ORTE_PROC_IS_DAEMON))) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_snapc_base_select";
|
error = "orte_snapc_base_select";
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -136,7 +136,7 @@ int orte_ess_base_tool_setup(void)
|
|||||||
error = "orte_snapc_base_open";
|
error = "orte_snapc_base_open";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
if (ORTE_SUCCESS != (ret = orte_snapc_base_select(orte_process_info.hnp, !orte_process_info.daemon))) {
|
if (ORTE_SUCCESS != (ret = orte_snapc_base_select(ORTE_PROC_IS_HNP, !ORTE_PROC_IS_DAEMON))) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_snapc_base_select";
|
error = "orte_snapc_base_select";
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
static int bproc_set_name(void);
|
static int bproc_set_name(void);
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static bool proc_is_local(orte_process_name_t *proc);
|
static bool proc_is_local(orte_process_name_t *proc);
|
||||||
static char* proc_get_hostname(orte_process_name_t *proc);
|
static char* proc_get_hostname(orte_process_name_t *proc);
|
||||||
@ -62,7 +62,7 @@ static opal_pointer_array_t nidmap;
|
|||||||
static orte_pmap_t *pmap = NULL;
|
static orte_pmap_t *pmap = NULL;
|
||||||
static orte_vpid_t nprocs;
|
static orte_vpid_t nprocs;
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
@ -79,14 +79,14 @@ static int rte_init(char flags)
|
|||||||
/* if I am a daemon, complete my setup using the
|
/* if I am a daemon, complete my setup using the
|
||||||
* default procedure
|
* default procedure
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_ess_base_orted_setup";
|
error = "orte_ess_base_orted_setup";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
@ -134,11 +134,11 @@ static int rte_finalize(void)
|
|||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
/* if I am a daemon, finalize using the default procedure */
|
/* if I am a daemon, finalize using the default procedure */
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
#include "orte/mca/ess/base/base.h"
|
#include "orte/mca/ess/base/base.h"
|
||||||
#include "orte/mca/ess/cnos/ess_cnos.h"
|
#include "orte/mca/ess/cnos/ess_cnos.h"
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static void rte_abort(int status, bool report) __opal_attribute_noreturn__;
|
static void rte_abort(int status, bool report) __opal_attribute_noreturn__;
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
@ -64,7 +64,7 @@ orte_ess_base_module_t orte_ess_cnos_module = {
|
|||||||
|
|
||||||
static cnos_nidpid_map_t *map;
|
static cnos_nidpid_map_t *map;
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
int nprocs;
|
int nprocs;
|
||||||
|
18
orte/mca/ess/env/ess_env_module.c
поставляемый
18
orte/mca/ess/env/ess_env_module.c
поставляемый
@ -73,7 +73,7 @@
|
|||||||
|
|
||||||
static int env_set_name(void);
|
static int env_set_name(void);
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
||||||
@ -110,7 +110,7 @@ orte_ess_base_module_t orte_ess_env_module = {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
@ -127,14 +127,14 @@ static int rte_init(char flags)
|
|||||||
/* if I am a daemon, complete my setup using the
|
/* if I am a daemon, complete my setup using the
|
||||||
* default procedure
|
* default procedure
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_ess_base_orted_setup";
|
error = "orte_ess_base_orted_setup";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
@ -177,11 +177,11 @@ static int rte_finalize(void)
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* if I am a daemon, finalize using the default procedure */
|
/* if I am a daemon, finalize using the default procedure */
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
@ -413,6 +413,7 @@ static int env_set_name(void)
|
|||||||
static int rte_ft_event(int state)
|
static int rte_ft_event(int state)
|
||||||
{
|
{
|
||||||
int ret, exit_status = ORTE_SUCCESS;
|
int ret, exit_status = ORTE_SUCCESS;
|
||||||
|
orte_proc_type_t svtype;
|
||||||
|
|
||||||
/******** Checkpoint Prep ********/
|
/******** Checkpoint Prep ********/
|
||||||
if(OPAL_CRS_CHECKPOINT == state) {
|
if(OPAL_CRS_CHECKPOINT == state) {
|
||||||
@ -496,12 +497,13 @@ static int rte_ft_event(int state)
|
|||||||
* Restart the routed framework
|
* Restart the routed framework
|
||||||
* JJH: Lie to the finalize function so it does not try to contact the daemon.
|
* JJH: Lie to the finalize function so it does not try to contact the daemon.
|
||||||
*/
|
*/
|
||||||
orte_process_info.tool = true;
|
svtype = orte_process_info.proc_type;
|
||||||
|
orte_process_info.proc_type = ORTE_PROC_TOOL;
|
||||||
if (ORTE_SUCCESS != (ret = orte_routed.finalize()) ) {
|
if (ORTE_SUCCESS != (ret = orte_routed.finalize()) ) {
|
||||||
exit_status = ret;
|
exit_status = ret;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
orte_process_info.tool = false;
|
orte_process_info.proc_type = svtype;
|
||||||
if (ORTE_SUCCESS != (ret = orte_routed.initialize()) ) {
|
if (ORTE_SUCCESS != (ret = orte_routed.initialize()) ) {
|
||||||
exit_status = ret;
|
exit_status = ret;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
#include "opal/mca/mca.h"
|
#include "opal/mca/mca.h"
|
||||||
|
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
|
|
||||||
BEGIN_C_DECLS
|
BEGIN_C_DECLS
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -38,7 +40,7 @@ BEGIN_C_DECLS
|
|||||||
/*
|
/*
|
||||||
* Initialize the RTE for this environment
|
* Initialize the RTE for this environment
|
||||||
*/
|
*/
|
||||||
typedef int (*orte_ess_base_module_init_fn_t)(char flags);
|
typedef int (*orte_ess_base_module_init_fn_t)(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Finalize the RTE for this environment
|
* Finalize the RTE for this environment
|
||||||
|
@ -73,7 +73,7 @@ int orte_ess_hnp_component_query(mca_base_module_t **module, int *priority)
|
|||||||
/* we are the hnp module - we need to be selected
|
/* we are the hnp module - we need to be selected
|
||||||
* IFF we are designated as the hnp
|
* IFF we are designated as the hnp
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
*priority = 100;
|
*priority = 100;
|
||||||
*module = (mca_base_module_t *)&orte_ess_hnp_module;
|
*module = (mca_base_module_t *)&orte_ess_hnp_module;
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
#include "orte/mca/ess/base/base.h"
|
#include "orte/mca/ess/base/base.h"
|
||||||
#include "orte/mca/ess/hnp/ess_hnp.h"
|
#include "orte/mca/ess/hnp/ess_hnp.h"
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static void rte_abort(int status, bool report) __opal_attribute_noreturn__;
|
static void rte_abort(int status, bool report) __opal_attribute_noreturn__;
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
@ -104,7 +104,7 @@ orte_ess_base_module_t orte_ess_hnp_module = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
@ -430,7 +430,7 @@ static int rte_init(char flags)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_snapc_base_select(orte_process_info.hnp, !orte_process_info.daemon))) {
|
if (ORTE_SUCCESS != (ret = orte_snapc_base_select(ORTE_PROC_IS_HNP, !ORTE_PROC_IS_DAEMON))) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_snapc_base_select";
|
error = "orte_snapc_base_select";
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "orte/util/show_help.h"
|
#include "orte/util/show_help.h"
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
#include "opal/mca/base/mca_base_param.h"
|
#include "opal/mca/base/mca_base_param.h"
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
@ -47,7 +48,7 @@
|
|||||||
|
|
||||||
static int lsf_set_name(void);
|
static int lsf_set_name(void);
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
||||||
@ -76,7 +77,7 @@ orte_ess_base_module_t orte_ess_lsf_module = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
@ -94,13 +95,13 @@ static int rte_init(char flags)
|
|||||||
/* if I am a daemon, complete my setup using the
|
/* if I am a daemon, complete my setup using the
|
||||||
* default procedure
|
* default procedure
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_ess_base_orted_setup";
|
error = "orte_ess_base_orted_setup";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
@ -143,11 +144,11 @@ static int rte_finalize(void)
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* if I am a daemon, finalize using the default procedure */
|
/* if I am a daemon, finalize using the default procedure */
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
#include "orte/mca/ess/base/base.h"
|
#include "orte/mca/ess/base/base.h"
|
||||||
#include "orte/mca/ess/portals_utcp/ess_portals_utcp.h"
|
#include "orte/mca/ess/portals_utcp/ess_portals_utcp.h"
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static void rte_abort(int status, bool report) __opal_attribute_noreturn__;
|
static void rte_abort(int status, bool report) __opal_attribute_noreturn__;
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
@ -63,7 +63,7 @@ orte_ess_base_module_t orte_ess_portals_utcp_module = {
|
|||||||
|
|
||||||
static char **nidmap=NULL;
|
static char **nidmap=NULL;
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
orte_vpid_t vpid;
|
orte_vpid_t vpid;
|
||||||
|
@ -73,9 +73,9 @@ int orte_ess_singleton_component_query(mca_base_module_t **module, int *priority
|
|||||||
/* if we are an HNP, daemon, or tool, then we
|
/* if we are an HNP, daemon, or tool, then we
|
||||||
* are definitely not a singleton!
|
* are definitely not a singleton!
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp ||
|
if (ORTE_PROC_IS_HNP ||
|
||||||
orte_process_info.daemon ||
|
ORTE_PROC_IS_DAEMON ||
|
||||||
orte_process_info.tool) {
|
ORTE_PROC_IS_TOOL) {
|
||||||
*module = NULL;
|
*module = NULL;
|
||||||
return ORTE_ERROR;
|
return ORTE_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ static void set_handler_default(int sig)
|
|||||||
#endif /* !defined(__WINDOWS__) */
|
#endif /* !defined(__WINDOWS__) */
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
||||||
@ -93,7 +93,7 @@ orte_ess_base_module_t orte_ess_singleton_module = {
|
|||||||
NULL /* ft_event */
|
NULL /* ft_event */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@ -373,7 +373,7 @@ static int fork_hnp(void)
|
|||||||
orte_process_info.my_hnp_uri = strdup(orted_uri);
|
orte_process_info.my_hnp_uri = strdup(orted_uri);
|
||||||
|
|
||||||
/* indicate we are a singleton so orte_init knows what to do */
|
/* indicate we are a singleton so orte_init knows what to do */
|
||||||
orte_process_info.singleton = true;
|
orte_process_info.proc_type = ORTE_PROC_SINGLETON;
|
||||||
/* all done - report success */
|
/* all done - report success */
|
||||||
free(orted_uri);
|
free(orted_uri);
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
|
|
||||||
static int slave_set_name(void);
|
static int slave_set_name(void);
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
||||||
@ -110,7 +110,7 @@ orte_ess_base_module_t orte_ess_slave_module = {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
@ -309,6 +309,7 @@ static int slave_set_name(void)
|
|||||||
static int rte_ft_event(int state)
|
static int rte_ft_event(int state)
|
||||||
{
|
{
|
||||||
int ret, exit_status = ORTE_SUCCESS;
|
int ret, exit_status = ORTE_SUCCESS;
|
||||||
|
orte_proc_type_t svtype;
|
||||||
|
|
||||||
/******** Checkpoint Prep ********/
|
/******** Checkpoint Prep ********/
|
||||||
if(OPAL_CRS_CHECKPOINT == state) {
|
if(OPAL_CRS_CHECKPOINT == state) {
|
||||||
@ -392,12 +393,13 @@ static int rte_ft_event(int state)
|
|||||||
* Restart the routed framework
|
* Restart the routed framework
|
||||||
* JJH: Lie to the finalize function so it does not try to contact the daemon.
|
* JJH: Lie to the finalize function so it does not try to contact the daemon.
|
||||||
*/
|
*/
|
||||||
orte_process_info.tool = true;
|
svtype = orte_process_info.proc_type;
|
||||||
|
orte_process_info.proc_type = ORTE_PROC_TOOL;
|
||||||
if (ORTE_SUCCESS != (ret = orte_routed.finalize()) ) {
|
if (ORTE_SUCCESS != (ret = orte_routed.finalize()) ) {
|
||||||
exit_status = ret;
|
exit_status = ret;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
orte_process_info.tool = false;
|
orte_process_info.proc_type = svtype;
|
||||||
if (ORTE_SUCCESS != (ret = orte_routed.initialize()) ) {
|
if (ORTE_SUCCESS != (ret = orte_routed.initialize()) ) {
|
||||||
exit_status = ret;
|
exit_status = ret;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -70,7 +70,7 @@ static char *get_slurm_nodename(int nodeid);
|
|||||||
static int slurm_set_name(void);
|
static int slurm_set_name(void);
|
||||||
static int build_daemon_nidmap(void);
|
static int build_daemon_nidmap(void);
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
||||||
@ -99,7 +99,7 @@ orte_ess_base_module_t orte_ess_slurm_module = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
@ -116,7 +116,7 @@ static int rte_init(char flags)
|
|||||||
/* if I am a daemon, complete my setup using the
|
/* if I am a daemon, complete my setup using the
|
||||||
* default procedure
|
* default procedure
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_ess_base_orted_setup";
|
error = "orte_ess_base_orted_setup";
|
||||||
@ -148,7 +148,7 @@ static int rte_init(char flags)
|
|||||||
}
|
}
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
@ -191,11 +191,11 @@ static int rte_finalize(void)
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* if I am a daemon, finalize using the default procedure */
|
/* if I am a daemon, finalize using the default procedure */
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.tool) {
|
} else if (ORTE_PROC_IS_TOOL) {
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
/* otherwise, if I am a tool proc, use that procedure */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
|
@ -74,7 +74,7 @@ int orte_ess_slurmd_component_query(mca_base_module_t **module, int *priority)
|
|||||||
* by mpirun but are in a slurm world
|
* by mpirun but are in a slurm world
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (orte_process_info.mpi_proc &&
|
if (ORTE_PROC_IS_MPI &&
|
||||||
NULL != getenv("SLURM_JOBID") &&
|
NULL != getenv("SLURM_JOBID") &&
|
||||||
NULL != getenv("SLURM_STEPID") &&
|
NULL != getenv("SLURM_STEPID") &&
|
||||||
NULL == orte_process_info.my_hnp_uri) {
|
NULL == orte_process_info.my_hnp_uri) {
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
#include "orte/mca/ess/base/base.h"
|
#include "orte/mca/ess/base/base.h"
|
||||||
#include "orte/mca/ess/slurmd/ess_slurmd.h"
|
#include "orte/mca/ess/slurmd/ess_slurmd.h"
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static int rte_finalize(void);
|
static int rte_finalize(void);
|
||||||
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
static uint8_t proc_get_locality(orte_process_name_t *proc);
|
||||||
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
||||||
@ -89,7 +89,7 @@ static bool app_init_complete;
|
|||||||
|
|
||||||
/**** MODULE FUNCTIONS ****/
|
/**** MODULE FUNCTIONS ****/
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
|
@ -74,7 +74,7 @@ int orte_ess_tool_component_query(mca_base_module_t **module, int *priority)
|
|||||||
* precedence. This would happen, for example,
|
* precedence. This would happen, for example,
|
||||||
* if the tool is a distributed set of processes
|
* if the tool is a distributed set of processes
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.tool) {
|
if (ORTE_PROC_IS_TOOL || ORTE_PROC_IS_TOOL_WNAME) {
|
||||||
*priority = 10;
|
*priority = 10;
|
||||||
*module = (mca_base_module_t *)&orte_ess_tool_module;
|
*module = (mca_base_module_t *)&orte_ess_tool_module;
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
#include "orte/mca/ess/base/base.h"
|
#include "orte/mca/ess/base/base.h"
|
||||||
#include "orte/mca/ess/tool/ess_tool.h"
|
#include "orte/mca/ess/tool/ess_tool.h"
|
||||||
|
|
||||||
static int rte_init(char flags);
|
static int rte_init(void);
|
||||||
static void rte_abort(int status, bool report) __opal_attribute_noreturn__;
|
static void rte_abort(int status, bool report) __opal_attribute_noreturn__;
|
||||||
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
static orte_vpid_t proc_get_daemon(orte_process_name_t *proc);
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ orte_ess_base_module_t orte_ess_tool_module = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static int rte_init(char flags)
|
static int rte_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include "orte/mca/rml/rml_types.h"
|
#include "orte/mca/rml/rml_types.h"
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
|
|
||||||
#include "orte/mca/filem/filem.h"
|
#include "orte/mca/filem/filem.h"
|
||||||
#include "orte/mca/filem/base/base.h"
|
#include "orte/mca/filem/base/base.h"
|
||||||
@ -231,7 +232,7 @@ int orte_filem_base_get_proc_node_name(orte_process_name_t *proc, char **machine
|
|||||||
/* set default answer */
|
/* set default answer */
|
||||||
*machine_name = NULL;
|
*machine_name = NULL;
|
||||||
|
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
/* if I am the HNP, then all the data structures are local to me - no
|
/* if I am the HNP, then all the data structures are local to me - no
|
||||||
* need to send messages around to get the info
|
* need to send messages around to get the info
|
||||||
*/
|
*/
|
||||||
|
@ -71,7 +71,7 @@ int orte_filem_base_comm_start(void)
|
|||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* Only active in HNP and daemons */
|
/* Only active in HNP and daemons */
|
||||||
if( !orte_process_info.hnp && !orte_process_info.daemon ) {
|
if( !ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON ) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
if ( recv_issued ) {
|
if ( recv_issued ) {
|
||||||
@ -101,7 +101,7 @@ int orte_filem_base_comm_stop(void)
|
|||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* Only active in HNP and daemons */
|
/* Only active in HNP and daemons */
|
||||||
if( !orte_process_info.hnp && !orte_process_info.daemon ) {
|
if( !ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON ) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
if ( recv_issued ) {
|
if ( recv_issued ) {
|
||||||
|
@ -86,7 +86,7 @@ static int init(void)
|
|||||||
/* if we are a daemon or the hnp, we need to post a
|
/* if we are a daemon or the hnp, we need to post a
|
||||||
* recv to catch any collective operations
|
* recv to catch any collective operations
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon || orte_process_info.hnp) {
|
if (ORTE_PROC_IS_DAEMON || ORTE_PROC_IS_HNP) {
|
||||||
if (ORTE_SUCCESS != (rc = orte_rml.recv_buffer_nb(ORTE_NAME_WILDCARD,
|
if (ORTE_SUCCESS != (rc = orte_rml.recv_buffer_nb(ORTE_NAME_WILDCARD,
|
||||||
ORTE_RML_TAG_DAEMON_COLLECTIVE,
|
ORTE_RML_TAG_DAEMON_COLLECTIVE,
|
||||||
ORTE_RML_NON_PERSISTENT,
|
ORTE_RML_NON_PERSISTENT,
|
||||||
@ -109,7 +109,7 @@ static void finalize(void)
|
|||||||
/* if we are a daemon or the hnp, we need to cancel the
|
/* if we are a daemon or the hnp, we need to cancel the
|
||||||
* recv we posted
|
* recv we posted
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon || orte_process_info.hnp) {
|
if (ORTE_PROC_IS_DAEMON || ORTE_PROC_IS_HNP) {
|
||||||
orte_rml.recv_cancel(ORTE_NAME_WILDCARD, ORTE_RML_TAG_DAEMON_COLLECTIVE);
|
orte_rml.recv_cancel(ORTE_NAME_WILDCARD, ORTE_RML_TAG_DAEMON_COLLECTIVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -201,7 +201,7 @@ static int xcast(orte_jobid_t job,
|
|||||||
* fire right away, but that's okay
|
* fire right away, but that's okay
|
||||||
* The macro makes a copy of the buffer, so it's okay to release it here
|
* The macro makes a copy of the buffer, so it's okay to release it here
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &buf, ORTE_RML_TAG_DAEMON, orte_daemon_cmd_processor);
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &buf, ORTE_RML_TAG_DAEMON, orte_daemon_cmd_processor);
|
||||||
} else {
|
} else {
|
||||||
/* otherwise, send it to the HNP for relay */
|
/* otherwise, send it to the HNP for relay */
|
||||||
@ -540,7 +540,7 @@ static int daemon_collective(orte_process_name_t *sender, opal_buffer_t *data)
|
|||||||
|
|
||||||
if (jobdat->num_collected == jobdat->num_participating) {
|
if (jobdat->num_collected == jobdat->num_participating) {
|
||||||
/* if I am the HNP, go process the results */
|
/* if I am the HNP, go process the results */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
goto hnp_process;
|
goto hnp_process;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ static int init(void)
|
|||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opal_profile && orte_process_info.mpi_proc) {
|
if (opal_profile && ORTE_PROC_IS_MPI) {
|
||||||
/* if I am an MPI application proc, then create a buffer
|
/* if I am an MPI application proc, then create a buffer
|
||||||
* to pack all my attributes in */
|
* to pack all my attributes in */
|
||||||
profile_buf = OBJ_NEW(opal_buffer_t);
|
profile_buf = OBJ_NEW(opal_buffer_t);
|
||||||
@ -112,7 +112,7 @@ static int init(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orte_process_info.hnp && recv_on) {
|
if (ORTE_PROC_IS_HNP && recv_on) {
|
||||||
/* open the profile file for writing */
|
/* open the profile file for writing */
|
||||||
if (NULL == opal_profile_file) {
|
if (NULL == opal_profile_file) {
|
||||||
/* no file specified - we will just ignore any incoming data */
|
/* no file specified - we will just ignore any incoming data */
|
||||||
@ -138,7 +138,7 @@ static int init(void)
|
|||||||
/* if we are a daemon or the hnp, we need to post a
|
/* if we are a daemon or the hnp, we need to post a
|
||||||
* recv to catch any collective operations
|
* recv to catch any collective operations
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon || orte_process_info.hnp) {
|
if (ORTE_PROC_IS_DAEMON || ORTE_PROC_IS_HNP) {
|
||||||
if (ORTE_SUCCESS != (rc = orte_rml.recv_buffer_nb(ORTE_NAME_WILDCARD,
|
if (ORTE_SUCCESS != (rc = orte_rml.recv_buffer_nb(ORTE_NAME_WILDCARD,
|
||||||
ORTE_RML_TAG_DAEMON_COLLECTIVE,
|
ORTE_RML_TAG_DAEMON_COLLECTIVE,
|
||||||
ORTE_RML_NON_PERSISTENT,
|
ORTE_RML_NON_PERSISTENT,
|
||||||
@ -161,7 +161,7 @@ static void finalize(void)
|
|||||||
|
|
||||||
orte_grpcomm_base_modex_finalize();
|
orte_grpcomm_base_modex_finalize();
|
||||||
|
|
||||||
if (opal_profile && orte_process_info.mpi_proc) {
|
if (opal_profile && ORTE_PROC_IS_MPI) {
|
||||||
/* if I am an MPI proc, send my buffer to the collector */
|
/* if I am an MPI proc, send my buffer to the collector */
|
||||||
boptr = &bo;
|
boptr = &bo;
|
||||||
opal_dss.unload(profile_buf, (void**)&boptr->bytes, &boptr->size);
|
opal_dss.unload(profile_buf, (void**)&boptr->bytes, &boptr->size);
|
||||||
@ -175,7 +175,7 @@ static void finalize(void)
|
|||||||
OBJ_DESTRUCT(&profile);
|
OBJ_DESTRUCT(&profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orte_process_info.hnp && recv_on) {
|
if (ORTE_PROC_IS_HNP && recv_on) {
|
||||||
/* if we are profiling and I am the HNP, then stop the
|
/* if we are profiling and I am the HNP, then stop the
|
||||||
* profiling receive
|
* profiling receive
|
||||||
*/
|
*/
|
||||||
@ -189,7 +189,7 @@ static void finalize(void)
|
|||||||
/* if we are a daemon or the hnp, we need to cancel the
|
/* if we are a daemon or the hnp, we need to cancel the
|
||||||
* recv we posted
|
* recv we posted
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon || orte_process_info.hnp) {
|
if (ORTE_PROC_IS_DAEMON || ORTE_PROC_IS_HNP) {
|
||||||
orte_rml.recv_cancel(ORTE_NAME_WILDCARD, ORTE_RML_TAG_DAEMON_COLLECTIVE);
|
orte_rml.recv_cancel(ORTE_NAME_WILDCARD, ORTE_RML_TAG_DAEMON_COLLECTIVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -281,7 +281,7 @@ static int xcast(orte_jobid_t job,
|
|||||||
* fire right away, but that's okay
|
* fire right away, but that's okay
|
||||||
* The macro makes a copy of the buffer, so it's okay to release it here
|
* The macro makes a copy of the buffer, so it's okay to release it here
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &buf, ORTE_RML_TAG_DAEMON, orte_daemon_cmd_processor);
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &buf, ORTE_RML_TAG_DAEMON, orte_daemon_cmd_processor);
|
||||||
} else {
|
} else {
|
||||||
/* otherwise, send it to the HNP for relay */
|
/* otherwise, send it to the HNP for relay */
|
||||||
@ -928,7 +928,7 @@ static int daemon_collective(orte_process_name_t *sender, opal_buffer_t *data)
|
|||||||
|
|
||||||
if (jobdat->num_collected == jobdat->num_participating) {
|
if (jobdat->num_collected == jobdat->num_participating) {
|
||||||
/* if I am the HNP, go process the results */
|
/* if I am the HNP, go process the results */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
goto hnp_process;
|
goto hnp_process;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ static int xcast(orte_jobid_t job,
|
|||||||
* fire right away, but that's okay
|
* fire right away, but that's okay
|
||||||
* The macro makes a copy of the buffer, so it's okay to release it here
|
* The macro makes a copy of the buffer, so it's okay to release it here
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &buf, ORTE_RML_TAG_DAEMON, orte_daemon_cmd_processor);
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &buf, ORTE_RML_TAG_DAEMON, orte_daemon_cmd_processor);
|
||||||
} else {
|
} else {
|
||||||
/* otherwise, send it to the HNP for relay */
|
/* otherwise, send it to the HNP for relay */
|
||||||
|
@ -47,7 +47,7 @@ int orte_iof_base_close(void)
|
|||||||
OBJ_DESTRUCT(&orte_iof_base.iof_components_opened);
|
OBJ_DESTRUCT(&orte_iof_base.iof_components_opened);
|
||||||
|
|
||||||
OPAL_THREAD_LOCK(&orte_iof_base.iof_write_output_lock);
|
OPAL_THREAD_LOCK(&orte_iof_base.iof_write_output_lock);
|
||||||
if (!orte_process_info.daemon) {
|
if (!ORTE_PROC_IS_DAEMON) {
|
||||||
/* check if anything is still trying to be written out */
|
/* check if anything is still trying to be written out */
|
||||||
wev = orte_iof_base.iof_write_stdout->wev;
|
wev = orte_iof_base.iof_write_stdout->wev;
|
||||||
if (!opal_list_is_empty(&wev->outputs)) {
|
if (!opal_list_is_empty(&wev->outputs)) {
|
||||||
|
@ -195,7 +195,7 @@ int orte_iof_base_open(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* daemons do not need to do this as they do not write out stdout/err */
|
/* daemons do not need to do this as they do not write out stdout/err */
|
||||||
if (!orte_process_info.daemon) {
|
if (!ORTE_PROC_IS_DAEMON) {
|
||||||
/* setup the stdout event */
|
/* setup the stdout event */
|
||||||
ORTE_IOF_SINK_DEFINE(&orte_iof_base.iof_write_stdout, ORTE_PROC_MY_NAME,
|
ORTE_IOF_SINK_DEFINE(&orte_iof_base.iof_write_stdout, ORTE_PROC_MY_NAME,
|
||||||
1, ORTE_IOF_STDOUT, orte_iof_base_write_handler, NULL);
|
1, ORTE_IOF_STDOUT, orte_iof_base_write_handler, NULL);
|
||||||
|
@ -131,7 +131,7 @@ static int orte_iof_hnp_query(mca_base_module_t **module, int *priority)
|
|||||||
*priority = -1;
|
*priority = -1;
|
||||||
|
|
||||||
/* if we are not the HNP, then don't use this module */
|
/* if we are not the HNP, then don't use this module */
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_ERROR;
|
return ORTE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ static int orte_iof_orted_query(mca_base_module_t **module, int *priority)
|
|||||||
*priority = -1;
|
*priority = -1;
|
||||||
|
|
||||||
/* if we are not a daemon, then don't use this module */
|
/* if we are not a daemon, then don't use this module */
|
||||||
if (!orte_process_info.daemon) {
|
if (!ORTE_PROC_IS_DAEMON) {
|
||||||
return ORTE_ERROR;
|
return ORTE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ static int orte_iof_tool_query(mca_base_module_t **module, int *priority)
|
|||||||
*priority = -1;
|
*priority = -1;
|
||||||
|
|
||||||
/* if we are not a tool, then don't use this module */
|
/* if we are not a tool, then don't use this module */
|
||||||
if (!orte_process_info.tool) {
|
if (!ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_ERROR;
|
return ORTE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -659,7 +659,7 @@ REPORT_ERROR:
|
|||||||
/* if we are the HNP, then we would rather not send this to ourselves -
|
/* if we are the HNP, then we would rather not send this to ourselves -
|
||||||
* instead, we queue it up for local processing
|
* instead, we queue it up for local processing
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
||||||
ORTE_RML_TAG_APP_LAUNCH_CALLBACK,
|
ORTE_RML_TAG_APP_LAUNCH_CALLBACK,
|
||||||
orte_plm_base_app_report_launch);
|
orte_plm_base_app_report_launch);
|
||||||
@ -1416,7 +1416,7 @@ CLEANUP:
|
|||||||
/* if we are the HNP, then we would rather not send this to ourselves -
|
/* if we are the HNP, then we would rather not send this to ourselves -
|
||||||
* instead, we queue it up for local processing
|
* instead, we queue it up for local processing
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
||||||
ORTE_RML_TAG_APP_LAUNCH_CALLBACK,
|
ORTE_RML_TAG_APP_LAUNCH_CALLBACK,
|
||||||
orte_plm_base_app_report_launch);
|
orte_plm_base_app_report_launch);
|
||||||
@ -1814,7 +1814,7 @@ int orte_odls_base_default_require_sync(orte_process_name_t *proc,
|
|||||||
/* if we are the HNP, then we would rather not send this to ourselves -
|
/* if we are the HNP, then we would rather not send this to ourselves -
|
||||||
* instead, we queue it up for local processing
|
* instead, we queue it up for local processing
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &buffer,
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &buffer,
|
||||||
ORTE_RML_TAG_INIT_ROUTES,
|
ORTE_RML_TAG_INIT_ROUTES,
|
||||||
orte_routed_base_process_msg);
|
orte_routed_base_process_msg);
|
||||||
@ -1920,7 +1920,7 @@ static void check_proc_complete(orte_odls_child_t *child)
|
|||||||
/* if we are the HNP, then we would rather not send this to ourselves -
|
/* if we are the HNP, then we would rather not send this to ourselves -
|
||||||
* instead, we queue it up for local processing
|
* instead, we queue it up for local processing
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
||||||
ORTE_RML_TAG_PLM,
|
ORTE_RML_TAG_PLM,
|
||||||
orte_plm_base_receive_process_msg);
|
orte_plm_base_receive_process_msg);
|
||||||
@ -1989,7 +1989,7 @@ static void check_proc_complete(orte_odls_child_t *child)
|
|||||||
/* if we are the HNP, then we would rather not send this to ourselves -
|
/* if we are the HNP, then we would rather not send this to ourselves -
|
||||||
* instead, we queue it up for local processing
|
* instead, we queue it up for local processing
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
||||||
ORTE_RML_TAG_PLM,
|
ORTE_RML_TAG_PLM,
|
||||||
orte_plm_base_receive_process_msg);
|
orte_plm_base_receive_process_msg);
|
||||||
@ -2483,7 +2483,7 @@ RECORD:
|
|||||||
/* if we are the HNP, then we would rather not send this to ourselves -
|
/* if we are the HNP, then we would rather not send this to ourselves -
|
||||||
* instead, we queue it up for local processing
|
* instead, we queue it up for local processing
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &alert,
|
||||||
ORTE_RML_TAG_PLM,
|
ORTE_RML_TAG_PLM,
|
||||||
orte_plm_base_receive_process_msg);
|
orte_plm_base_receive_process_msg);
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include "opal/util/basename.h"
|
#include "opal/util/basename.h"
|
||||||
|
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
|
|
||||||
#include "orte/mca/filem/filem.h"
|
#include "orte/mca/filem/filem.h"
|
||||||
@ -72,7 +73,7 @@ int orte_odls_base_preload_files_app_context(orte_app_context_t* app_context)
|
|||||||
|
|
||||||
/* Define the process set */
|
/* Define the process set */
|
||||||
p_set = OBJ_NEW(orte_filem_base_process_set_t);
|
p_set = OBJ_NEW(orte_filem_base_process_set_t);
|
||||||
if( orte_process_info.hnp ) {
|
if( ORTE_PROC_IS_HNP ) {
|
||||||
/* if I am the HNP, then use me as the source */
|
/* if I am the HNP, then use me as the source */
|
||||||
p_set->source.jobid = ORTE_PROC_MY_NAME->jobid;
|
p_set->source.jobid = ORTE_PROC_MY_NAME->jobid;
|
||||||
p_set->source.vpid = ORTE_PROC_MY_NAME->vpid;
|
p_set->source.vpid = ORTE_PROC_MY_NAME->vpid;
|
||||||
@ -224,7 +225,7 @@ static int orte_odls_base_preload_append_files(orte_app_context_t* context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* If this is the HNP, then source = sink, so use the same path for each local and remote */
|
/* If this is the HNP, then source = sink, so use the same path for each local and remote */
|
||||||
if( orte_process_info.hnp ) {
|
if( ORTE_PROC_IS_HNP ) {
|
||||||
free(remote_targets[i]);
|
free(remote_targets[i]);
|
||||||
remote_targets[i] = strdup(local_ref);
|
remote_targets[i] = strdup(local_ref);
|
||||||
}
|
}
|
||||||
|
@ -596,7 +596,7 @@ mca_oob_tcp_create_listen(int *target_sd, unsigned short *target_port, uint16_t
|
|||||||
port in the range. Otherwise, tcp_port_min will be 0, which
|
port in the range. Otherwise, tcp_port_min will be 0, which
|
||||||
means "pick any port" */
|
means "pick any port" */
|
||||||
if (AF_INET == af_family) {
|
if (AF_INET == af_family) {
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (NULL != mca_oob_tcp_component.tcp4_static_ports) {
|
if (NULL != mca_oob_tcp_component.tcp4_static_ports) {
|
||||||
/* if static ports were provided, the daemon takes the
|
/* if static ports were provided, the daemon takes the
|
||||||
* first entry in the list
|
* first entry in the list
|
||||||
@ -613,7 +613,7 @@ mca_oob_tcp_create_listen(int *target_sd, unsigned short *target_port, uint16_t
|
|||||||
opal_argv_append_nosize(&ports, "0");
|
opal_argv_append_nosize(&ports, "0");
|
||||||
orte_static_ports = false;
|
orte_static_ports = false;
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.mpi_proc) {
|
} else if (ORTE_PROC_IS_MPI) {
|
||||||
if (NULL != mca_oob_tcp_component.tcp4_static_ports) {
|
if (NULL != mca_oob_tcp_component.tcp4_static_ports) {
|
||||||
/* if static ports were provided, an mpi proc takes its
|
/* if static ports were provided, an mpi proc takes its
|
||||||
* node_local_rank entry in the list IF it has that info
|
* node_local_rank entry in the list IF it has that info
|
||||||
@ -652,7 +652,7 @@ mca_oob_tcp_create_listen(int *target_sd, unsigned short *target_port, uint16_t
|
|||||||
|
|
||||||
#if OPAL_WANT_IPV6
|
#if OPAL_WANT_IPV6
|
||||||
if (AF_INET6 == af_family) {
|
if (AF_INET6 == af_family) {
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
if (NULL != mca_oob_tcp_component.tcp6_static_ports) {
|
if (NULL != mca_oob_tcp_component.tcp6_static_ports) {
|
||||||
/* if static ports were provided, the daemon takes the
|
/* if static ports were provided, the daemon takes the
|
||||||
* first entry in the list
|
* first entry in the list
|
||||||
@ -669,7 +669,7 @@ mca_oob_tcp_create_listen(int *target_sd, unsigned short *target_port, uint16_t
|
|||||||
opal_argv_append_nosize(&ports, "0");
|
opal_argv_append_nosize(&ports, "0");
|
||||||
orte_static_ports = false;
|
orte_static_ports = false;
|
||||||
}
|
}
|
||||||
} else if (orte_process_info.mpi_proc) {
|
} else if (ORTE_PROC_IS_MPI) {
|
||||||
if (NULL != mca_oob_tcp_component.tcp6_static_ports) {
|
if (NULL != mca_oob_tcp_component.tcp6_static_ports) {
|
||||||
/* if static ports were provided, an mpi proc takes its
|
/* if static ports were provided, an mpi proc takes its
|
||||||
* node_local_rank entry in the list IF it has that info
|
* node_local_rank entry in the list IF it has that info
|
||||||
@ -1480,10 +1480,10 @@ int mca_oob_tcp_init(void)
|
|||||||
jobid = ORTE_PROC_MY_NAME->jobid;
|
jobid = ORTE_PROC_MY_NAME->jobid;
|
||||||
|
|
||||||
/* Fix up the listen type. This is the first call into the OOB in
|
/* Fix up the listen type. This is the first call into the OOB in
|
||||||
which the orte_process_info.hnp field is reliably set. The
|
which the ORTE_PROC_IS_HNP field is reliably set. The
|
||||||
listen_mode should only be listen_thread for the HNP -- all
|
listen_mode should only be listen_thread for the HNP -- all
|
||||||
others should use the traditional event library. */
|
others should use the traditional event library. */
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
mca_oob_tcp_component.tcp_listen_type = OOB_TCP_EVENT;
|
mca_oob_tcp_component.tcp_listen_type = OOB_TCP_EVENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -479,7 +479,7 @@ static void mca_oob_tcp_msg_data(mca_oob_tcp_msg_t* msg, mca_oob_tcp_peer_t* pee
|
|||||||
* another job family - procs dont' need to do this because
|
* another job family - procs dont' need to do this because
|
||||||
* they always route through their daemons anyway
|
* they always route through their daemons anyway
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.mpi_proc) {
|
if (!ORTE_PROC_IS_MPI) {
|
||||||
if ((ORTE_JOB_FAMILY(msg->msg_hdr.msg_origin.jobid) !=
|
if ((ORTE_JOB_FAMILY(msg->msg_hdr.msg_origin.jobid) !=
|
||||||
ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) &&
|
ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) &&
|
||||||
(0 != ORTE_JOB_FAMILY(msg->msg_hdr.msg_origin.jobid))) {
|
(0 != ORTE_JOB_FAMILY(msg->msg_hdr.msg_origin.jobid))) {
|
||||||
|
@ -39,7 +39,7 @@ int orte_plm_base_finalize(void)
|
|||||||
orte_plm.finalize();
|
orte_plm.finalize();
|
||||||
|
|
||||||
/* if we are the HNP, then stop our receive */
|
/* if we are the HNP, then stop our receive */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
if (ORTE_SUCCESS != (rc = orte_plm_base_comm_stop())) {
|
if (ORTE_SUCCESS != (rc = orte_plm_base_comm_stop())) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
|
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
#include "orte/util/nidmap.h"
|
#include "orte/util/nidmap.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
|
|
||||||
#include "orte/mca/plm/base/plm_private.h"
|
#include "orte/mca/plm/base/plm_private.h"
|
||||||
#include "orte/mca/plm/base/base.h"
|
#include "orte/mca/plm/base/base.h"
|
||||||
@ -1014,7 +1015,7 @@ int orte_plm_base_orted_append_basic_args(int *argc, char ***argv,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* pass the total number of daemons that will be in the system */
|
/* pass the total number of daemons that will be in the system */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
jdata = orte_get_job_data_object(ORTE_PROC_MY_NAME->jobid);
|
jdata = orte_get_job_data_object(ORTE_PROC_MY_NAME->jobid);
|
||||||
num_procs = jdata->num_procs;
|
num_procs = jdata->num_procs;
|
||||||
} else {
|
} else {
|
||||||
@ -1027,7 +1028,7 @@ int orte_plm_base_orted_append_basic_args(int *argc, char ***argv,
|
|||||||
free(param);
|
free(param);
|
||||||
|
|
||||||
/* pass the uri of the hnp */
|
/* pass the uri of the hnp */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
rml_uri = orte_rml.get_contact_info();
|
rml_uri = orte_rml.get_contact_info();
|
||||||
} else {
|
} else {
|
||||||
rml_uri = orte_process_info.my_hnp_uri;
|
rml_uri = orte_process_info.my_hnp_uri;
|
||||||
@ -1041,7 +1042,7 @@ int orte_plm_base_orted_append_basic_args(int *argc, char ***argv,
|
|||||||
* being sure to "purge" any that would cause problems
|
* being sure to "purge" any that would cause problems
|
||||||
* on backend nodes
|
* on backend nodes
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
cnt = opal_argv_count(orted_cmd_line);
|
cnt = opal_argv_count(orted_cmd_line);
|
||||||
for (i=0; i < cnt; i+=3) {
|
for (i=0; i < cnt; i+=3) {
|
||||||
/* if the specified option is more than one word, we don't
|
/* if the specified option is more than one word, we don't
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include "orte/mca/rml/rml_types.h"
|
#include "orte/mca/rml/rml_types.h"
|
||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/orte_wait.h"
|
#include "orte/runtime/orte_wait.h"
|
||||||
#include "orte/orted/orted.h"
|
#include "orte/orted/orted.h"
|
||||||
|
|
||||||
@ -279,7 +280,7 @@ int orte_plm_base_orted_kill_local_procs(orte_jobid_t job)
|
|||||||
* fire right away, but that's okay
|
* fire right away, but that's okay
|
||||||
* The macro makes a copy of the buffer, so it's okay to release it here
|
* The macro makes a copy of the buffer, so it's okay to release it here
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &cmd, ORTE_RML_TAG_DAEMON, orte_daemon_cmd_processor);
|
ORTE_MESSAGE_EVENT(ORTE_PROC_MY_NAME, &cmd, ORTE_RML_TAG_DAEMON, orte_daemon_cmd_processor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ CLEANUP:
|
|||||||
OBJ_DESTRUCT(&answer);
|
OBJ_DESTRUCT(&answer);
|
||||||
|
|
||||||
/* see if an error occurred - if so, wakeup the HNP so we can exit */
|
/* see if an error occurred - if so, wakeup the HNP so we can exit */
|
||||||
if (orte_process_info.hnp && ORTE_SUCCESS != rc) {
|
if (ORTE_PROC_IS_HNP && ORTE_SUCCESS != rc) {
|
||||||
orte_trigger_event(&orte_exit);
|
orte_trigger_event(&orte_exit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ int orte_plm_base_select(void)
|
|||||||
* If we didn't find one, and we are a daemon, then default to retaining the proxy.
|
* If we didn't find one, and we are a daemon, then default to retaining the proxy.
|
||||||
* Otherwise, if we didn't find one to select, that is unacceptable.
|
* Otherwise, if we didn't find one to select, that is unacceptable.
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
/* don't record a selected component or flag selected
|
/* don't record a selected component or flag selected
|
||||||
* so we finalize correctly - just leave the plm alone
|
* so we finalize correctly - just leave the plm alone
|
||||||
* as it defaults to pointing at the proxy
|
* as it defaults to pointing at the proxy
|
||||||
|
@ -143,7 +143,7 @@ static int orte_plm_ccp_component_query(mca_base_module_t **module, int *priorit
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if we are NOT an HNP, then don't select us */
|
/* if we are NOT an HNP, then don't select us */
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
pCluster->Release();
|
pCluster->Release();
|
||||||
*module = NULL;
|
*module = NULL;
|
||||||
return ORTE_ERROR;
|
return ORTE_ERROR;
|
||||||
|
@ -73,6 +73,7 @@
|
|||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
#include "orte/util/nidmap.h"
|
#include "orte/util/nidmap.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
|
|
||||||
#include "orte/mca/rml/rml.h"
|
#include "orte/mca/rml/rml.h"
|
||||||
#include "orte/mca/rml/rml_types.h"
|
#include "orte/mca/rml/rml_types.h"
|
||||||
@ -294,7 +295,7 @@ static void orte_plm_rsh_wait_daemon(pid_t pid, int status, void* cbdata)
|
|||||||
/* if we are not the HNP, send a message to the HNP alerting it
|
/* if we are not the HNP, send a message to the HNP alerting it
|
||||||
* to the failure
|
* to the failure
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
opal_buffer_t buf;
|
opal_buffer_t buf;
|
||||||
orte_vpid_t *vpid=(orte_vpid_t*)cbdata;
|
orte_vpid_t *vpid=(orte_vpid_t*)cbdata;
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_plm_globals.output,
|
OPAL_OUTPUT_VERBOSE((1, orte_plm_globals.output,
|
||||||
@ -664,7 +665,7 @@ static int setup_launch(int *argcptr, char ***argvptr,
|
|||||||
* by enclosing them in quotes. Check for any multi-word
|
* by enclosing them in quotes. Check for any multi-word
|
||||||
* mca params passed to mpirun and include them
|
* mca params passed to mpirun and include them
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
int cnt, i;
|
int cnt, i;
|
||||||
cnt = opal_argv_count(orted_cmd_line);
|
cnt = opal_argv_count(orted_cmd_line);
|
||||||
for (i=0; i < cnt; i+=3) {
|
for (i=0; i < cnt; i+=3) {
|
||||||
|
@ -86,7 +86,7 @@ static int ras_alps_open(void)
|
|||||||
static int orte_ras_alps_component_query(mca_base_module_t **module, int *priority)
|
static int orte_ras_alps_component_query(mca_base_module_t **module, int *priority)
|
||||||
{
|
{
|
||||||
/* if we are not an HNP, then we must not be selected */
|
/* if we are not an HNP, then we must not be selected */
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
*module = NULL;
|
*module = NULL;
|
||||||
return ORTE_ERROR;
|
return ORTE_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -104,7 +104,7 @@ static int orte_ras_ccp_component_query(mca_base_module_t **module, int *priorit
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if we are NOT an HNP, then don't select us */
|
/* if we are NOT an HNP, then don't select us */
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
pCluster->Release();
|
pCluster->Release();
|
||||||
*module = NULL;
|
*module = NULL;
|
||||||
return ORTE_ERROR;
|
return ORTE_ERROR;
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
#include "orte/mca/routed/routed.h"
|
#include "orte/mca/routed/routed.h"
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
|
|
||||||
#include "orte/mca/rml/rml.h"
|
#include "orte/mca/rml/rml.h"
|
||||||
@ -131,7 +132,7 @@ int orte_rml_base_update_contact_info(opal_buffer_t* data)
|
|||||||
* in our process_info struct so we can correctly route any messages
|
* in our process_info struct so we can correctly route any messages
|
||||||
*/
|
*/
|
||||||
if (ORTE_PROC_MY_NAME->jobid == name.jobid &&
|
if (ORTE_PROC_MY_NAME->jobid == name.jobid &&
|
||||||
orte_process_info.daemon &&
|
ORTE_PROC_IS_DAEMON &&
|
||||||
orte_process_info.num_procs < num_procs) {
|
orte_process_info.num_procs < num_procs) {
|
||||||
orte_process_info.num_procs = num_procs;
|
orte_process_info.num_procs = num_procs;
|
||||||
/* if we changed it, then we better update the routed
|
/* if we changed it, then we better update the routed
|
||||||
|
@ -58,7 +58,7 @@ int orte_routed_base_comm_start(void)
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (recv_issued || !orte_process_info.hnp) {
|
if (recv_issued || !ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ int orte_routed_base_comm_stop(void)
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (!recv_issued || !orte_process_info.hnp) {
|
if (!recv_issued || !ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,9 +109,9 @@ static int finalize(void)
|
|||||||
/* if I am an application process, indicate that I am
|
/* if I am an application process, indicate that I am
|
||||||
* truly finalizing prior to departure
|
* truly finalizing prior to departure
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp &&
|
if (!ORTE_PROC_IS_HNP &&
|
||||||
!orte_process_info.daemon &&
|
!ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
if (ORTE_SUCCESS != (rc = orte_routed_base_register_sync(false))) {
|
if (ORTE_SUCCESS != (rc = orte_routed_base_register_sync(false))) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
return rc;
|
return rc;
|
||||||
@ -119,7 +119,7 @@ static int finalize(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if I am the HNP, I need to stop the comm recv */
|
/* if I am the HNP, I need to stop the comm recv */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
orte_routed_base_comm_stop();
|
orte_routed_base_comm_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,8 +153,8 @@ static int delete_route(orte_process_name_t *proc)
|
|||||||
/* if I am an application process, I don't have any routes
|
/* if I am an application process, I don't have any routes
|
||||||
* so there is nothing for me to do
|
* so there is nothing for me to do
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp && !orte_process_info.daemon &&
|
if (!ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,7 +174,7 @@ static int delete_route(orte_process_name_t *proc)
|
|||||||
* in my routing table and thus have nothing to do
|
* in my routing table and thus have nothing to do
|
||||||
* here, just return
|
* here, just return
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,8 +221,8 @@ static int update_route(orte_process_name_t *target,
|
|||||||
/* if I am an application process, we don't update the route since
|
/* if I am an application process, we don't update the route since
|
||||||
* we automatically route everything through the local daemon
|
* we automatically route everything through the local daemon
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp && !orte_process_info.daemon &&
|
if (!ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +249,7 @@ static int update_route(orte_process_name_t *target,
|
|||||||
* anything to this job family via my HNP - so nothing to do
|
* anything to this job family via my HNP - so nothing to do
|
||||||
* here, just return
|
* here, just return
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,8 +315,8 @@ static orte_process_name_t get_route(orte_process_name_t *target)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if I am an application process, always route via my local daemon */
|
/* if I am an application process, always route via my local daemon */
|
||||||
if (!orte_process_info.hnp && !orte_process_info.daemon &&
|
if (!ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
ret = ORTE_PROC_MY_DAEMON;
|
ret = ORTE_PROC_MY_DAEMON;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
@ -334,7 +334,7 @@ static orte_process_name_t get_route(orte_process_name_t *target)
|
|||||||
/* IF THIS IS FOR A DIFFERENT JOB FAMILY... */
|
/* IF THIS IS FOR A DIFFERENT JOB FAMILY... */
|
||||||
if (ORTE_JOB_FAMILY(target->jobid) != ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) {
|
if (ORTE_JOB_FAMILY(target->jobid) != ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) {
|
||||||
/* if I am a daemon, route this via the HNP */
|
/* if I am a daemon, route this via the HNP */
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
ret = ORTE_PROC_MY_HNP;
|
ret = ORTE_PROC_MY_HNP;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
@ -495,7 +495,7 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* if I am a tool, then I stand alone - there is nothing to do */
|
/* if I am a tool, then I stand alone - there is nothing to do */
|
||||||
if (orte_process_info.tool) {
|
if (ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -503,7 +503,7 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
* from the data sent to me for launch and update the routing tables to
|
* from the data sent to me for launch and update the routing tables to
|
||||||
* point at the daemon for each proc
|
* point at the daemon for each proc
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
||||||
"%s routed_binomial: init routes for daemon job %s\n\thnp_uri %s",
|
"%s routed_binomial: init routes for daemon job %s\n\thnp_uri %s",
|
||||||
@ -558,7 +558,7 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
||||||
"%s routed_binomial: init routes for HNP job %s",
|
"%s routed_binomial: init routes for HNP job %s",
|
||||||
@ -851,7 +851,7 @@ static int update_routing_tree(void)
|
|||||||
/* if I am anything other than a daemon or the HNP, this
|
/* if I am anything other than a daemon or the HNP, this
|
||||||
* is a meaningless command as I am not allowed to route
|
* is a meaningless command as I am not allowed to route
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.daemon && !orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_DAEMON && !ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_ERR_NOT_SUPPORTED;
|
return ORTE_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -894,7 +894,7 @@ static orte_vpid_t get_routing_tree(opal_list_t *children)
|
|||||||
/* if I am anything other than a daemon or the HNP, this
|
/* if I am anything other than a daemon or the HNP, this
|
||||||
* is a meaningless command as I am not allowed to route
|
* is a meaningless command as I am not allowed to route
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.daemon && !orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_DAEMON && !ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_VPID_INVALID;
|
return ORTE_VPID_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -925,7 +925,7 @@ static int get_wireup_info(opal_buffer_t *buf)
|
|||||||
* is a meaningless command as I cannot get
|
* is a meaningless command as I cannot get
|
||||||
* the requested info
|
* the requested info
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_ERR_NOT_SUPPORTED;
|
return ORTE_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,9 @@
|
|||||||
#include "opal/util/output.h"
|
#include "opal/util/output.h"
|
||||||
|
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
|
#include "orte/mca/rml/rml.h"
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
|
|
||||||
#include "orte/mca/rml/base/rml_contact.h"
|
#include "orte/mca/rml/base/rml_contact.h"
|
||||||
@ -78,6 +80,20 @@ static int init(void)
|
|||||||
|
|
||||||
static int finalize(void)
|
static int finalize(void)
|
||||||
{
|
{
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
/* if I am the HNP, I need to stop the comm recv */
|
||||||
|
if (ORTE_PROC_IS_HNP) {
|
||||||
|
orte_routed_base_comm_stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ORTE_PROC_IS_MPI && NULL != orte_process_info.my_daemon_uri) {
|
||||||
|
/* if a daemon launched me, register that I am leaving */
|
||||||
|
if (ORTE_SUCCESS != (rc = orte_routed_base_register_sync(false))) {
|
||||||
|
ORTE_ERROR_LOG(rc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* destruct the global condition and lock */
|
/* destruct the global condition and lock */
|
||||||
OBJ_DESTRUCT(&cond);
|
OBJ_DESTRUCT(&cond);
|
||||||
OBJ_DESTRUCT(&lock);
|
OBJ_DESTRUCT(&lock);
|
||||||
@ -138,10 +154,128 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* if ndat=NULL, then we are being called during orte_init. In this
|
/* if I am a tool, then I stand alone - there is nothing to do */
|
||||||
* case, there is nothing to do
|
if (ORTE_PROC_IS_TOOL) {
|
||||||
|
return ORTE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if I am a daemon or HNP, then I have to extract the routing info for this job
|
||||||
|
* from the data sent to me for launch and update the routing tables to
|
||||||
|
* point at the daemon for each proc
|
||||||
*/
|
*/
|
||||||
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
|
|
||||||
|
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
||||||
|
"%s direct: init routes for daemon job %s\n\thnp_uri %s",
|
||||||
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
|
ORTE_JOBID_PRINT(job),
|
||||||
|
(NULL == orte_process_info.my_hnp_uri) ? "NULL" : orte_process_info.my_hnp_uri));
|
||||||
|
|
||||||
|
if (NULL == ndat) {
|
||||||
|
/* indicates this is being called during orte_init.
|
||||||
|
* Get the HNP's name for possible later use
|
||||||
|
*/
|
||||||
|
if (NULL == orte_process_info.my_hnp_uri) {
|
||||||
|
/* fatal error */
|
||||||
|
ORTE_ERROR_LOG(ORTE_ERR_FATAL);
|
||||||
|
return ORTE_ERR_FATAL;
|
||||||
|
}
|
||||||
|
/* set the contact info into the hash table */
|
||||||
|
if (ORTE_SUCCESS != (rc = orte_rml.set_contact_info(orte_process_info.my_hnp_uri))) {
|
||||||
|
ORTE_ERROR_LOG(rc);
|
||||||
|
return(rc);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* extract the hnp name and store it */
|
||||||
|
if (ORTE_SUCCESS != (rc = orte_rml_base_parse_uris(orte_process_info.my_hnp_uri,
|
||||||
|
ORTE_PROC_MY_HNP, NULL))) {
|
||||||
|
ORTE_ERROR_LOG(rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* daemons will send their contact info back to the HNP as
|
||||||
|
* part of the message confirming they are read to go. HNP's
|
||||||
|
* load their contact info during orte_init
|
||||||
|
*/
|
||||||
|
} else {
|
||||||
|
/* ndat != NULL means we are getting an update of RML info
|
||||||
|
* for the daemons - so update our contact info and routes
|
||||||
|
*/
|
||||||
|
if (ORTE_SUCCESS != (rc = orte_rml_base_update_contact_info(ndat))) {
|
||||||
|
ORTE_ERROR_LOG(rc);
|
||||||
|
}
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
OPAL_OUTPUT_VERBOSE((2, orte_routed_base_output,
|
||||||
|
"%s routed_direct: completed init routes",
|
||||||
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME)));
|
||||||
|
|
||||||
|
return ORTE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (ORTE_PROC_IS_HNP) {
|
||||||
|
|
||||||
|
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
||||||
|
"%s routed_direct: init routes for HNP job %s",
|
||||||
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
|
ORTE_JOBID_PRINT(job)));
|
||||||
|
|
||||||
|
if (NULL == ndat) {
|
||||||
|
/* if ndat is NULL, then this is being called during init, so just
|
||||||
|
* make myself available to catch any reported contact info
|
||||||
|
*/
|
||||||
|
if (ORTE_SUCCESS != (rc = orte_routed_base_comm_start())) {
|
||||||
|
ORTE_ERROR_LOG(rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* if this is for my own jobid, then I am getting an update of RML info
|
||||||
|
* for the daemons - so update our contact info and routes
|
||||||
|
*/
|
||||||
|
if (ORTE_PROC_MY_NAME->jobid == job) {
|
||||||
|
if (ORTE_SUCCESS != (rc = orte_rml_base_update_contact_info(ndat))) {
|
||||||
|
ORTE_ERROR_LOG(rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ORTE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** MUST BE A PROC ***/
|
||||||
|
|
||||||
|
/* if ndat=NULL, then we are being called during orte_init */
|
||||||
if (NULL == ndat) {
|
if (NULL == ndat) {
|
||||||
|
if (NULL != orte_process_info.my_daemon_uri) {
|
||||||
|
/* we are being launched by a daemon, so we need to
|
||||||
|
* register a sync with it to get our nidmap back
|
||||||
|
*/
|
||||||
|
/* Set the contact info in the RML - this won't actually establish
|
||||||
|
* the connection, but just tells the RML how to reach the daemon
|
||||||
|
* if/when we attempt to send to it
|
||||||
|
*/
|
||||||
|
if (ORTE_SUCCESS != (rc = orte_rml.set_contact_info(orte_process_info.my_daemon_uri))) {
|
||||||
|
ORTE_ERROR_LOG(rc);
|
||||||
|
return(rc);
|
||||||
|
}
|
||||||
|
/* extract the daemon's name so we can update the routing table */
|
||||||
|
if (ORTE_SUCCESS != (rc = orte_rml_base_parse_uris(orte_process_info.my_daemon_uri,
|
||||||
|
ORTE_PROC_MY_DAEMON, NULL))) {
|
||||||
|
ORTE_ERROR_LOG(rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
/* register ourselves -this sends a message to the daemon (warming up that connection)
|
||||||
|
* and sends our contact info to the HNP when all local procs have reported
|
||||||
|
*/
|
||||||
|
if (ORTE_SUCCESS != (rc = orte_routed_base_register_sync(true))) {
|
||||||
|
ORTE_ERROR_LOG(rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
/* no answer is expected or coming */
|
||||||
|
}
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,20 +317,35 @@ static int set_lifeline(orte_process_name_t *proc)
|
|||||||
|
|
||||||
static int update_routing_tree(void)
|
static int update_routing_tree(void)
|
||||||
{
|
{
|
||||||
/* this is a meaningless command for a direct as I am not allowed to route */
|
/* nothing to do here */
|
||||||
return ORTE_ERR_NOT_SUPPORTED;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static orte_vpid_t get_routing_tree(opal_list_t *children)
|
static orte_vpid_t get_routing_tree(opal_list_t *children)
|
||||||
{
|
{
|
||||||
/* this is a meaningless command for a direct as I am not allowed to route */
|
orte_vpid_t i;
|
||||||
|
orte_routed_tree_t *nm;
|
||||||
|
|
||||||
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
|
/* if I am not the HNP, there is nothing to do */
|
||||||
|
return ORTE_VPID_INVALID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if I am the HNP, then I need to construct a list containing all
|
||||||
|
* daemons so I can relay messages to them
|
||||||
|
*/
|
||||||
|
for (i=0; i < orte_process_info.num_procs; i++) {
|
||||||
|
nm = OBJ_NEW(orte_routed_tree_t);
|
||||||
|
nm->vpid = i;
|
||||||
|
opal_list_append(children, &nm->super);
|
||||||
|
}
|
||||||
return ORTE_VPID_INVALID;
|
return ORTE_VPID_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int get_wireup_info(opal_buffer_t *buf)
|
static int get_wireup_info(opal_buffer_t *buf)
|
||||||
{
|
{
|
||||||
/* this is a meaningless command for a direct as I am not allowed to route */
|
/* this is a meaningless command for a direct as I am not allowed to route */
|
||||||
return ORTE_ERR_NOT_SUPPORTED;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,9 +100,9 @@ static int finalize(void)
|
|||||||
/* if I am an application process, indicate that I am
|
/* if I am an application process, indicate that I am
|
||||||
* truly finalizing prior to departure
|
* truly finalizing prior to departure
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp &&
|
if (!ORTE_PROC_IS_HNP &&
|
||||||
!orte_process_info.daemon &&
|
!ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
if (ORTE_SUCCESS != (rc = orte_routed_base_register_sync(false))) {
|
if (ORTE_SUCCESS != (rc = orte_routed_base_register_sync(false))) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
return rc;
|
return rc;
|
||||||
@ -110,7 +110,7 @@ static int finalize(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if I am the HNP, I need to stop the comm recv */
|
/* if I am the HNP, I need to stop the comm recv */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
orte_routed_base_comm_stop();
|
orte_routed_base_comm_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,8 +137,8 @@ static int delete_route(orte_process_name_t *proc)
|
|||||||
/* if I am an application process, I don't have any routes
|
/* if I am an application process, I don't have any routes
|
||||||
* so there is nothing for me to do
|
* so there is nothing for me to do
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp && !orte_process_info.daemon &&
|
if (!ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,7 +158,7 @@ static int delete_route(orte_process_name_t *proc)
|
|||||||
* in my routing table and thus have nothing to do
|
* in my routing table and thus have nothing to do
|
||||||
* here, just return
|
* here, just return
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,8 +205,8 @@ static int update_route(orte_process_name_t *target,
|
|||||||
/* if I am an application process, we don't update the route since
|
/* if I am an application process, we don't update the route since
|
||||||
* we automatically route everything through the local daemon
|
* we automatically route everything through the local daemon
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp && !orte_process_info.daemon &&
|
if (!ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,7 +233,7 @@ static int update_route(orte_process_name_t *target,
|
|||||||
* anything to this job family via my HNP - so nothing to do
|
* anything to this job family via my HNP - so nothing to do
|
||||||
* here, just return
|
* here, just return
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,8 +293,8 @@ static orte_process_name_t get_route(orte_process_name_t *target)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if I am an application process, always route via my local daemon */
|
/* if I am an application process, always route via my local daemon */
|
||||||
if (!orte_process_info.hnp && !orte_process_info.daemon &&
|
if (!ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
ret = ORTE_PROC_MY_DAEMON;
|
ret = ORTE_PROC_MY_DAEMON;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
@ -312,7 +312,7 @@ static orte_process_name_t get_route(orte_process_name_t *target)
|
|||||||
/* IF THIS IS FOR A DIFFERENT JOB FAMILY... */
|
/* IF THIS IS FOR A DIFFERENT JOB FAMILY... */
|
||||||
if (ORTE_JOB_FAMILY(target->jobid) != ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) {
|
if (ORTE_JOB_FAMILY(target->jobid) != ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) {
|
||||||
/* if I am a daemon, route this via the HNP */
|
/* if I am a daemon, route this via the HNP */
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
ret = ORTE_PROC_MY_HNP;
|
ret = ORTE_PROC_MY_HNP;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
@ -490,7 +490,7 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* if I am a tool, then I stand alone - there is nothing to do */
|
/* if I am a tool, then I stand alone - there is nothing to do */
|
||||||
if (orte_process_info.tool) {
|
if (ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -498,7 +498,7 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
* from the data sent to me for launch and update the routing tables to
|
* from the data sent to me for launch and update the routing tables to
|
||||||
* point at the daemon for each proc
|
* point at the daemon for each proc
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
||||||
"%s routed_linear: init routes for daemon job %s\n\thnp_uri %s",
|
"%s routed_linear: init routes for daemon job %s\n\thnp_uri %s",
|
||||||
@ -553,7 +553,7 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
||||||
"%s routed_linear: init routes for HNP job %s",
|
"%s routed_linear: init routes for HNP job %s",
|
||||||
@ -781,7 +781,7 @@ static int update_routing_tree(void)
|
|||||||
/* if I am anything other than a daemon or the HNP, this
|
/* if I am anything other than a daemon or the HNP, this
|
||||||
* is a meaningless command as I am not allowed to route
|
* is a meaningless command as I am not allowed to route
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.daemon && !orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_DAEMON && !ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_ERR_NOT_SUPPORTED;
|
return ORTE_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -797,7 +797,7 @@ static orte_vpid_t get_routing_tree(opal_list_t *children)
|
|||||||
/* if I am anything other than a daemon or the HNP, this
|
/* if I am anything other than a daemon or the HNP, this
|
||||||
* is a meaningless command as I am not allowed to route
|
* is a meaningless command as I am not allowed to route
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.daemon && !orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_DAEMON && !ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_VPID_INVALID;
|
return ORTE_VPID_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -818,7 +818,7 @@ static orte_vpid_t get_routing_tree(opal_list_t *children)
|
|||||||
opal_list_append(children, &nm->super);
|
opal_list_append(children, &nm->super);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
/* the parent of the HNP is invalid */
|
/* the parent of the HNP is invalid */
|
||||||
return ORTE_VPID_INVALID;
|
return ORTE_VPID_INVALID;
|
||||||
}
|
}
|
||||||
@ -836,7 +836,7 @@ static int get_wireup_info(opal_buffer_t *buf)
|
|||||||
* is a meaningless command as I cannot get
|
* is a meaningless command as I cannot get
|
||||||
* the requested info
|
* the requested info
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_ERR_NOT_SUPPORTED;
|
return ORTE_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,9 +109,9 @@ static int finalize(void)
|
|||||||
/* if I am an application process, indicate that I am
|
/* if I am an application process, indicate that I am
|
||||||
* truly finalizing prior to departure
|
* truly finalizing prior to departure
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp &&
|
if (!ORTE_PROC_IS_HNP &&
|
||||||
!orte_process_info.daemon &&
|
!ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
if (ORTE_SUCCESS != (rc = orte_routed_base_register_sync(false))) {
|
if (ORTE_SUCCESS != (rc = orte_routed_base_register_sync(false))) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
return rc;
|
return rc;
|
||||||
@ -119,7 +119,7 @@ static int finalize(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if I am the HNP, I need to stop the comm recv */
|
/* if I am the HNP, I need to stop the comm recv */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
orte_routed_base_comm_stop();
|
orte_routed_base_comm_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,8 +153,8 @@ static int delete_route(orte_process_name_t *proc)
|
|||||||
/* if I am an application process, I don't have any routes
|
/* if I am an application process, I don't have any routes
|
||||||
* so there is nothing for me to do
|
* so there is nothing for me to do
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp && !orte_process_info.daemon &&
|
if (!ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,7 +174,7 @@ static int delete_route(orte_process_name_t *proc)
|
|||||||
* in my routing table and thus have nothing to do
|
* in my routing table and thus have nothing to do
|
||||||
* here, just return
|
* here, just return
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,8 +221,8 @@ static int update_route(orte_process_name_t *target,
|
|||||||
/* if I am an application process, we don't update the route since
|
/* if I am an application process, we don't update the route since
|
||||||
* we automatically route everything through the local daemon
|
* we automatically route everything through the local daemon
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp && !orte_process_info.daemon &&
|
if (!ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +249,7 @@ static int update_route(orte_process_name_t *target,
|
|||||||
* anything to this job family via my HNP - so nothing to do
|
* anything to this job family via my HNP - so nothing to do
|
||||||
* here, just return
|
* here, just return
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,8 +317,8 @@ static orte_process_name_t get_route(orte_process_name_t *target)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if I am an application process, always route via my local daemon */
|
/* if I am an application process, always route via my local daemon */
|
||||||
if (!orte_process_info.hnp && !orte_process_info.daemon &&
|
if (!ORTE_PROC_IS_HNP && !ORTE_PROC_IS_DAEMON &&
|
||||||
!orte_process_info.tool) {
|
!ORTE_PROC_IS_TOOL) {
|
||||||
ret = ORTE_PROC_MY_DAEMON;
|
ret = ORTE_PROC_MY_DAEMON;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
@ -336,7 +336,7 @@ static orte_process_name_t get_route(orte_process_name_t *target)
|
|||||||
/* IF THIS IS FOR A DIFFERENT JOB FAMILY... */
|
/* IF THIS IS FOR A DIFFERENT JOB FAMILY... */
|
||||||
if (ORTE_JOB_FAMILY(target->jobid) != ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) {
|
if (ORTE_JOB_FAMILY(target->jobid) != ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) {
|
||||||
/* if I am a daemon, route this via the HNP */
|
/* if I am a daemon, route this via the HNP */
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
ret = ORTE_PROC_MY_HNP;
|
ret = ORTE_PROC_MY_HNP;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
@ -521,7 +521,7 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* if I am a tool, then I stand alone - there is nothing to do */
|
/* if I am a tool, then I stand alone - there is nothing to do */
|
||||||
if (orte_process_info.tool) {
|
if (ORTE_PROC_IS_TOOL) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -529,7 +529,7 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
* from the data sent to me for launch and update the routing tables to
|
* from the data sent to me for launch and update the routing tables to
|
||||||
* point at the daemon for each proc
|
* point at the daemon for each proc
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.daemon) {
|
if (ORTE_PROC_IS_DAEMON) {
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
||||||
"%s routed_radix: init routes for daemon job %s\n\thnp_uri %s",
|
"%s routed_radix: init routes for daemon job %s\n\thnp_uri %s",
|
||||||
@ -584,7 +584,7 @@ static int init_routes(orte_jobid_t job, opal_buffer_t *ndat)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
OPAL_OUTPUT_VERBOSE((1, orte_routed_base_output,
|
||||||
"%s routed_radix: init routes for HNP job %s",
|
"%s routed_radix: init routes for HNP job %s",
|
||||||
@ -861,7 +861,7 @@ static int update_routing_tree(void)
|
|||||||
/* if I am anything other than a daemon or the HNP, this
|
/* if I am anything other than a daemon or the HNP, this
|
||||||
* is a meaningless command as I am not allowed to route
|
* is a meaningless command as I am not allowed to route
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.daemon && !orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_DAEMON && !ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_ERR_NOT_SUPPORTED;
|
return ORTE_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -924,7 +924,7 @@ static orte_vpid_t get_routing_tree(opal_list_t *children)
|
|||||||
/* if I am anything other than a daemon or the HNP, this
|
/* if I am anything other than a daemon or the HNP, this
|
||||||
* is a meaningless command as I am not allowed to route
|
* is a meaningless command as I am not allowed to route
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.daemon && !orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_DAEMON && !ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_VPID_INVALID;
|
return ORTE_VPID_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -954,7 +954,7 @@ static int get_wireup_info(opal_buffer_t *buf)
|
|||||||
* is a meaningless command as I cannot get
|
* is a meaningless command as I cannot get
|
||||||
* the requested info
|
* the requested info
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_ERR_NOT_SUPPORTED;
|
return ORTE_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "opal/mca/crs/base/base.h"
|
#include "opal/mca/crs/base/base.h"
|
||||||
|
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
#include "opal/dss/dss.h"
|
#include "opal/dss/dss.h"
|
||||||
#include "orte/mca/rml/rml.h"
|
#include "orte/mca/rml/rml.h"
|
||||||
@ -342,7 +343,7 @@ static int snapc_full_global_start_listener(void)
|
|||||||
{
|
{
|
||||||
int ret, exit_status = ORTE_SUCCESS;
|
int ret, exit_status = ORTE_SUCCESS;
|
||||||
|
|
||||||
if (snapc_orted_recv_issued && orte_process_info.hnp) {
|
if (snapc_orted_recv_issued && ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,7 +373,7 @@ static int snapc_full_global_stop_listener(void)
|
|||||||
{
|
{
|
||||||
int ret, exit_status = ORTE_SUCCESS;
|
int ret, exit_status = ORTE_SUCCESS;
|
||||||
|
|
||||||
if (!snapc_orted_recv_issued && orte_process_info.hnp) {
|
if (!snapc_orted_recv_issued && ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -396,7 +397,7 @@ static int snapc_full_global_start_cmdline_listener(void)
|
|||||||
{
|
{
|
||||||
int ret, exit_status = ORTE_SUCCESS;
|
int ret, exit_status = ORTE_SUCCESS;
|
||||||
|
|
||||||
if (snapc_cmdline_recv_issued && orte_process_info.hnp) {
|
if (snapc_cmdline_recv_issued && ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -426,7 +427,7 @@ static int snapc_full_global_stop_cmdline_listener(void)
|
|||||||
{
|
{
|
||||||
int ret, exit_status = ORTE_SUCCESS;
|
int ret, exit_status = ORTE_SUCCESS;
|
||||||
|
|
||||||
if (!snapc_cmdline_recv_issued && orte_process_info.hnp) {
|
if (!snapc_cmdline_recv_issued && ORTE_PROC_IS_HNP) {
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ void orte_daemon_cmd_processor(int fd, short event, void *data)
|
|||||||
orte_daemon_cmd_flag_t command;
|
orte_daemon_cmd_flag_t command;
|
||||||
|
|
||||||
/* check to see if we are in a progress recursion */
|
/* check to see if we are in a progress recursion */
|
||||||
if (orte_process_info.daemon && 1 < (ret = opal_progress_recursion_depth())) {
|
if (ORTE_PROC_IS_DAEMON && 1 < (ret = opal_progress_recursion_depth())) {
|
||||||
/* if we are in a recursion, we want to repost the message event
|
/* if we are in a recursion, we want to repost the message event
|
||||||
* so the progress engine can work its way back up to the top
|
* so the progress engine can work its way back up to the top
|
||||||
* of the stack. Given that this could happen multiple times,
|
* of the stack. Given that this could happen multiple times,
|
||||||
@ -221,7 +221,7 @@ void orte_daemon_cmd_processor(int fd, short event, void *data)
|
|||||||
wait_time = 1;
|
wait_time = 1;
|
||||||
num_recursions = 0;
|
num_recursions = 0;
|
||||||
|
|
||||||
if (orte_timing && orte_process_info.hnp) {
|
if (orte_timing && ORTE_PROC_IS_HNP) {
|
||||||
/* if we are doing timing, and we are the HNP, then the message doesn't come
|
/* if we are doing timing, and we are the HNP, then the message doesn't come
|
||||||
* through the RML recv, so we have to pickup the recv time here
|
* through the RML recv, so we have to pickup the recv time here
|
||||||
*/
|
*/
|
||||||
@ -590,7 +590,7 @@ static int process_commands(orte_process_name_t* sender,
|
|||||||
/* if we are the HNP, kill our local procs and
|
/* if we are the HNP, kill our local procs and
|
||||||
* flag we are exited - but don't yet exit
|
* flag we are exited - but don't yet exit
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
orte_job_t *daemons;
|
orte_job_t *daemons;
|
||||||
orte_proc_t **procs;
|
orte_proc_t **procs;
|
||||||
/* if we are the HNP, ensure our local procs are terminated */
|
/* if we are the HNP, ensure our local procs are terminated */
|
||||||
@ -648,7 +648,7 @@ static int process_commands(orte_process_name_t* sender,
|
|||||||
/* if we are the HNP, kill our local procs and
|
/* if we are the HNP, kill our local procs and
|
||||||
* flag we are exited - but don't yet exit
|
* flag we are exited - but don't yet exit
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
orte_job_t *daemons;
|
orte_job_t *daemons;
|
||||||
orte_proc_t **procs;
|
orte_proc_t **procs;
|
||||||
/* if we are the HNP, ensure our local procs are terminated */
|
/* if we are the HNP, ensure our local procs are terminated */
|
||||||
@ -694,7 +694,7 @@ static int process_commands(orte_process_name_t* sender,
|
|||||||
answer = OBJ_NEW(opal_buffer_t);
|
answer = OBJ_NEW(opal_buffer_t);
|
||||||
job = ORTE_JOBID_INVALID;
|
job = ORTE_JOBID_INVALID;
|
||||||
/* can only process this if we are the HNP */
|
/* can only process this if we are the HNP */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
/* unpack the job data */
|
/* unpack the job data */
|
||||||
n = 1;
|
n = 1;
|
||||||
if (ORTE_SUCCESS != (ret = opal_dss.unpack(buffer, &jdata, &n, ORTE_JOB))) {
|
if (ORTE_SUCCESS != (ret = opal_dss.unpack(buffer, &jdata, &n, ORTE_JOB))) {
|
||||||
@ -763,7 +763,7 @@ static int process_commands(orte_process_name_t* sender,
|
|||||||
/* if we are not the HNP, we can do nothing - report
|
/* if we are not the HNP, we can do nothing - report
|
||||||
* back 0 procs so the tool won't hang
|
* back 0 procs so the tool won't hang
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
orte_std_cntr_t zero=0;
|
orte_std_cntr_t zero=0;
|
||||||
|
|
||||||
answer = OBJ_NEW(opal_buffer_t);
|
answer = OBJ_NEW(opal_buffer_t);
|
||||||
@ -846,7 +846,7 @@ static int process_commands(orte_process_name_t* sender,
|
|||||||
/* if we are not the HNP, we can do nothing - report
|
/* if we are not the HNP, we can do nothing - report
|
||||||
* back 0 nodes so the tool won't hang
|
* back 0 nodes so the tool won't hang
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
orte_std_cntr_t zero=0;
|
orte_std_cntr_t zero=0;
|
||||||
|
|
||||||
answer = OBJ_NEW(opal_buffer_t);
|
answer = OBJ_NEW(opal_buffer_t);
|
||||||
@ -927,7 +927,7 @@ static int process_commands(orte_process_name_t* sender,
|
|||||||
/* if we are not the HNP, we can do nothing - report
|
/* if we are not the HNP, we can do nothing - report
|
||||||
* back 0 procs so the tool won't hang
|
* back 0 procs so the tool won't hang
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
orte_std_cntr_t zero=0;
|
orte_std_cntr_t zero=0;
|
||||||
|
|
||||||
answer = OBJ_NEW(opal_buffer_t);
|
answer = OBJ_NEW(opal_buffer_t);
|
||||||
@ -1062,7 +1062,7 @@ SEND_ANSWER:
|
|||||||
* the requestor. We need to convert that to our own job family
|
* the requestor. We need to convert that to our own job family
|
||||||
*/
|
*/
|
||||||
proc.jobid = ORTE_CONSTRUCT_LOCAL_JOBID(ORTE_PROC_MY_NAME->jobid, proc.jobid);
|
proc.jobid = ORTE_CONSTRUCT_LOCAL_JOBID(ORTE_PROC_MY_NAME->jobid, proc.jobid);
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
return_addr = sender;
|
return_addr = sender;
|
||||||
/* if the request is for a wildcard vpid, then it goes to every
|
/* if the request is for a wildcard vpid, then it goes to every
|
||||||
* daemon. For scalability, we should probably xcast this some
|
* daemon. For scalability, we should probably xcast this some
|
||||||
@ -1185,7 +1185,7 @@ SEND_ANSWER:
|
|||||||
/* send the answer back to requester - callback
|
/* send the answer back to requester - callback
|
||||||
* function will release buffer
|
* function will release buffer
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
/* if I am the HNP, I need to also provide the number of
|
/* if I am the HNP, I need to also provide the number of
|
||||||
* replies the caller should recv and the sample time
|
* replies the caller should recv and the sample time
|
||||||
*/
|
*/
|
||||||
|
@ -308,18 +308,6 @@ int orte_daemon(int argc, char *argv[])
|
|||||||
if (1000 < i) i=0;
|
if (1000 < i) i=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Okay, now on to serious business! */
|
|
||||||
|
|
||||||
if (orted_globals.hnp) {
|
|
||||||
/* we are to be the hnp, so set that flag */
|
|
||||||
orte_process_info.hnp = true;
|
|
||||||
orte_process_info.daemon = false;
|
|
||||||
} else {
|
|
||||||
/* set ourselves to be just a daemon */
|
|
||||||
orte_process_info.hnp = false;
|
|
||||||
orte_process_info.daemon = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if OPAL_ENABLE_FT == 1
|
#if OPAL_ENABLE_FT == 1
|
||||||
/* Mark as a tool program */
|
/* Mark as a tool program */
|
||||||
tmp_env_var = mca_base_param_env_var("opal_cr_is_tool");
|
tmp_env_var = mca_base_param_env_var("opal_cr_is_tool");
|
||||||
@ -335,9 +323,16 @@ int orte_daemon(int argc, char *argv[])
|
|||||||
* up incorrect infrastructure that only a singleton would
|
* up incorrect infrastructure that only a singleton would
|
||||||
* require.
|
* require.
|
||||||
*/
|
*/
|
||||||
if (ORTE_SUCCESS != (ret = orte_init(ORTE_NON_TOOL))) {
|
if (orted_globals.hnp) {
|
||||||
ORTE_ERROR_LOG(ret);
|
if (ORTE_SUCCESS != (ret = orte_init(ORTE_PROC_HNP))) {
|
||||||
return ret;
|
ORTE_ERROR_LOG(ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (ORTE_SUCCESS != (ret = orte_init(ORTE_PROC_DAEMON))) {
|
||||||
|
ORTE_ERROR_LOG(ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((int)ORTE_VPID_INVALID != orted_globals.fail) {
|
if ((int)ORTE_VPID_INVALID != orted_globals.fail) {
|
||||||
@ -397,7 +392,7 @@ int orte_daemon(int argc, char *argv[])
|
|||||||
ORTE_PROC_MY_DAEMON->vpid = ORTE_PROC_MY_NAME->vpid;
|
ORTE_PROC_MY_DAEMON->vpid = ORTE_PROC_MY_NAME->vpid;
|
||||||
|
|
||||||
/* if I am also the hnp, then update that contact info field too */
|
/* if I am also the hnp, then update that contact info field too */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
orte_process_info.my_hnp_uri = orte_rml.get_contact_info();
|
orte_process_info.my_hnp_uri = orte_rml.get_contact_info();
|
||||||
ORTE_PROC_MY_HNP->jobid = ORTE_PROC_MY_NAME->jobid;
|
ORTE_PROC_MY_HNP->jobid = ORTE_PROC_MY_NAME->jobid;
|
||||||
ORTE_PROC_MY_HNP->vpid = ORTE_PROC_MY_NAME->vpid;
|
ORTE_PROC_MY_HNP->vpid = ORTE_PROC_MY_NAME->vpid;
|
||||||
@ -595,7 +590,7 @@ int orte_daemon(int argc, char *argv[])
|
|||||||
* is if we are launched by a singleton to provide support
|
* is if we are launched by a singleton to provide support
|
||||||
* for it
|
* for it
|
||||||
*/
|
*/
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
/* send the information to the orted report-back point - this function
|
/* send the information to the orted report-back point - this function
|
||||||
* will process the data, but also counts the number of
|
* will process the data, but also counts the number of
|
||||||
* orteds that reported back so the launch procedure can continue.
|
* orteds that reported back so the launch procedure can continue.
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "opal/dss/dss.h"
|
#include "opal/dss/dss.h"
|
||||||
|
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
|
|
||||||
#include "orte/runtime/runtime.h"
|
#include "orte/runtime/runtime.h"
|
||||||
#include "orte/runtime/runtime_internals.h"
|
#include "orte/runtime/runtime_internals.h"
|
||||||
@ -142,7 +143,7 @@ int orte_dt_init(void)
|
|||||||
|
|
||||||
/* open up the verbose output for ORTE debugging */
|
/* open up the verbose output for ORTE debugging */
|
||||||
if (orte_debug_flag || 0 < orte_debug_verbosity ||
|
if (orte_debug_flag || 0 < orte_debug_verbosity ||
|
||||||
(orte_debug_daemons_flag && (orte_process_info.daemon || orte_process_info.hnp))) {
|
(orte_debug_daemons_flag && (ORTE_PROC_IS_DAEMON || ORTE_PROC_IS_HNP))) {
|
||||||
if (0 < orte_debug_verbosity) {
|
if (0 < orte_debug_verbosity) {
|
||||||
opal_output_set_verbosity(orte_debug_output, orte_debug_verbosity);
|
opal_output_set_verbosity(orte_debug_output, orte_debug_verbosity);
|
||||||
} else {
|
} else {
|
||||||
@ -410,7 +411,7 @@ orte_job_t* orte_get_job_data_object(orte_jobid_t job)
|
|||||||
int32_t ljob;
|
int32_t ljob;
|
||||||
|
|
||||||
/* if I am not an HNP, I cannot provide this object */
|
/* if I am not an HNP, I cannot provide this object */
|
||||||
if (!orte_process_info.hnp) {
|
if (!ORTE_PROC_IS_HNP) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ orte_process_name_t orte_name_invalid = {ORTE_JOBID_INVALID, ORTE_VPID_INVALID};
|
|||||||
#endif
|
#endif
|
||||||
const char orte_version_string[] = ORTE_IDENT_STRING;
|
const char orte_version_string[] = ORTE_IDENT_STRING;
|
||||||
|
|
||||||
int orte_init(char flags)
|
int orte_init(orte_proc_type_t flags)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
@ -80,10 +80,8 @@ int orte_init(char flags)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ensure we know the tool setting for when we finalize */
|
/* ensure we know the type of proc for when we finalize */
|
||||||
if ((flags & ORTE_TOOL) || (flags & ORTE_TOOL_WITH_NAME)) {
|
orte_process_info.proc_type = flags;
|
||||||
orte_process_info.tool = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* setup the locks */
|
/* setup the locks */
|
||||||
if (ORTE_SUCCESS != (ret = orte_locks_init())) {
|
if (ORTE_SUCCESS != (ret = orte_locks_init())) {
|
||||||
@ -91,10 +89,6 @@ int orte_init(char flags)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orte_process_info.hnp) {
|
|
||||||
orte_process_info.daemon = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Register all MCA Params */
|
/* Register all MCA Params */
|
||||||
if (ORTE_SUCCESS != (ret = orte_register_params())) {
|
if (ORTE_SUCCESS != (ret = orte_register_params())) {
|
||||||
error = "orte_register_params";
|
error = "orte_register_params";
|
||||||
@ -130,7 +124,7 @@ int orte_init(char flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* initialize the RTE for this environment */
|
/* initialize the RTE for this environment */
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess.init(flags))) {
|
if (ORTE_SUCCESS != (ret = orte_ess.init())) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_ess_set_name";
|
error = "orte_ess_set_name";
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -156,7 +156,7 @@ int orte_register_params(void)
|
|||||||
orte_timing = true;
|
orte_timing = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
char *tmp;
|
char *tmp;
|
||||||
mca_base_param_reg_string_name("orte", "timing_file",
|
mca_base_param_reg_string_name("orte", "timing_file",
|
||||||
"Name of the file where timing data is to be written (relative or absolute path)",
|
"Name of the file where timing data is to be written (relative or absolute path)",
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
|
|
||||||
BEGIN_C_DECLS
|
BEGIN_C_DECLS
|
||||||
|
|
||||||
@ -45,11 +46,6 @@ ORTE_DECLSPEC extern bool orte_finalizing;
|
|||||||
ORTE_DECLSPEC extern int orte_debug_output;
|
ORTE_DECLSPEC extern int orte_debug_output;
|
||||||
ORTE_DECLSPEC extern bool orte_debug_flag;
|
ORTE_DECLSPEC extern bool orte_debug_flag;
|
||||||
|
|
||||||
/* some convenience definitions for code clarity */
|
|
||||||
#define ORTE_NON_TOOL 0x00
|
|
||||||
#define ORTE_TOOL 0x01
|
|
||||||
#define ORTE_TOOL_WITH_NAME 0x02
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the Open Run Time Environment
|
* Initialize the Open Run Time Environment
|
||||||
*
|
*
|
||||||
@ -61,7 +57,7 @@ ORTE_DECLSPEC extern bool orte_debug_flag;
|
|||||||
*
|
*
|
||||||
* @param tool Whether we are ORTE tool or not
|
* @param tool Whether we are ORTE tool or not
|
||||||
*/
|
*/
|
||||||
ORTE_DECLSPEC int orte_init(char flags);
|
ORTE_DECLSPEC int orte_init(orte_proc_type_t flags);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize parameters for ORTE.
|
* Initialize parameters for ORTE.
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include "opal/class/opal_list.h"
|
#include "opal/class/opal_list.h"
|
||||||
#include "opal/class/opal_bitmap.h"
|
#include "opal/class/opal_bitmap.h"
|
||||||
|
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/runtime.h"
|
#include "orte/runtime/runtime.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -111,7 +112,7 @@ int main(int argc, char* argv[])
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
orte_init(ORTE_TOOL);
|
orte_init(ORTE_PROC_TOOL);
|
||||||
|
|
||||||
num_procs = atoi(argv[1]);
|
num_procs = atoi(argv[1]);
|
||||||
|
|
||||||
|
@ -2,13 +2,14 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/runtime.h"
|
#include "orte/runtime/runtime.h"
|
||||||
|
|
||||||
int main( int argc, char **argv )
|
int main( int argc, char **argv )
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (ORTE_SUCCESS != (rc = orte_init(ORTE_TOOL))) {
|
if (ORTE_SUCCESS != (rc = orte_init(ORTE_PROC_TOOL))) {
|
||||||
fprintf(stderr, "couldn't init orte - error code %d\n", rc);
|
fprintf(stderr, "couldn't init orte - error code %d\n", rc);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
#include "orte/util/comm/comm.h"
|
#include "orte/util/comm/comm.h"
|
||||||
#include "orte/util/hnp_contact.h"
|
#include "orte/util/hnp_contact.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
#include "orte/runtime/runtime.h"
|
#include "orte/runtime/runtime.h"
|
||||||
|
|
||||||
@ -27,7 +28,7 @@ int main(int argc, char* argv[])
|
|||||||
orte_app_context_t *app;
|
orte_app_context_t *app;
|
||||||
char cwd[OMPI_PATH_MAX];
|
char cwd[OMPI_PATH_MAX];
|
||||||
|
|
||||||
if (0 > (rc = orte_init(ORTE_TOOL))) {
|
if (0 > (rc = orte_init(ORTE_PROC_TOOL))) {
|
||||||
fprintf(stderr, "orte_tool: couldn't init orte\n");
|
fprintf(stderr, "orte_tool: couldn't init orte\n");
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "opal/class/opal_list.h"
|
#include "opal/class/opal_list.h"
|
||||||
#include "opal/class/opal_bitmap.h"
|
#include "opal/class/opal_bitmap.h"
|
||||||
|
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/mca/routed/base/base.h"
|
#include "orte/mca/routed/base/base.h"
|
||||||
#include "orte/runtime/runtime.h"
|
#include "orte/runtime/runtime.h"
|
||||||
|
|
||||||
@ -86,7 +87,7 @@ main(int argc, char **argv)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
orte_init(ORTE_TOOL);
|
orte_init(ORTE_PROC_TOOL);
|
||||||
|
|
||||||
Radix = atoi(argv[1]);
|
Radix = atoi(argv[1]);
|
||||||
NProcs = atoi(argv[2]);
|
NProcs = atoi(argv[2]);
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
#include "orte/runtime/runtime.h"
|
#include "orte/runtime/runtime.h"
|
||||||
|
|
||||||
@ -45,7 +46,7 @@ int main(int argc, char* argv[])
|
|||||||
int i;
|
int i;
|
||||||
double pi;
|
double pi;
|
||||||
|
|
||||||
orte_init(ORTE_TOOL_WITH_NAME);
|
orte_init(ORTE_PROC_TOOL_WNAME);
|
||||||
|
|
||||||
if (signal(SIGUSR1, sigusr_handler) == SIG_IGN) {
|
if (signal(SIGUSR1, sigusr_handler) == SIG_IGN) {
|
||||||
fprintf(stderr, "Could not setup signal trap for SIGUSR1\n");
|
fprintf(stderr, "Could not setup signal trap for SIGUSR1\n");
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
#include "orte/util/show_help.h"
|
#include "orte/util/show_help.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/mca/rml/rml.h"
|
#include "orte/mca/rml/rml.h"
|
||||||
#include "orte/mca/rml/rml_types.h"
|
#include "orte/mca/rml/rml_types.h"
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
@ -486,7 +487,7 @@ static int ckpt_init(int argc, char *argv[]) {
|
|||||||
* We need all of OPAL and the TOOLS portion of ORTE - this
|
* We need all of OPAL and the TOOLS portion of ORTE - this
|
||||||
* sets us up so we can talk to any HNP over the wire
|
* sets us up so we can talk to any HNP over the wire
|
||||||
***************************/
|
***************************/
|
||||||
if (ORTE_SUCCESS != (ret = orte_init(ORTE_TOOL))) {
|
if (ORTE_SUCCESS != (ret = orte_init(ORTE_PROC_TOOL))) {
|
||||||
exit_status = ret;
|
exit_status = ret;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,7 @@ main(int argc, char *argv[])
|
|||||||
#endif
|
#endif
|
||||||
tmp_env_var = NULL; /* Silence compiler warning */
|
tmp_env_var = NULL; /* Silence compiler warning */
|
||||||
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_init(ORTE_TOOL_WITH_NAME))) {
|
if (ORTE_SUCCESS != (ret = orte_init(ORTE_PROC_TOOL_WNAME))) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,7 +403,7 @@ void kill_procs(void) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
/* if we are a singleton, check the hnp_pid as well */
|
/* if we are a singleton, check the hnp_pid as well */
|
||||||
if (orte_process_info.singleton) {
|
if (ORTE_PROC_IS_SINGLETON) {
|
||||||
if (procpid != orte_process_info.hnp_pid) {
|
if (procpid != orte_process_info.hnp_pid) {
|
||||||
(void)kill(procpid, SIGKILL);
|
(void)kill(procpid, SIGKILL);
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,7 @@
|
|||||||
#include "orte/util/hnp_contact.h"
|
#include "orte/util/hnp_contact.h"
|
||||||
#include "orte/util/show_help.h"
|
#include "orte/util/show_help.h"
|
||||||
#include "orte/util/parse_options.h"
|
#include "orte/util/parse_options.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
#include "orte/mca/iof/iof.h"
|
#include "orte/mca/iof/iof.h"
|
||||||
#if OPAL_ENABLE_FT == 1
|
#if OPAL_ENABLE_FT == 1
|
||||||
@ -211,7 +212,7 @@ main(int argc, char *argv[])
|
|||||||
/***************************
|
/***************************
|
||||||
* We need all of OPAL and the TOOL portion of ORTE
|
* We need all of OPAL and the TOOL portion of ORTE
|
||||||
***************************/
|
***************************/
|
||||||
if (ORTE_SUCCESS != orte_init(ORTE_TOOL)) {
|
if (ORTE_SUCCESS != orte_init(ORTE_PROC_TOOL)) {
|
||||||
orte_finalize();
|
orte_finalize();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,7 @@
|
|||||||
#include "orte/util/hnp_contact.h"
|
#include "orte/util/hnp_contact.h"
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
#include "orte/util/show_help.h"
|
#include "orte/util/show_help.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/mca/errmgr/errmgr.h"
|
#include "orte/mca/errmgr/errmgr.h"
|
||||||
#include "orte/util/comm/comm.h"
|
#include "orte/util/comm/comm.h"
|
||||||
#include "orte/mca/ras/ras_types.h"
|
#include "orte/mca/ras/ras_types.h"
|
||||||
@ -375,7 +376,7 @@ static int orte_ps_init(int argc, char *argv[]) {
|
|||||||
/***************************
|
/***************************
|
||||||
* We need all of OPAL and the TOOL portion of ORTE
|
* We need all of OPAL and the TOOL portion of ORTE
|
||||||
***************************/
|
***************************/
|
||||||
ret = orte_init(ORTE_TOOL);
|
ret = orte_init(ORTE_PROC_TOOL);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -66,6 +66,7 @@
|
|||||||
#include "orte/mca/snapc/base/base.h"
|
#include "orte/mca/snapc/base/base.h"
|
||||||
#include "orte/mca/filem/base/base.h"
|
#include "orte/mca/filem/base/base.h"
|
||||||
#include "orte/util/show_help.h"
|
#include "orte/util/show_help.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
|
|
||||||
/******************
|
/******************
|
||||||
* Local Functions
|
* Local Functions
|
||||||
@ -277,7 +278,7 @@ static int initialize(int argc, char *argv[]) {
|
|||||||
/*
|
/*
|
||||||
* Setup any ORTE stuff we might need
|
* Setup any ORTE stuff we might need
|
||||||
*/
|
*/
|
||||||
if (OPAL_SUCCESS != (ret = orte_init(ORTE_TOOL))) {
|
if (OPAL_SUCCESS != (ret = orte_init(ORTE_PROC_TOOL))) {
|
||||||
exit_status = ret;
|
exit_status = ret;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
#include "orte/util/hnp_contact.h"
|
#include "orte/util/hnp_contact.h"
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
#include "orte/util/show_help.h"
|
#include "orte/util/show_help.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/orte_wait.h"
|
#include "orte/runtime/orte_wait.h"
|
||||||
#include "orte/mca/rml/base/rml_contact.h"
|
#include "orte/mca/rml/base/rml_contact.h"
|
||||||
|
|
||||||
@ -256,7 +257,7 @@ main(int argc, char *argv[])
|
|||||||
/***************************
|
/***************************
|
||||||
* We need all of OPAL and the TOOL portion of ORTE
|
* We need all of OPAL and the TOOL portion of ORTE
|
||||||
***************************/
|
***************************/
|
||||||
if (ORTE_SUCCESS != orte_init(ORTE_TOOL)) {
|
if (ORTE_SUCCESS != orte_init(ORTE_PROC_TOOL)) {
|
||||||
orte_finalize();
|
orte_finalize();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -440,8 +440,10 @@ int orterun(int argc, char *argv[])
|
|||||||
OBJ_CONSTRUCT(&orte_exit, orte_trigger_event_t);
|
OBJ_CONSTRUCT(&orte_exit, orte_trigger_event_t);
|
||||||
OBJ_CONSTRUCT(&orteds_exit, orte_trigger_event_t);
|
OBJ_CONSTRUCT(&orteds_exit, orte_trigger_event_t);
|
||||||
|
|
||||||
/* flag that I am the HNP */
|
/* flag that I am the HNP - needs to be done prior to
|
||||||
orte_process_info.hnp = true;
|
* registering params
|
||||||
|
*/
|
||||||
|
orte_process_info.proc_type = ORTE_PROC_HNP;
|
||||||
|
|
||||||
/* Setup MCA params */
|
/* Setup MCA params */
|
||||||
orte_register_params();
|
orte_register_params();
|
||||||
@ -504,7 +506,7 @@ int orterun(int argc, char *argv[])
|
|||||||
* up incorrect infrastructure that only a singleton would
|
* up incorrect infrastructure that only a singleton would
|
||||||
* require
|
* require
|
||||||
*/
|
*/
|
||||||
if (ORTE_SUCCESS != (rc = orte_init(ORTE_NON_TOOL))) {
|
if (ORTE_SUCCESS != (rc = orte_init(ORTE_PROC_HNP))) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ ORTE_DECLSPEC char* orte_util_print_local_jobid(const orte_jobid_t job);
|
|||||||
( ((local) & 0xffff0000) | ((job) & 0x0000ffff) )
|
( ((local) & 0xffff0000) | ((job) & 0x0000ffff) )
|
||||||
|
|
||||||
/* a macro for identifying that a proc is a daemon */
|
/* a macro for identifying that a proc is a daemon */
|
||||||
#define ORTE_PROC_IS_DAEMON(n) \
|
#define ORTE_PROC_NAME_IS_DAEMON(n) \
|
||||||
!((n) & 0x0000ffff)
|
!((n) & 0x0000ffff)
|
||||||
|
|
||||||
/* List of names for general use */
|
/* List of names for general use */
|
||||||
|
@ -689,7 +689,7 @@ process_daemons:
|
|||||||
free(vpids);
|
free(vpids);
|
||||||
|
|
||||||
/* if we are a daemon or the HNP, update our num_procs */
|
/* if we are a daemon or the HNP, update our num_procs */
|
||||||
if (orte_process_info.hnp || orte_process_info.daemon) {
|
if (ORTE_PROC_IS_HNP || ORTE_PROC_IS_DAEMON) {
|
||||||
orte_process_info.num_procs = num_daemons;
|
orte_process_info.num_procs = num_daemons;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1106,7 +1106,7 @@ orte_nid_t* orte_util_lookup_nid(orte_process_name_t *proc)
|
|||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
ORTE_NAME_PRINT(proc)));
|
ORTE_NAME_PRINT(proc)));
|
||||||
|
|
||||||
if (ORTE_PROC_IS_DAEMON(proc->jobid)) {
|
if (ORTE_PROC_NAME_IS_DAEMON(proc->jobid)) {
|
||||||
/* looking for a daemon */
|
/* looking for a daemon */
|
||||||
return find_daemon_node(proc);
|
return find_daemon_node(proc);
|
||||||
}
|
}
|
||||||
|
@ -50,11 +50,7 @@ ORTE_DECLSPEC orte_proc_info_t orte_process_info = {
|
|||||||
/* .nodename = */ NULL,
|
/* .nodename = */ NULL,
|
||||||
/* .arch = */ 0,
|
/* .arch = */ 0,
|
||||||
/* .pid = */ 0,
|
/* .pid = */ 0,
|
||||||
/* .singleton = */ false,
|
/* .proc_type = */ ORTE_PROC_TYPE_NONE,
|
||||||
/* .daemon = */ false,
|
|
||||||
/* .hnp = */ false,
|
|
||||||
/* .tool = */ false,
|
|
||||||
/* .mpi_proc = */ false,
|
|
||||||
/* .sync_buf = */ NULL,
|
/* .sync_buf = */ NULL,
|
||||||
/* .my_port = */ 0,
|
/* .my_port = */ 0,
|
||||||
/* .tmpdir_base = */ NULL,
|
/* .tmpdir_base = */ NULL,
|
||||||
@ -207,9 +203,7 @@ int orte_proc_info_finalize(void)
|
|||||||
orte_process_info.my_daemon_uri = NULL;
|
orte_process_info.my_daemon_uri = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
orte_process_info.hnp = false;
|
orte_process_info.proc_type = ORTE_PROC_TYPE_NONE;
|
||||||
orte_process_info.singleton = false;
|
|
||||||
orte_process_info.daemon = false;
|
|
||||||
|
|
||||||
OBJ_RELEASE(orte_process_info.sync_buf);
|
OBJ_RELEASE(orte_process_info.sync_buf);
|
||||||
orte_process_info.sync_buf = NULL;
|
orte_process_info.sync_buf = NULL;
|
||||||
|
@ -43,6 +43,25 @@ BEGIN_C_DECLS
|
|||||||
|
|
||||||
#define ORTE_MAX_HOSTNAME_SIZE 512
|
#define ORTE_MAX_HOSTNAME_SIZE 512
|
||||||
|
|
||||||
|
typedef uint32_t orte_proc_type_t;
|
||||||
|
#define ORTE_PROC_TYPE_NONE 0x0000
|
||||||
|
#define ORTE_PROC_SINGLETON 0x0001
|
||||||
|
#define ORTE_PROC_DAEMON 0x0002
|
||||||
|
#define ORTE_PROC_HNP 0x0004
|
||||||
|
#define ORTE_PROC_TOOL 0x0008
|
||||||
|
#define ORTE_PROC_TOOL_WNAME 0x0010
|
||||||
|
#define ORTE_PROC_MPI 0x0020
|
||||||
|
#define ORTE_PROC_CM 0x0040
|
||||||
|
|
||||||
|
#define ORTE_PROC_IS_SINGLETON (ORTE_PROC_SINGLETON & orte_process_info.proc_type)
|
||||||
|
#define ORTE_PROC_IS_DAEMON (ORTE_PROC_DAEMON & orte_process_info.proc_type)
|
||||||
|
#define ORTE_PROC_IS_HNP (ORTE_PROC_HNP & orte_process_info.proc_type)
|
||||||
|
#define ORTE_PROC_IS_TOOL (ORTE_PROC_TOOL & orte_process_info.proc_type)
|
||||||
|
#define ORTE_PROC_IS_TOOL_WNAME (ORTE_PROC_TOOL_WNAME & orte_process_info.proc_type)
|
||||||
|
#define ORTE_PROC_IS_MPI (ORTE_PROC_MPI & orte_process_info.proc_type)
|
||||||
|
#define ORTE_PROC_IS_CM (ORTE_PROC_CM & orte_process_info.proc_type)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process information structure
|
* Process information structure
|
||||||
*
|
*
|
||||||
@ -65,11 +84,7 @@ struct orte_proc_info_t {
|
|||||||
char *nodename; /**< string name for this node */
|
char *nodename; /**< string name for this node */
|
||||||
uint32_t arch; /**< arch for this node */
|
uint32_t arch; /**< arch for this node */
|
||||||
pid_t pid; /**< Local process ID for this process */
|
pid_t pid; /**< Local process ID for this process */
|
||||||
bool singleton; /**< I am a singleton */
|
orte_proc_type_t proc_type; /**< Type of process */
|
||||||
bool daemon; /**< Indicate whether or not I am a daemon */
|
|
||||||
bool hnp; /**< Indicate whether or not I am the HNP (orterun) */
|
|
||||||
bool tool; /**< I am a tool or not */
|
|
||||||
bool mpi_proc; /**< I am an MPI process */
|
|
||||||
opal_buffer_t *sync_buf; /**< buffer to store sync response */
|
opal_buffer_t *sync_buf; /**< buffer to store sync response */
|
||||||
uint16_t my_port; /**< TCP port for out-of-band comm */
|
uint16_t my_port; /**< TCP port for out-of-band comm */
|
||||||
/* The session directory has the form
|
/* The session directory has the form
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "orte/mca/rml/rml.h"
|
#include "orte/mca/rml/rml.h"
|
||||||
#include "orte/mca/rml/rml_types.h"
|
#include "orte/mca/rml/rml_types.h"
|
||||||
#include "orte/util/name_fns.h"
|
#include "orte/util/name_fns.h"
|
||||||
|
#include "orte/util/proc_info.h"
|
||||||
#include "orte/runtime/orte_globals.h"
|
#include "orte/runtime/orte_globals.h"
|
||||||
|
|
||||||
#include "orte/util/show_help.h"
|
#include "orte/util/show_help.h"
|
||||||
@ -378,7 +379,7 @@ void orte_show_help_finalize(void)
|
|||||||
ready = false;
|
ready = false;
|
||||||
|
|
||||||
/* Shutdown show_help, showing final messages */
|
/* Shutdown show_help, showing final messages */
|
||||||
if (orte_process_info.hnp) {
|
if (ORTE_PROC_IS_HNP) {
|
||||||
show_accumulated_duplicates(0, 0, NULL);
|
show_accumulated_duplicates(0, 0, NULL);
|
||||||
OBJ_DESTRUCT(&abd_tuples);
|
OBJ_DESTRUCT(&abd_tuples);
|
||||||
if (show_help_timer_set) {
|
if (show_help_timer_set) {
|
||||||
@ -427,7 +428,7 @@ int orte_show_help(const char *filename, const char *topic,
|
|||||||
* or we don't yet know our HNP, then all we can do
|
* or we don't yet know our HNP, then all we can do
|
||||||
* is process this locally
|
* is process this locally
|
||||||
*/
|
*/
|
||||||
if (orte_process_info.hnp ||
|
if (ORTE_PROC_IS_HNP ||
|
||||||
NULL == orte_rml.send_buffer ||
|
NULL == orte_rml.send_buffer ||
|
||||||
ORTE_PROC_MY_HNP->vpid == ORTE_VPID_INVALID) {
|
ORTE_PROC_MY_HNP->vpid == ORTE_VPID_INVALID) {
|
||||||
rc = show_help(filename, topic, output, ORTE_PROC_MY_NAME);
|
rc = show_help(filename, topic, output, ORTE_PROC_MY_NAME);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user