Skip to content

Commit 2381447

Browse files
committed
if gen_on_worker is True, then [0] needs to be removed as the default zero-resource-worker. [0] shouldn't factor into the math for get_workers2assign2
1 parent f2c77a5 commit 2381447

5 files changed

Lines changed: 17 additions & 1 deletion

File tree

libensemble/resources/rset_resources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def get_rsets_on_a_node(num_rsets, resources):
130130
def get_workers2assign2(num_workers, resources):
131131
"""Returns workers to assign resources to"""
132132
zero_resource_list = resources.zero_resource_workers
133-
return num_workers - len(zero_resource_list)
133+
return num_workers - len(zero_resource_list) if resources.zero_resource_workers != [0] else num_workers
134134

135135
@staticmethod
136136
def even_assignment(nnodes, nworkers):

libensemble/tests/functionality_tests/test_1d_splitcomm.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
libE_specs["H_file_prefix"] = "splitcomm_" + str(sub_comm_number)
3535
libE_specs["safe_mode"] = False
3636
libE_specs["disable_log_files"] = True
37+
libE_specs["gen_on_worker"] = True
3738

3839
sim_specs = {
3940
"sim_f": sim_f,

libensemble/utils/pydantic_bindings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from libensemble import specs
88
from libensemble.resources import platforms
99
from libensemble.utils.validators import (
10+
check_adjust_zrw_on_gen_on_worker,
1011
check_any_workers_and_disable_rm_if_tcp,
1112
check_exit_criteria,
1213
check_gpu_setting_type,
@@ -95,6 +96,7 @@
9596
"set_default_comms": set_default_comms,
9697
"set_workflow_dir": set_workflow_dir,
9798
"set_calc_dirs_on_input_dir": set_calc_dirs_on_input_dir,
99+
"check_adjust_zrw_on_gen_on_worker": check_adjust_zrw_on_gen_on_worker,
98100
},
99101
)
100102

libensemble/utils/specs_checkers.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,10 @@ def _check_logical_cores(values):
100100
scg(values, "logical_cores_per_node") % scg(values, "cores_per_node") == 0
101101
), "Logical cores doesn't divide evenly into cores"
102102
return values
103+
104+
105+
def _check_adjust_zrw_on_gen_on_worker(values):
106+
"""When gen_on_worker is set the default zero_resource_worker value complicates resources"""
107+
if scg(values, "gen_on_worker") and scg(values, "zero_resource_workers") == [0]:
108+
scs(values, "zero_resource_workers", [])
109+
return values

libensemble/utils/validators.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from libensemble.resources.platforms import Platform
99
from libensemble.utils.specs_checkers import (
10+
_check_adjust_zrw_on_gen_on_worker,
1011
_check_any_workers_and_disable_rm_if_tcp,
1112
_check_exit_criteria,
1213
_check_H0,
@@ -117,6 +118,11 @@ def check_mpi_runner_type(cls, value):
117118
check_mpi_runner_type = field_validator("mpi_runner")(classmethod(check_mpi_runner_type))
118119

119120

121+
@model_validator(mode="after")
122+
def check_adjust_zrw_on_gen_on_worker(self):
123+
return _check_adjust_zrw_on_gen_on_worker(self)
124+
125+
120126
@model_validator(mode="after")
121127
def check_any_workers_and_disable_rm_if_tcp(self):
122128
return _check_any_workers_and_disable_rm_if_tcp(self)

0 commit comments

Comments
 (0)