OpenMPI
0.1.1
|
The Open RTE Resource Allocation Subsystem (RAS) More...
#include "orte_config.h"
#include "orte/constants.h"
#include "orte/types.h"
#include "opal/mca/mca.h"
#include "opal/class/opal_list.h"
#include "orte/runtime/orte_globals.h"
#include "ras_types.h"
Go to the source code of this file.
Data Structures | |
struct | orte_ras_t |
struct | orte_ras_base_module_2_0_0_t |
ras module More... | |
struct | orte_ras_base_component_2_0_0_t |
Component init / selection ras component. More... | |
Macros | |
#define | ORTE_RAS_BASE_VERSION_2_0_0 |
Macro for use in components that are of type ras. More... | |
Typedefs | |
typedef int(* | orte_ras_base_module_allocate_fn_t )(opal_list_t *nodes) |
Allocate resources to a job. | |
typedef int(* | orte_ras_base_module_finalize_fn_t )(void) |
Cleanup module resources. | |
typedef struct orte_ras_base_module_2_0_0_t | orte_ras_base_module_2_0_0_t |
Convenience typedef. | |
typedef orte_ras_base_module_2_0_0_t | orte_ras_base_module_t |
Convenience typedef. | |
typedef struct orte_ras_base_component_2_0_0_t | orte_ras_base_component_2_0_0_t |
Convenience typedef. | |
typedef orte_ras_base_component_2_0_0_t | orte_ras_base_component_t |
Convenience typedef. | |
Variables | |
BEGIN_C_DECLS typedef int(* | orte_ras_base_API_allocate_fn_t )(orte_job_t *jdata) |
ORTE_DECLSPEC orte_ras_t | orte_ras |
The Open RTE Resource Allocation Subsystem (RAS)
The resource allocation subsystem is responsible for determining what (if any) resources have been allocated to the specified job (via some prior action), and to obtain an allocation (if possible) if resources have NOT been previously allocated. It is anticipated that ORTE users will execute an "mpirun" or other command that invokes ORTE through one of two channels:
The RAS operates on a per-job basis - i.e., it serves to allocate the resources for a specific job. It takes several inputs, depending upon what is provided and desired:
The RAS outputs its results into three registry segments:
(a) the ORTE_NODE_STATUS_SEGMENT. The segment consists of a registry container for each node that has been allocated to a job - for proper operation, each container MUST be described by the following set of tokens:
For each node, the RAS stores the following information on the segment:
(b) the ORTE_JOB_SEGMENT. The RAS preallocates this segment, initializing one container for each process plus one container to store information that spans the job. This latter container houses information such as the application names, number of processes per application, process context (including argv and enviro arrays), and i/o forwarding info. The RAS does NOT establish nor fill any of the individual process info containers - rather, it preallocates the storage for those containers and places some of the job-wide information into that container. This info includes:
The remainder of the information in that container will be supplied by other subsystems.
(c) the ORTE_RESOURCE_SEGMENT. The RAS adds information to this segment to indicate consumption of an available resource. In particular, the RAS updates fields in the respective compute resource to indicate the portion of that resource that has been allocated and therefore can be presumed consumed. This includes info on the number of nodes and cpus allocated to existing jobs - these numbers are updated by the RAS when resources are deallocated at the completion of a job.
The information provided by the RAS is consumed by the resource mapper subsystem (RMAPS) that defines which process is executed upon which node/cpu, the process launch subsystem (PLS) that actually launches each process, and others.
Because the RAS operates as a multi-component framework (i.e., multiple components may be simultaneously instantiated), the RAS functions should NOT be called directly. Instead, they should be accessed via the ORTE resource manager (RMGR) subsystem.
#define ORTE_RAS_BASE_VERSION_2_0_0 |
Macro for use in components that are of type ras.