1
1
openmpi/opal/mca/sysinfo/sysinfo.h
Ralph Castain a0d5c80ce0 Add a new framework for discovering local resource information such as cpu type/model, #cpus, available physical memory, etc. Two initial components (darwin and linux) are provided. This is needed to support bootstrap operations where daemons are started at node boot, and applications where initial knowledge of cpu identification is needed to guide framework component selection.
Add orte configuration option to control the use of the framework in the system. Although the code will build, it will not be active unless configured with --enable-bootstrap.

If bootstrap is enabled and the new opal_sysinfo framework can successfully determine the cpu model, pass that info to the application as an MCA param to support some work at Sun.

Also, have daemons report back the resources they find to guide process mapping in bootstrap operations (i.e., where the daemon starts at node boot as opposed to being launched at application start).

Adjust some platform files to enable these capabilities.

This commit was SVN r22244.
2009-11-30 23:11:25 +00:00

102 строки
2.3 KiB
C

/*
* Copyright (c) 2009 Cisco Systems, Inc. All rights reserved.
*
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
/**
* @file
*
* system resource info framework component interface.
*
* Intent
*
* self-discovery of available local resources.
*
*/
#ifndef OPAL_MCA_SYSINFO_H
#define OPAL_MCA_SYSINFO_H
#include "opal_config.h"
#include "opal/mca/mca.h"
#include "opal/mca/base/base.h"
#include "opal/class/opal_list.h"
#include "opal/mca/sysinfo/sysinfo_types.h"
BEGIN_C_DECLS
/**
* Module initialization function. Should return OPAL_SUCCESS.
*/
typedef int (*opal_sysinfo_base_module_init_fn_t)(void);
typedef int (*opal_sysinfo_base_module_query_fn_t)(char **keys, opal_list_t *values);
typedef int (*opal_sysinfo_base_module_fini_fn_t)(void);
/* Public API module */
struct opal_sysinfo_API_module_1_0_0_t {
opal_sysinfo_base_module_query_fn_t query;
};
typedef struct opal_sysinfo_API_module_1_0_0_t opal_sysinfo_API_module_t;
/**
* Structure for sysinfo components.
*/
struct opal_sysinfo_base_component_2_0_0_t {
/** MCA base component */
mca_base_component_t base_version;
/** MCA base data */
mca_base_component_data_t base_data;
};
/**
* Convenience typedef
*/
typedef struct opal_sysinfo_base_component_2_0_0_t opal_sysinfo_base_component_2_0_0_t;
typedef struct opal_sysinfo_base_component_2_0_0_t opal_sysinfo_base_component_t;
/**
* Structure for sysinfo modules
*/
struct opal_sysinfo_base_module_1_0_0_t {
opal_sysinfo_base_module_init_fn_t init;
opal_sysinfo_base_module_query_fn_t query;
opal_sysinfo_base_module_fini_fn_t finalize;
};
/**
* Convenience typedef
*/
typedef struct opal_sysinfo_base_module_1_0_0_t opal_sysinfo_base_module_1_0_0_t;
typedef struct opal_sysinfo_base_module_1_0_0_t opal_sysinfo_base_module_t;
typedef struct {
opal_list_item_t super;
opal_sysinfo_base_module_t *module;
} opal_sysinfo_module_t;
OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_sysinfo_module_t);
/**
* Macro for use in components that are of type sysinfo
*/
#define OPAL_SYSINFO_BASE_VERSION_2_0_0 \
MCA_BASE_VERSION_2_0_0, \
"sysinfo", 2, 0, 0
/* Global structure for accessing sysinfo functions */
OPAL_DECLSPEC extern opal_sysinfo_API_module_t opal_sysinfo;
END_C_DECLS
#endif /* OPAL_MCA_SYSINFO_H */