Skip to content
This repository was archived by the owner on Sep 30, 2022. It is now read-only.

Commit db49535

Browse files
authored
Merge pull request #1228 from rhc54/cmr20/oversub
Ensure we do not bind processes if we are oversubscribing
2 parents 2e6e616 + 294793c commit db49535

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

orte/mca/rmaps/base/rmaps_base_map_job.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -242,15 +242,19 @@ void orte_rmaps_base_map_job(int fd, short args, void *cbdata)
242242
* already (e.g., during the call to comm_spawn), then we don't
243243
* override it */
244244
if (!OPAL_BINDING_POLICY_IS_SET(jdata->map->binding)) {
245-
/* if the user specified a default binding policy via
246-
* MCA param, then we use it */
247-
if (OPAL_BINDING_POLICY_IS_SET(opal_hwloc_binding_policy)) {
245+
/* if the user specified that we allow oversubscription, then do not bind.
246+
* otherwise, if the user explicitly mapped-by some object, then we default
247+
* to binding to that object */
248+
if ((ORTE_MAPPING_SUBSCRIBE_GIVEN & ORTE_GET_MAPPING_DIRECTIVE(orte_rmaps_base.mapping)) &&
249+
!(ORTE_MAPPING_NO_OVERSUBSCRIBE & ORTE_GET_MAPPING_DIRECTIVE(orte_rmaps_base.mapping))) {
250+
OPAL_SET_BINDING_POLICY(jdata->map->binding, OPAL_BIND_TO_NONE);
251+
} else if (OPAL_BINDING_POLICY_IS_SET(opal_hwloc_binding_policy)) {
252+
/* if the user specified a default binding policy via
253+
* MCA param, then we use it */
248254
jdata->map->binding = opal_hwloc_binding_policy;
249255
} else {
250256
orte_mapping_policy_t mpol;
251257
mpol = ORTE_GET_MAPPING_POLICY(orte_rmaps_base.mapping);
252-
/* if the user explicitly mapped-by some object, then we default
253-
* to binding to that object */
254258
if (ORTE_MAPPING_POLICY_IS_SET(jdata->map->mapping) &&
255259
ORTE_MAPPING_BYBOARD < mpol && mpol < ORTE_MAPPING_BYSLOT) {
256260
if (ORTE_MAPPING_BYHWTHREAD == mpol) {

0 commit comments

Comments
 (0)