File indexing completed on 2025-02-23 10:12:57
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 #ifndef PRTE_MCA_RMAPS_BASE_H
0028 #define PRTE_MCA_RMAPS_BASE_H
0029
0030
0031
0032
0033 #include "prte_config.h"
0034 #include "types.h"
0035
0036 #include "src/class/pmix_list.h"
0037 #include "src/mca/mca.h"
0038 #include "src/mca/base/pmix_mca_base_framework.h"
0039 #include "src/mca/schizo/schizo.h"
0040 #include "src/util/pmix_printf.h"
0041
0042 #include "src/runtime/prte_globals.h"
0043
0044 #include "src/mca/rmaps/rmaps.h"
0045
0046 BEGIN_C_DECLS
0047
0048
0049
0050
0051 PRTE_EXPORT extern pmix_mca_base_framework_t prte_rmaps_base_framework;
0052
0053 PRTE_EXPORT int prte_rmaps_base_select(void);
0054
0055
0056
0057
0058
0059
0060
0061
0062 typedef struct {
0063
0064 pmix_list_t selected_modules;
0065
0066 prte_mapping_policy_t mapping;
0067 prte_ranking_policy_t ranking;
0068
0069 char *device;
0070
0071
0072 bool inherit;
0073
0074 bool hwthread_cpus;
0075
0076
0077 char *file;
0078 hwloc_cpuset_t available, baseset;
0079 char *default_mapping_policy;
0080
0081 bool require_hwtcpus;
0082 } prte_rmaps_base_t;
0083
0084
0085
0086
0087 PRTE_EXPORT extern prte_rmaps_base_t prte_rmaps_base;
0088
0089
0090
0091
0092 typedef struct {
0093 pmix_list_item_t super;
0094 int pri;
0095 prte_rmaps_base_module_t *module;
0096 pmix_mca_base_component_t *component;
0097 } prte_rmaps_base_selected_module_t;
0098 PMIX_CLASS_DECLARATION(prte_rmaps_base_selected_module_t);
0099
0100
0101
0102
0103 PRTE_EXPORT void prte_rmaps_base_map_job(int sd, short args, void *cbdata);
0104
0105
0106
0107
0108
0109 PRTE_EXPORT int prte_rmaps_base_get_vpid_range(pmix_nspace_t jobid, pmix_rank_t *start,
0110 pmix_rank_t *range);
0111 PRTE_EXPORT int prte_rmaps_base_set_vpid_range(pmix_nspace_t jobid, pmix_rank_t start,
0112 pmix_rank_t range);
0113
0114
0115 PRTE_EXPORT char *prte_rmaps_base_print_mapping(prte_mapping_policy_t mapping);
0116 PRTE_EXPORT char *prte_rmaps_base_print_ranking(prte_ranking_policy_t ranking);
0117
0118 PRTE_EXPORT int prte_rmaps_base_prep_topology(hwloc_topology_t topo);
0119
0120 PRTE_EXPORT int prte_rmaps_base_filter_nodes(prte_app_context_t *app, pmix_list_t *nodes,
0121 bool remove);
0122
0123 PRTE_EXPORT int prte_rmaps_base_set_default_mapping(prte_job_t *jdata,
0124 prte_rmaps_options_t *options);
0125 PRTE_EXPORT int prte_rmaps_base_set_mapping_policy(prte_job_t *jdata, char *spec);
0126
0127 PRTE_EXPORT int prte_rmaps_base_set_default_ranking(prte_job_t *jdata,
0128 prte_rmaps_options_t *options);
0129 PRTE_EXPORT int prte_rmaps_base_set_ranking_policy(prte_job_t *jdata, char *spec);
0130
0131 PRTE_EXPORT void prte_rmaps_base_display_map(prte_job_t *jdata);
0132 PRTE_EXPORT void prte_rmaps_base_report_bindings(prte_job_t *jdata,
0133 prte_rmaps_options_t *options);
0134
0135 PRTE_EXPORT int prte_rmaps_base_get_ncpus(prte_node_t *node,
0136 hwloc_obj_t obj,
0137 prte_rmaps_options_t *options);
0138
0139 PRTE_EXPORT bool prte_rmaps_base_check_avail(prte_job_t *jdata,
0140 prte_app_context_t *app,
0141 prte_node_t *node,
0142 pmix_list_t *node_list,
0143 hwloc_obj_t obj,
0144 prte_rmaps_options_t *options);
0145
0146 PRTE_EXPORT int prte_rmaps_base_check_oversubscribed(prte_job_t *jdata,
0147 prte_app_context_t *app,
0148 prte_node_t *node,
0149 prte_rmaps_options_t *options);
0150
0151 PRTE_EXPORT void prte_rmaps_base_get_cpuset(prte_job_t *jdata,
0152 prte_node_t *node,
0153 prte_rmaps_options_t *options);
0154
0155 PRTE_EXPORT int prte_rmaps_base_check_support(prte_job_t *jdata,
0156 prte_node_t *node,
0157 prte_rmaps_options_t *options);
0158
0159 END_C_DECLS
0160
0161 #endif