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.
@@ -1 +1 @@
1
- __VERSION__ = "2.18.2"
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"--mem={mem_per_task_MB}MB "
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
- mem_per_job_MB = self.parallel_tasks_per_job * self.mem_per_task_MB
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
- f"{self.prefix} --mem={mem_per_job_MB}M",
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fractal-server
3
- Version: 2.18.2
3
+ Version: 2.18.3a0
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE
@@ -1,4 +1,4 @@
1
- fractal_server/__init__.py,sha256=SYVCzme8G5fCPQcTLY-LEETzoVBgUiF6qN26Eofya8M,23
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=eFtfo9mXAoo-MEk-XZIK7OfwD21KjLAtdMzWfSvaypA,3735
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=pU2Szcg3tv7vinLJXbzSgYlfEPLY_b0R0YDR-FSYLc8,41873
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=JcAV1xNhzBjpZFTRRbQm0EN9Ti4udNOjseGQcFlFnuM,7897
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.2.dist-info/METADATA,sha256=3N5kI9DAFqLXBpWAwI_OmNluYRiksN-dD3PFYB4NPe4,4275
272
- fractal_server-2.18.2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
273
- fractal_server-2.18.2.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
274
- fractal_server-2.18.2.dist-info/licenses/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
275
- fractal_server-2.18.2.dist-info/RECORD,,
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,,