fractal-server 2.18.2__py3-none-any.whl → 2.18.3a0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fractal_server/__init__.py +1 -1
- fractal_server/runner/config/_slurm.py +2 -0
- fractal_server/runner/executors/slurm_common/base_slurm_runner.py +7 -3
- fractal_server/runner/executors/slurm_common/slurm_config.py +20 -2
- {fractal_server-2.18.2.dist-info → fractal_server-2.18.3a0.dist-info}/METADATA +1 -1
- {fractal_server-2.18.2.dist-info → fractal_server-2.18.3a0.dist-info}/RECORD +9 -9
- {fractal_server-2.18.2.dist-info → fractal_server-2.18.3a0.dist-info}/WHEEL +0 -0
- {fractal_server-2.18.2.dist-info → fractal_server-2.18.3a0.dist-info}/entry_points.txt +0 -0
- {fractal_server-2.18.2.dist-info → fractal_server-2.18.3a0.dist-info}/licenses/LICENSE +0 -0
fractal_server/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__VERSION__ = "2.18.
|
|
1
|
+
__VERSION__ = "2.18.3a0"
|
|
@@ -35,6 +35,7 @@ class SlurmConfigSet(BaseModel):
|
|
|
35
35
|
extra_lines:
|
|
36
36
|
gpus:
|
|
37
37
|
shebang_line: The shell shebang to use for SLURM jobs.
|
|
38
|
+
use_mem_per_cpu:
|
|
38
39
|
"""
|
|
39
40
|
|
|
40
41
|
model_config = ConfigDict(extra="forbid")
|
|
@@ -51,6 +52,7 @@ class SlurmConfigSet(BaseModel):
|
|
|
51
52
|
extra_lines: list[NonEmptyStr] = Field(default_factory=list)
|
|
52
53
|
gpus: NonEmptyStr | None = None
|
|
53
54
|
shebang_line: str = "#!/bin/sh"
|
|
55
|
+
use_mem_per_cpu: bool = False
|
|
54
56
|
|
|
55
57
|
|
|
56
58
|
class BatchingConfigSet(BaseModel):
|
|
@@ -365,7 +365,8 @@ class BaseSlurmRunner(BaseRunner):
|
|
|
365
365
|
|
|
366
366
|
# Prepare SLURM preamble based on SlurmConfig object
|
|
367
367
|
script_lines = slurm_config.to_sbatch_preamble(
|
|
368
|
-
remote_export_dir=self.user_cache_dir
|
|
368
|
+
remote_export_dir=self.user_cache_dir,
|
|
369
|
+
use_mem_per_cpu=slurm_config.use_mem_per_cpu,
|
|
369
370
|
)
|
|
370
371
|
|
|
371
372
|
# Extend SLURM preamble with variable which are not in SlurmConfig, and
|
|
@@ -389,11 +390,14 @@ class BaseSlurmRunner(BaseRunner):
|
|
|
389
390
|
script_lines.append("\n")
|
|
390
391
|
|
|
391
392
|
# Include command lines
|
|
392
|
-
mem_per_task_MB = slurm_config.mem_per_task_MB
|
|
393
393
|
for cmd in cmdlines:
|
|
394
|
+
if slurm_config.use_mem_per_cpu:
|
|
395
|
+
mem_specific = f"--mem-per-cpu={slurm_config.mem_per_cpu_MB}MB"
|
|
396
|
+
else:
|
|
397
|
+
mem_specific = f"--mem={slurm_config.mem_per_task_MB}MB"
|
|
394
398
|
script_lines.append(
|
|
395
399
|
"srun --ntasks=1 --cpus-per-task=$SLURM_CPUS_PER_TASK "
|
|
396
|
-
f"
|
|
400
|
+
f"{mem_specific} "
|
|
397
401
|
f"{cmd} &"
|
|
398
402
|
)
|
|
399
403
|
script_lines.append("wait\n\n")
|
|
@@ -42,6 +42,9 @@ class SlurmConfig(BaseModel):
|
|
|
42
42
|
exclude: Corresponds to SLURM option.
|
|
43
43
|
prefix: Prefix of configuration lines in SLURM submission scripts.
|
|
44
44
|
shebang_line: Shebang line for SLURM submission scripts.
|
|
45
|
+
use_mem_per_cpu:
|
|
46
|
+
If `True`, use `--mem-per-cpu` rather than `--mem`, both at the job
|
|
47
|
+
level and for `srun` statements.
|
|
45
48
|
extra_lines: Additional lines to include in SLURM submission scripts.
|
|
46
49
|
tasks_per_job: Number of tasks for each SLURM job.
|
|
47
50
|
parallel_tasks_per_job: Number of tasks to run in parallel for
|
|
@@ -70,9 +73,12 @@ class SlurmConfig(BaseModel):
|
|
|
70
73
|
partition: str
|
|
71
74
|
cpus_per_task: int
|
|
72
75
|
mem_per_task_MB: int
|
|
76
|
+
|
|
73
77
|
prefix: str = "#SBATCH"
|
|
74
78
|
shebang_line: str = "#!/bin/sh"
|
|
75
79
|
|
|
80
|
+
use_mem_per_cpu: bool = False
|
|
81
|
+
|
|
76
82
|
# Optional SLURM parameters
|
|
77
83
|
job_name: str | None = None
|
|
78
84
|
constraint: str | None = None
|
|
@@ -139,6 +145,7 @@ class SlurmConfig(BaseModel):
|
|
|
139
145
|
def to_sbatch_preamble(
|
|
140
146
|
self,
|
|
141
147
|
remote_export_dir: str,
|
|
148
|
+
use_mem_per_cpu: bool = False,
|
|
142
149
|
) -> list[str]:
|
|
143
150
|
"""
|
|
144
151
|
Compile `SlurmConfig` object into the preamble of a SLURM submission
|
|
@@ -148,6 +155,8 @@ class SlurmConfig(BaseModel):
|
|
|
148
155
|
remote_export_dir:
|
|
149
156
|
Base directory for exports defined in
|
|
150
157
|
`self.user_local_exports`.
|
|
158
|
+
use_mem_per_cpu:
|
|
159
|
+
If `True`, use `--mem-per-cpu` rather than `--mem`.
|
|
151
160
|
"""
|
|
152
161
|
if self.parallel_tasks_per_job is None:
|
|
153
162
|
raise ValueError(
|
|
@@ -157,13 +166,18 @@ class SlurmConfig(BaseModel):
|
|
|
157
166
|
if len(self.extra_lines) != len(set(self.extra_lines)):
|
|
158
167
|
raise ValueError(f"{self.extra_lines=} contains repetitions")
|
|
159
168
|
|
|
160
|
-
|
|
169
|
+
if use_mem_per_cpu:
|
|
170
|
+
memory_line = f"{self.prefix} --mem-per-cpu={self.mem_per_cpu_MB}M"
|
|
171
|
+
else:
|
|
172
|
+
mem_per_job_MB = self.parallel_tasks_per_job * self.mem_per_task_MB
|
|
173
|
+
memory_line = f"{self.prefix} --mem={mem_per_job_MB}M"
|
|
174
|
+
|
|
161
175
|
lines = [
|
|
162
176
|
self.shebang_line,
|
|
163
177
|
f"{self.prefix} --partition={self.partition}",
|
|
164
178
|
f"{self.prefix} --ntasks={self.parallel_tasks_per_job}",
|
|
165
179
|
f"{self.prefix} --cpus-per-task={self.cpus_per_task}",
|
|
166
|
-
|
|
180
|
+
memory_line,
|
|
167
181
|
]
|
|
168
182
|
for key in [
|
|
169
183
|
"job_name",
|
|
@@ -214,3 +228,7 @@ class SlurmConfig(BaseModel):
|
|
|
214
228
|
@property
|
|
215
229
|
def batch_size(self) -> int:
|
|
216
230
|
return self.tasks_per_job
|
|
231
|
+
|
|
232
|
+
@property
|
|
233
|
+
def mem_per_cpu_MB(self) -> int:
|
|
234
|
+
return int(self.mem_per_task_MB / self.cpus_per_task)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
|
1
|
+
fractal_server/__init__.py,sha256=dEhdl9EtyqOPj5CiMlEv2OAVTTkU6dc3GeZ002YM4p8,25
|
|
2
2
|
fractal_server/__main__.py,sha256=QeKoAgqoiozLJDa8kSVe-Aso1WWgrk1yLUYWS8RxZVM,11405
|
|
3
3
|
fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
|
|
4
4
|
fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -178,7 +178,7 @@ fractal_server/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
178
178
|
fractal_server/runner/components.py,sha256=-Ii5l8d_V6f5DFOd-Zsr8VYmOsyqw0Hox9fEFQiuqxY,66
|
|
179
179
|
fractal_server/runner/config/__init__.py,sha256=a-vSrvWBeMVnxTtYoy-f5Ibt_mM8MM3F7jqnPvvjHSY,108
|
|
180
180
|
fractal_server/runner/config/_local.py,sha256=IHWtxpKuJDdsQNpk8Q5bNL4DEJunNkNJkLfetfnwmQM,788
|
|
181
|
-
fractal_server/runner/config/_slurm.py,sha256=
|
|
181
|
+
fractal_server/runner/config/_slurm.py,sha256=VPQEqGxdeaXit6LbLGMAyQTDrrN6zG2RiP_ZpI07hvQ,3794
|
|
182
182
|
fractal_server/runner/config/slurm_mem_to_MB.py,sha256=6KmrIC-NymQjb9-bIQjNYQx6mE0OoKoZxdi6WQnWOHw,2003
|
|
183
183
|
fractal_server/runner/exceptions.py,sha256=N8DLn7tuV8zMSdr8xdJN0aIdytPveSCeQ1Y5IoxXW-8,1778
|
|
184
184
|
fractal_server/runner/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -190,10 +190,10 @@ fractal_server/runner/executors/local/runner.py,sha256=0s0u5ONasXdsvS2WD5zxksQgv
|
|
|
190
190
|
fractal_server/runner/executors/slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
191
|
fractal_server/runner/executors/slurm_common/_batching.py,sha256=YQjWRTDI1e6NeLe1R-1QWlt49i42M9ILeExEjdjgy48,8348
|
|
192
192
|
fractal_server/runner/executors/slurm_common/_job_states.py,sha256=nuV-Zba38kDrRESOVB3gaGbrSPZc4q7YGichQaeqTW0,238
|
|
193
|
-
fractal_server/runner/executors/slurm_common/base_slurm_runner.py,sha256=
|
|
193
|
+
fractal_server/runner/executors/slurm_common/base_slurm_runner.py,sha256=NOgf7M1FDfPgKEJvKu8HgU4QYjAk-ZrovOOHMAEr27w,42082
|
|
194
194
|
fractal_server/runner/executors/slurm_common/get_slurm_config.py,sha256=B6EKjob8Y-DiJ8YbXf2CeoY7B8cwvkpKvlW8Ce6bbx0,7115
|
|
195
195
|
fractal_server/runner/executors/slurm_common/remote.py,sha256=8pTMTRp_LjzoUr3FtFTfdvDhuLnqzY6HT-T9pzrVLw4,3845
|
|
196
|
-
fractal_server/runner/executors/slurm_common/slurm_config.py,sha256=
|
|
196
|
+
fractal_server/runner/executors/slurm_common/slurm_config.py,sha256=m65hJ4NJfk74ogKYSbC9l0Y9D3QSkAnMoUdq3loegpw,8498
|
|
197
197
|
fractal_server/runner/executors/slurm_common/slurm_job_task_models.py,sha256=VeX40CvU5fckUpSyXlzb3EDE9xxPXkT2sZKLXq_6Ooc,3493
|
|
198
198
|
fractal_server/runner/executors/slurm_ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
199
199
|
fractal_server/runner/executors/slurm_ssh/run_subprocess.py,sha256=SyW6t4egvbiARph2YkFjc88Hj94fCamZVi50L7ph8VM,996
|
|
@@ -268,8 +268,8 @@ fractal_server/types/validators/_workflow_task_arguments_validators.py,sha256=zt
|
|
|
268
268
|
fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
|
|
269
269
|
fractal_server/utils.py,sha256=-rjg8QTXQcKweXjn0NcmETFs1_uM9PGnbl0Q7c4ERPM,2181
|
|
270
270
|
fractal_server/zip_tools.py,sha256=Uhn-ax4_9g1PJ32BdyaX30hFpAeVOv2tZYTUK-zVn1E,5719
|
|
271
|
-
fractal_server-2.18.
|
|
272
|
-
fractal_server-2.18.
|
|
273
|
-
fractal_server-2.18.
|
|
274
|
-
fractal_server-2.18.
|
|
275
|
-
fractal_server-2.18.
|
|
271
|
+
fractal_server-2.18.3a0.dist-info/METADATA,sha256=gvMqw6he1Mg5FoCHcVzHL1i3ywNWUhVfVz_Lqa_XF5I,4277
|
|
272
|
+
fractal_server-2.18.3a0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
273
|
+
fractal_server-2.18.3a0.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
|
274
|
+
fractal_server-2.18.3a0.dist-info/licenses/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
|
275
|
+
fractal_server-2.18.3a0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|