1
1
openmpi/orte/mca/routed/tree/routed_tree.h
Ralph Castain ec5fe78876 When in the unity message routing mode, we have to update the RML contact info in the parent procs so that they know how to talk to the children. Ideally, this would be done in the MPI layer since that layer knows which procs are actively involved in the comm_spawn. However, it isn't being done there, which causes comm_spawn to fail, so do it explicitly in the RTE.
Note that this means ALL procs in the parent job are updated, even though they may not be participating in the comm_spawn. This doesn't really hurt anything - just unnecessary.

Comm_spawn still has a problem when a child process shares a node with a parent, so this doesn't fix everything. It only fixes the bug of ensuring all procs know how to talk to each other.

This commit was SVN r16460.
2007-10-16 16:09:41 +00:00

59 строки
1.5 KiB
C

/*
* Copyright (c) 2007 Los Alamos National Security, LLC.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#ifndef MCA_ROUTED_TREE_ROUTED_TREE_H
#define MCA_ROUTED_TREE_ROUTED_TREE_H
#include "orte/mca/routed/routed.h"
#include "opal/class/opal_list.h"
BEGIN_C_DECLS
struct orte_routed_tree_entry_t {
opal_list_item_t super;
orte_process_name_t target;
orte_process_name_t route;
};
typedef struct orte_routed_tree_entry_t orte_routed_tree_entry_t;
OBJ_CLASS_DECLARATION(orte_routed_tree_entry_t);
struct orte_routed_tree_module_t {
orte_routed_module_t super;
opal_list_t peer_list;
opal_list_t vpid_wildcard_list;
opal_list_t jobid_wildcard_list;
orte_routed_tree_entry_t full_wildcard_entry;
};
typedef struct orte_routed_tree_module_t orte_routed_tree_module_t;
ORTE_MODULE_DECLSPEC extern orte_routed_component_t mca_routed_tree_component;
extern orte_routed_tree_module_t orte_routed_tree_module;
int orte_routed_tree_module_init(void);
int orte_routed_tree_finalize(void);
int orte_routed_tree_update_route(orte_process_name_t *target,
orte_process_name_t *route);
orte_process_name_t orte_routed_tree_get_route(orte_process_name_t *target);
int orte_routed_tree_init_routes(orte_jobid_t job, orte_gpr_notify_data_t *ndat);
int orte_routed_tree_warmup_routes(void);
END_C_DECLS
#endif