1
1
openmpi/orte/mca/sds/sds.h
Brian Barrett 1ce2e26272 Move set_my_name (NDS) functionality from ns_base and universe contact
test from orte_init_stage1 into a new framework, Startup Discovery Service
(sds).  This allows us to have more flexibility with platforms like
Red Storm, which do not have a universe in the usual meaning and don't have
a seed daemon they can contact

This commit was SVN r6630.
2005-07-27 23:18:16 +00:00

122 строки
3.4 KiB
C

/*
* Copyright (c) 2004-2005 The Trustees of Indiana University.
* All rights reserved.
* Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
* All rights reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
/** @file:
*
* The Open MPI Start-up Discovery Service
*
*/
#ifndef ORTE_SDS_H
#define ORTE_SDS_H
#include "opal/mca/mca.h"
/*
* Module and component structures
*/
struct orte_sds_base_module_1_0_0_t;
typedef struct orte_sds_base_module_1_0_0_t orte_sds_base_module_1_0_0_t;
typedef orte_sds_base_module_1_0_0_t orte_sds_base_module_t;
struct orte_sds_base_component_1_0_0_t;
typedef struct orte_sds_base_component_1_0_0_t orte_sds_base_component_1_0_0_t;
typedef orte_sds_base_component_1_0_0_t orte_sds_base_component_t;
/**
* Selection function
*
* Priority list:
*
* - 0 singleton process (not seed)
* - 20 process has name provided by starter
* - 40 seed process
* - 60 process has name provided by starter and needs to
* override seed. This should be used with care, and
* is mainly intended for environments where orte is
* not the starter (such as cnos)
*/
typedef orte_sds_base_module_t*
(*orte_sds_base_component_init_fn_t)(int *priority);
/*
* Module functions
*/
/**
* Contact universe and set contact information
*
* Attempt to contact the universe to get replica contact information.
*/
typedef int (*orte_sds_base_contact_universe_fn_t)(void);
/**
* Set Name and Job information for current process
*
* Set name and job information for current process. This information
* includes:
*
* - orte_process_info.my_name
* - orte_process_info.vpid_start
* - orte_process_info.num_procs
*
* From this, the ns is able to develop a map of all processes started
* in the curent job.
*
* Upon startup, each process must discover its official ORTE process
* name. There are several ways this name could be passed to the
* process. This typicall involves an environmental parameter of some
* appropriate name, possibly followed by some computation of the vpid
* based on process rank. This function checks the different
* environmental parameters to find the one that has been set with the
* appropriate value, determines (based on that) the name of this
* process, and then sets that value in the orte_system_info global
* structure.
*/
typedef int (*orte_sds_base_set_name_fn_t)(void);
typedef int (*orte_sds_base_module_finalize_fn_t)(void);
/*
* the standard module data structure
*/
struct orte_sds_base_module_1_0_0_t {
orte_sds_base_contact_universe_fn_t contact_universe;
orte_sds_base_set_name_fn_t set_name;
orte_sds_base_module_finalize_fn_t finalize;
};
/*
* the standard component data structure
*/
struct orte_sds_base_component_1_0_0_t {
mca_base_component_t sds_version;
mca_base_component_data_1_0_0_t sds_data;
orte_sds_base_component_init_fn_t sds_init;
};
/*
* Macro for use in components that are of type ns v1.0.0
*/
#define ORTE_SDS_BASE_VERSION_1_0_0 \
/* sds v1.0 is chained to MCA v1.0 */ \
MCA_BASE_VERSION_1_0_0, \
/* sds v1.0 */ \
"sds", 1, 0, 0
#endif