Skip to content

Commit 7b0afb6

Browse files
authored
Merge pull request #67 from fractal-analytics-platform/34_parsl_config
Update local parsl/slurm config, to match executors of pelkmanslab - …
2 parents 8520b55 + c9fdef3 commit 7b0afb6

File tree

1 file changed

+32
-22
lines changed

1 file changed

+32
-22
lines changed

fractal_server/app/runner/runner_utils.py

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,11 @@
1414
Zurich.
1515
"""
1616
import asyncio
17+
import logging
1718
from functools import partial
1819
from functools import wraps
1920
from typing import Callable
2021

21-
import logging
22-
2322
import parsl
2423
from parsl.addresses import address_by_hostname
2524
from parsl.channels import LocalChannel
@@ -81,28 +80,29 @@ def load_parsl_config(
8180
raise NotImplementedError
8281

8382
if config == "local":
84-
8583
# Define a single provider
86-
prov = LocalProvider(
84+
prov_local = LocalProvider(
8785
launcher=SingleNodeLauncher(debug=False),
8886
channel=LocalChannel(),
8987
init_blocks=1,
9088
min_blocks=0,
9189
max_blocks=4,
9290
)
93-
94-
# Define two identical (apart from the label) executors
95-
htex = HighThroughputExecutor(
96-
label=add_prefix(workflow_id=workflow_id, executor_label="cpu-low"),
97-
provider=prov,
98-
address=address_by_hostname(),
99-
)
100-
htex_2 = HighThroughputExecutor(
101-
label=add_prefix(workflow_id=workflow_id, executor_label="cpu-2"),
102-
provider=prov,
103-
address=address_by_hostname(),
104-
)
105-
executors = [htex, htex_2]
91+
# Define executors
92+
providers = [prov_local] * 4
93+
labels = ["cpu-low", "cpu-mid", "cpu-high", "gpu"]
94+
executors = []
95+
for provider, label in zip(providers, labels):
96+
executors.append(
97+
HighThroughputExecutor(
98+
label=add_prefix(
99+
workflow_id=workflow_id, executor_label=label
100+
),
101+
provider=provider,
102+
address=address_by_hostname(),
103+
cpu_affinity="block",
104+
)
105+
)
106106

107107
elif config == "pelkmanslab":
108108

@@ -154,14 +154,18 @@ def load_parsl_config(
154154
providers = [prov_cpu_low, prov_cpu_mid, prov_cpu_high, prov_gpu]
155155
labels = ["cpu-low", "cpu-mid", "cpu-high", "gpu"]
156156
# FIXME
157-
list_mem_per_worker = [7, 15, 63, 63] # FIXME
157+
list_mem_per_worker = [7, 15, 63, 63] # FIXME
158158
executors = []
159159
for provider, label in zip(providers, labels):
160160
executors.append(
161161
HighThroughputExecutor(
162-
label=add_prefix(workflow_id=workflow_id, executor_label=label),
162+
label=add_prefix(
163+
workflow_id=workflow_id, executor_label=label
164+
),
163165
provider=provider,
164-
mem_per_worker=list_mem_per_worker[labels.index(label)], # FIXME
166+
mem_per_worker=list_mem_per_worker[
167+
labels.index(label)
168+
], # FIXME
165169
max_workers=100,
166170
address=address_by_hostname(),
167171
cpu_affinity="block",
@@ -188,7 +192,9 @@ def load_parsl_config(
188192

189193
# Define executors
190194
htex_slurm_cpu = HighThroughputExecutor(
191-
label=add_prefix(workflow_id=workflow_id, executor_label="cpu-low"),
195+
label=add_prefix(
196+
workflow_id=workflow_id, executor_label="cpu-low"
197+
),
192198
provider=prov_slurm_cpu,
193199
address=address_by_hostname(),
194200
cpu_affinity="block",
@@ -253,7 +259,11 @@ def load_parsl_config(
253259
)
254260

255261

256-
def shutdown_executors(*, workflow_id: str):
262+
def shutdown_executors(*, workflow_id: str, logger: logging.Logger = None):
263+
264+
if logger is None:
265+
logger = logging.getLogger("logs")
266+
257267
# Remove executors from parsl DFK
258268
# FIXME decorate with monitoring logs, as in:
259269
# https://github.com/Parsl/parsl/blob/master/parsl/dataflow/dflow.py#L1106

0 commit comments

Comments
 (0)