Skip to content

Commit e05d3d0

Browse files
authored
Merge pull request #496 from ExaWorks/default_node_count_slurm
Use default values for resource requests
2 parents 5d05d02 + b0d3253 commit e05d3d0

File tree

7 files changed

+37
-17
lines changed

7 files changed

+37
-17
lines changed

src/psij/executors/batch/cobalt/cobalt.mustache

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
#COBALT --cwd={{.}}
77
{{/job.spec.directory}}
88
{{#job.spec.resources}}
9-
{{#node_count}}
9+
{{#computed_node_count}}
1010
#COBALT --nodecount={{.}}
11-
{{/node_count}}
12-
{{#process_count}}
11+
{{/computed_node_count}}
12+
{{#computed_process_count}}
1313
#COBALT --proccount={{.}}
14-
{{/process_count}}
14+
{{/computed_process_count}}
1515
{{/job.spec.resources}}
1616
{{#formatted_job_duration}}
1717
#COBALT --time={{duration}}

src/psij/executors/batch/lsf/lsf.mustache

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020

2121
{{#job.spec.resources}}
2222

23-
{{#node_count}}
23+
{{#computed_node_count}}
2424
#BSUB -nnodes {{.}}
25-
{{/node_count}}
25+
{{/computed_node_count}}
2626

27-
{{#process_count}}
27+
{{#computed_process_count}}
2828
#BSUB -n {{.}}
29-
{{/process_count}}
29+
{{/computed_process_count}}
3030

3131
{{#gpu_cores_per_process}}
3232
#BSUB -gpu num={{.}}/task

src/psij/executors/batch/slurm/slurm.mustache

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@
1414
#SBATCH --exclusive
1515
{{/exclusive_node_use}}
1616

17-
{{#node_count}}
17+
{{#computed_node_count}}
1818
#SBATCH --nodes={{.}}
19-
{{/node_count}}
19+
{{/computed_node_count}}
2020

21-
{{#process_count}}
21+
{{#computed_process_count}}
2222
#SBATCH --ntasks={{.}}
23-
{{/process_count}}
23+
{{/computed_process_count}}
2424

25-
{{#processes_per_node}}
25+
{{#computed_processes_per_node}}
2626
#SBATCH --ntasks-per-node={{.}}
27-
{{/processes_per_node}}
27+
{{/computed_processes_per_node}}
2828

2929
{{#gpu_cores_per_process}}
3030
#SBATCH --gpus-per-task={{.}}

src/psij/job_executor.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@
1414
from psij.job_executor_config import JobExecutorConfig
1515
from psij.job_launcher import Launcher
1616
from psij.job_spec import JobSpec
17+
from psij.resource_spec import ResourceSpecV1
1718

1819

1920
logger = logging.getLogger(__name__)
2021

2122

23+
_DEFAULT_RESOURCES = ResourceSpecV1()
24+
25+
2226
class JobExecutor(ABC):
2327
"""An abstract base class for all JobExecutor implementations."""
2428

@@ -92,6 +96,8 @@ def _check_job(self, job: Job) -> JobSpec:
9296
spec = job.spec
9397
if not spec:
9498
raise InvalidJobException('Missing specification')
99+
if not spec.resources:
100+
spec.resources = _DEFAULT_RESOURCES
95101

96102
if __debug__:
97103
if spec.environment is not None:

src/psij/resource_spec.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def __init__(self, node_count: Optional[int] = None,
5454
processes_per_node: Optional[int] = None,
5555
cpu_cores_per_process: Optional[int] = None,
5656
gpu_cores_per_process: Optional[int] = None,
57-
exclusive_node_use: bool = True) -> None:
57+
exclusive_node_use: bool = False) -> None:
5858
"""
5959
Some of the properties of this class are constrained. Specifically,
6060
`process_count = node_count * processes_per_node`. Specifying all constrained properties

tests/plugins1/_batch_test/test/test.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ cd "{{.}}"
99
export PSIJ_TEST_BATCH_EXEC_COUNT=1
1010

1111
{{#job.spec.resources}}
12-
{{#process_count}}
12+
{{#computed_process_count}}
1313
export PSIJ_TEST_BATCH_EXEC_COUNT={{.}}
14-
{{/process_count}}
14+
{{/computed_process_count}}
1515
{{/job.spec.resources}}
1616

1717
{{#job.spec.attributes}}

tests/test_executor.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,3 +224,17 @@ def test_submit_script_generation(exec_name: str) -> None:
224224
lambda k, v: setattr(attrs, k, v))
225225
_check_str_attrs(ex, job, [prefix + '.cust_attr1', prefix + '.cust_attr2'],
226226
lambda k, v: c_attrs.__setitem__(k, v))
227+
228+
229+
def test_resource_generation1() -> None:
230+
res = ResourceSpecV1()
231+
spec = JobSpec('/bin/date', resources=res)
232+
job = Job(spec=spec)
233+
ex = JobExecutor.get_instance('slurm')
234+
assert isinstance(ex, BatchSchedulerExecutor)
235+
with TemporaryFile(mode='w+') as f:
236+
ex.generate_submit_script(job, ex._create_script_context(job), f)
237+
f.seek(0)
238+
contents = f.read()
239+
if contents.find('--exclusive') != -1:
240+
pytest.fail('Spurious exclusive flag')

0 commit comments

Comments
 (0)