1
1
openmpi/orte/mca/routed/direct/routed_direct_component.c
Ralph Castain 649301a3a2 Revise the routed framework to be multi-select so it can support the new conduit system. Update all calls to rml.send* to the new syntax. Define an orte_mgmt_conduit for admin and IOF messages, and an orte_coll_conduit for all collective operations (e.g., xcast, modex, and barrier).
Still not completely done as we need a better way of tracking the routed module being used down in the OOB - e.g., when a peer drops connection, we want to remove that route from all conduits that (a) use the OOB and (b) are routed, but we don't want to remove it from an OFI conduit.
2016-10-23 21:52:39 -07:00

68 строки
2.1 KiB
C

/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
/*
* Copyright (c) 2007-2015 Los Alamos National Security, LLC.
* All rights reserved.
* Copyright (c) 2004-2008 The Trustees of Indiana University.
* All rights reserved.
* Copyright (c) 2015-2016 Intel, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "orte_config.h"
#include "orte/constants.h"
#include "opal/mca/base/base.h"
#include "orte/runtime/orte_globals.h"
#include "orte/util/proc_info.h"
#include "orte/mca/routed/base/base.h"
#include "routed_direct.h"
static int orte_routed_direct_component_query(mca_base_module_t **module, int *priority);
/**
* component definition
*/
orte_routed_component_t mca_routed_direct_component = {
/* First, the mca_base_component_t struct containing meta
information about the component itself */
.base_version = {
ORTE_ROUTED_BASE_VERSION_3_0_0,
.mca_component_name = "direct",
MCA_BASE_MAKE_VERSION(component, ORTE_MAJOR_VERSION, ORTE_MINOR_VERSION,
ORTE_RELEASE_VERSION),
.mca_query_component = orte_routed_direct_component_query
},
.base_data = {
/* This component can be checkpointed */
MCA_BASE_METADATA_PARAM_CHECKPOINT
},
};
static int orte_routed_direct_component_query(mca_base_module_t **module, int *priority)
{
/* if we are an app and no daemon URI has been provided, or
* we are a singleton, then we must be chosen */
if (ORTE_PROC_IS_APP && NULL == orte_process_info.my_daemon_uri) {
/* we are direct launched, so set some arbitrary value
* for the daemon name */
ORTE_PROC_MY_DAEMON->jobid = 0;
ORTE_PROC_MY_DAEMON->vpid = 0;
*priority = 100;
} else if (ORTE_PROC_IS_SINGLETON) {
*priority = 100;
} else {
/* allow selection only when specifically requested */
*priority = 0;
}
*module = (mca_base_module_t *) &orte_routed_direct_module;
return ORTE_SUCCESS;
}