1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #ifndef ORTE_MCA_RMAPS_TYPES_H
26 #define ORTE_MCA_RMAPS_TYPES_H
27
28 #include "orte_config.h"
29 #include "orte/constants.h"
30
31 #include "opal/class/opal_pointer_array.h"
32 #include "opal/mca/hwloc/hwloc-internal.h"
33
34 #include "orte/runtime/orte_globals.h"
35
36
37
38
39
40 BEGIN_C_DECLS
41
42 typedef uint16_t orte_mapping_policy_t;
43 #define ORTE_MAPPING_POLICY OPAL_UINT16
44 typedef uint16_t orte_ranking_policy_t;
45 #define ORTE_RANKING_POLICY OPAL_UINT16
46
47
48
49
50
51 struct orte_job_map_t {
52 opal_object_t super;
53
54 char *req_mapper;
55 char *last_mapper;
56 orte_mapping_policy_t mapping;
57 orte_ranking_policy_t ranking;
58 opal_binding_policy_t binding;
59
60 char *ppr;
61 int16_t cpus_per_rank;
62 bool display_map;
63
64
65
66
67 orte_std_cntr_t num_new_daemons;
68
69
70
71 orte_vpid_t daemon_vpid_start;
72
73 orte_std_cntr_t num_nodes;
74
75 opal_pointer_array_t *nodes;
76 };
77 typedef struct orte_job_map_t orte_job_map_t;
78 ORTE_DECLSPEC OBJ_CLASS_DECLARATION(orte_job_map_t);
79
80
81
82
83 #define ORTE_RMAPS_BASE_VERSION_2_0_0 \
84 ORTE_MCA_BASE_VERSION_2_1_0("rmaps", 2, 0, 0)
85
86
87 #define ORTE_MAPPING_NO_USE_LOCAL 0x0100
88 #define ORTE_MAPPING_NO_OVERSUBSCRIBE 0x0200
89 #define ORTE_MAPPING_SUBSCRIBE_GIVEN 0x0400
90 #define ORTE_MAPPING_SPAN 0x0800
91
92 #define ORTE_MAPPING_CONFLICTED 0x1000
93
94 #define ORTE_MAPPING_LOCAL_GIVEN 0x2000
95 #define ORTE_MAPPING_GIVEN 0x4000
96
97 #define ORTE_MAPPING_DEBUGGER 0x8000
98 #define ORTE_SET_MAPPING_DIRECTIVE(target, pol) \
99 (target) |= (pol)
100 #define ORTE_UNSET_MAPPING_DIRECTIVE(target, pol) \
101 (target) &= ~(pol)
102 #define ORTE_GET_MAPPING_DIRECTIVE(pol) \
103 ((pol) & 0xff00)
104
105
106
107
108
109
110 #define ORTE_MAPPING_BYNODE 1
111 #define ORTE_MAPPING_BYBOARD 2
112 #define ORTE_MAPPING_BYNUMA 3
113 #define ORTE_MAPPING_BYSOCKET 4
114 #define ORTE_MAPPING_BYL3CACHE 5
115 #define ORTE_MAPPING_BYL2CACHE 6
116 #define ORTE_MAPPING_BYL1CACHE 7
117 #define ORTE_MAPPING_BYCORE 8
118 #define ORTE_MAPPING_BYHWTHREAD 9
119
120 #define ORTE_MAPPING_BYSLOT 10
121 #define ORTE_MAPPING_BYDIST 11
122
123 #define ORTE_MAPPING_RR 0x000f
124
125
126 #define ORTE_MAPPING_SEQ 20
127
128 #define ORTE_MAPPING_STAGED 21
129
130 #define ORTE_MAPPING_BYUSER 22
131
132 #define ORTE_MAPPING_PPR 23
133
134
135
136 #define ORTE_GET_MAPPING_POLICY(pol) \
137 ((pol) & 0x00ff)
138
139 #define ORTE_MAPPING_POLICY_IS_SET(pol) \
140 ((pol) & 0x00ff)
141 #define ORTE_SET_MAPPING_POLICY(target, pol) \
142 (target) = (pol) | ((target) & 0xff00)
143
144
145 #define ORTE_RANKING_SPAN 0x1000
146 #define ORTE_RANKING_FILL 0x2000
147 #define ORTE_RANKING_GIVEN 0x4000
148 #define ORTE_SET_RANKING_DIRECTIVE(target, pol) \
149 (target) |= (pol)
150 #define ORTE_UNSET_RANKING_DIRECTIVE(target, pol) \
151 (target) &= ~(pol)
152 #define ORTE_GET_RANKING_DIRECTIVE(pol) \
153 ((pol) & 0xf000)
154
155
156 #define ORTE_RANK_BY_NODE 1
157 #define ORTE_RANK_BY_BOARD 2
158 #define ORTE_RANK_BY_NUMA 3
159 #define ORTE_RANK_BY_SOCKET 4
160 #define ORTE_RANK_BY_L3CACHE 5
161 #define ORTE_RANK_BY_L2CACHE 6
162 #define ORTE_RANK_BY_L1CACHE 7
163 #define ORTE_RANK_BY_CORE 8
164 #define ORTE_RANK_BY_HWTHREAD 9
165 #define ORTE_RANK_BY_SLOT 10
166 #define ORTE_GET_RANKING_POLICY(pol) \
167 ((pol) & 0x0fff)
168
169 #define ORTE_RANKING_POLICY_IS_SET(pol) \
170 ((pol) & 0x0fff)
171 #define ORTE_SET_RANKING_POLICY(target, pol) \
172 (target) = (pol) | ((target) & 0xf000)
173
174 END_C_DECLS
175
176 #endif