⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmgr.h

📁 MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising
💻 H
字号:
/* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana *                         University Research and Technology *                         Corporation.  All rights reserved. * Copyright (c) 2004-2006 The University of Tennessee and The University *                         of Tennessee Research Foundation.  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 RTE Resource Manager (RMGR) Subsystem * * The resource manager (RMGR) subsystem serves as the central * switchyard for all resource management activities, including * resource discovery, resource allocation, process mapping, and * process launch. */#ifndef ORTE_RMGR_H#define ORTE_RMGR_H/* * includes */#include "orte_config.h"#include "orte/orte_constants.h"#include "opal/mca/mca.h"#include "orte/mca/ns/ns_types.h"#include "orte/mca/gpr/gpr_types.h"#include "orte/mca/smr/smr_types.h"#include "rmgr_types.h"#if defined(c_plusplus) || defined(__cplusplus)extern "C" {#endif/* * Component functions - all MUST be provided! *//** * Setup a job. Allocated a jobid and initializes the job segment. * * @param app_context   Array of application context values. * @param num_context   Number of entries in the app_context array. * @param jobid         Returns id allocated to the job. * * @code * orte_jobid_t jobid; * * return_value = orte_rmgr.setup_job(app_context,num_context,&jobid); * @endcode */typedef int (*orte_rmgr_base_module_setup_job_fn_t)(    orte_app_context_t** app_context,    orte_std_cntr_t num_context,    orte_jobid_t *jobid,    opal_list_t *attrs);/* * Callback function for resource manager */typedef void (*orte_rmgr_cb_fn_t)(orte_jobid_t jobid, orte_proc_state_t state);/** * Shortcut to spawn an applications. Perform all steps required to * launch the specified application. * * (1) Create the application context - create a jobid * (2) Allocated resources to the job. * (3) Map processes to allocated resources * (4) Launch the job. * (5) Callback function - gets called all procs reach specified conditions (if NULL, then no callback done) * (6) callback conditions - flag indicating which triggers are to generate callbacks to the specified function * * @code * orte_jobid_t jobid; * * return_value = orte_rmgr.spawn(app_context, num_context, &jobid, NULL, 0); * @endcode */typedef int (*orte_rmgr_base_module_spawn_job_fn_t)(    orte_app_context_t** app_context,    orte_std_cntr_t num_context,    orte_jobid_t *jobid,    orte_std_cntr_t num_connect,    orte_process_name_t *connect,    orte_rmgr_cb_fn_t cbfn,    orte_proc_state_t cb_conditions,    opal_list_t *attributes);/** * Connect a process to other processes, possibly in other jobs. Note that this * function supports WILDCARD process name fields. Thus, a process can request * connection to all other processes in another job by providing a single * entry in the connect array that has a cellid of ORTE_CELLID_WILDCARD, the * desired jobid, and a vpid of ORTE_VPID_WILDCARD. */typedef int (*orte_rmgr_base_module_connect_fn_t)(orte_std_cntr_t num_connect,                                                  orte_process_name_t *connect);/** * Disconnect a process from one or more other processes. Note that this * function supports WILDCARD process name fields. Thus, a process can request * to disconnect from all other processes in another job by providing a single * entry in the connect array that has a cellid of ORTE_CELLID_WILDCARD, the * desired jobid, and a vpid of ORTE_VPID_WILDCARD. */typedef int (*orte_rmgr_base_module_disconnect_fn_t)(orte_std_cntr_t num_disconnect,                                                     orte_process_name_t *disconnect);/** * Allow module-specific init. */typedef int (*orte_rmgr_base_module_init_fn_t)(void);/**    * Cleanup resources held by rmgr. */typedef int (*orte_rmgr_base_module_finalize_fn_t)(void);/**    * GENERAL UTILITY FUNCTIONS *//** * Find an attribute * Given a list of attributes, return a pointer to the specified attribute * * @param attr_list A pointer to the list of attributes * @param key The key indicating the attribute to be returned. * @retval ptr A pointer to the orte_gpr_keyval_t containing the attribute. * Note that this value is *not* being duplicated, nor is it being * removed from the list, so alterations or release of the object will impact the list! * @retval NULL The specified attribute was not found - this function does not * consider this to be an error, so no ORTE_ERROR_LOG is printed out when this happens. */typedef orte_attribute_t* (*orte_rmgr_base_module_find_attribute_fn_t)(opal_list_t* attr_list, char* key);/** * Add an attribute * Given a list of attributes and the data for a new attribute, * this function will create the gpr_keyval_t object for that attribute, * populate it with the provided data, and append it to the list. If * overwrite is set to true AND the value is found on the list, then * it will be overwritten with the new value. If overwrite is NOT set * and the value is found on the list, it will be left alone - the value * will NOT be updated with the one provided. * * @param attr_list A pointer to the list of attributes * @param key The key for the attribute. * @param type The data type to be stored in the attribute. A value * of ORTE_UNDEF is acceptable to indicate that no data is being stored - * the existence of the attribute on the list is all that is required. * @param data A pointer to the data to be stored in the attribute. NULL * is acceptable IF the data type is ORTE_UNDEF. * @param overwrite Indicates if a pre-existing value can be overwritten or not * @retval ORTE_SUCCESS Attribute was added to list. * @retval ORTE_ERROR An appropriate error code indicating what went wrong. */typedef int (*orte_rmgr_base_module_add_attribute_fn_t)(opal_list_t* attr_list, char* key,                                                        orte_data_type_t type, void *data,                                                        bool overwrite);/** * Merge two attribute lists * Given two lists of attributes, this function will merge the second list into * the first. The boolean defines how to handle matching entries - if set to * true (ORTE_RMGR_ATTR_OVERRIDE), entries in the second list will OVERWRITE * matching entries in the first list. If set to false (ORTE_RMGR_ATTR_NO_OVERRIDE) * matching entries in the second list will be ignored. * * @param attr_list A pointer to the list of attributes * @param key The key for the attribute. * @param type The data type to be stored in the attribute. A value * of ORTE_UNDEF is acceptable to indicate that no data is being stored - * the existence of the attribute on the list is all that is required. * @param data A pointer to the data to be stored in the attribute. NULL * is acceptable IF the data type is ORTE_UNDEF. * @retval ORTE_SUCCESS Attribute was added to list. * @retval ORTE_ERROR An appropriate error code indicating what went wrong. */typedef int (*orte_rmgr_base_module_merge_attributes_fn_t)(opal_list_t* target,                                                           opal_list_t* source,                                                           bool override);/** * Delete an attribute * Given a pointer array of attributes, delete the specified attribute * * @param attr_list A pointer to the list of attributes * @param key The key indicating the attribute to be deleted. * @retval ORTE_SUCCESS Attribute was added to list. * @retval ORTE_ERROR An appropriate error code indicating what went wrong. Note that * an error code of NOT_FOUND will be returned if the specified attribute is * not on the provided list - it is up to the caller to decide if this is an actual * error. This function will NOT do an ORTE_ERROR_LOG in the case of NOT_FOUND. */typedef int (*orte_rmgr_base_module_delete_attribute_fn_t)(opal_list_t* attr_list, char* key);/***   APP_CONTEXT FUNCTIONS   ***//* * Store an array of app_context objects for a given job/pset */typedef int (*orte_rmgr_base_module_store_app_context_fn_t)(orte_jobid_t jobid,                                                            orte_app_context_t** app_context,                                                            orte_std_cntr_t num_context);/* * Get an array of app_context objects for a given job/pset */typedef int (*orte_rmgr_base_module_get_app_context_fn_t)(orte_jobid_t jobid,                                                          orte_app_context_t ***app_context,                                                          orte_std_cntr_t *num_context);/* * Check the app_context for changing to a working dir or the HOME dir */typedef int (*orte_rmgr_base_module_check_context_cwd_fn_t)(orte_app_context_t *context,                                                            bool want_chdir);/*  * Check app_context application for existence */typedef int (*orte_rmgr_base_module_check_context_app_fn_t)(orte_app_context_t *context);/**    * VPID FUNCTIONS *//**    * Store the vpid range of a job */typedef int (*orte_rmgr_base_module_set_vpid_range_fn_t)(orte_jobid_t jobid,                                                         orte_vpid_t start,                                                         orte_vpid_t range);/**    * Retrieve the vpid range of a job */typedef int (*orte_rmgr_base_module_get_vpid_range_fn_t)(orte_jobid_t jobid,                                                         orte_vpid_t *start,                                                         orte_vpid_t *range);/* * Ver 2.0 */struct orte_rmgr_base_module_2_0_0_t {    orte_rmgr_base_module_init_fn_t                 module_init;    orte_rmgr_base_module_setup_job_fn_t            setup_job;    orte_rmgr_base_module_spawn_job_fn_t            spawn_job;    orte_rmgr_base_module_connect_fn_t				connect;    orte_rmgr_base_module_disconnect_fn_t			disconnect;    orte_rmgr_base_module_finalize_fn_t             finalize;    /**   SUPPORT FUNCTIONS   ***/    orte_rmgr_base_module_find_attribute_fn_t       find_attribute;    orte_rmgr_base_module_add_attribute_fn_t        add_attribute;    orte_rmgr_base_module_merge_attributes_fn_t     merge_attributes;    orte_rmgr_base_module_delete_attribute_fn_t     delete_attribute;    orte_rmgr_base_module_get_app_context_fn_t      get_app_context;    orte_rmgr_base_module_store_app_context_fn_t    store_app_context;    orte_rmgr_base_module_check_context_cwd_fn_t    check_context_cwd;    orte_rmgr_base_module_check_context_app_fn_t    check_context_app;    orte_rmgr_base_module_set_vpid_range_fn_t       set_vpid_range;    orte_rmgr_base_module_get_vpid_range_fn_t       get_vpid_range;};typedef struct orte_rmgr_base_module_2_0_0_t orte_rmgr_base_module_2_0_0_t;typedef orte_rmgr_base_module_2_0_0_t orte_rmgr_base_module_t;/* * RMGR Component */typedef orte_rmgr_base_module_t* (*orte_rmgr_base_component_init_fn_t)(    int *priority);/* * the standard component data structure */struct orte_rmgr_base_component_2_0_0_t {    mca_base_component_t rmgr_version;    mca_base_component_data_1_0_0_t rmgr_data;    orte_rmgr_base_component_init_fn_t rmgr_init;};typedef struct orte_rmgr_base_component_2_0_0_t orte_rmgr_base_component_2_0_0_t;typedef orte_rmgr_base_component_2_0_0_t orte_rmgr_base_component_t;/** * Macro for use in components that are of type rmgr v2.0.0 */#define ORTE_RMGR_BASE_VERSION_2_0_0 \  /* rmgr v2.0 is chained to MCA v1.0 */ \  MCA_BASE_VERSION_1_0_0, \  /* rmgr v2.0 */ \  "rmgr", 2, 0, 0/** * Global structure for accessing RAS functions */ORTE_DECLSPEC extern orte_rmgr_base_module_t orte_rmgr;  /* holds selected module's function pointers */#if defined(c_plusplus) || defined(__cplusplus)}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -