From df51702cb8979c0834c4a441f44a486683738b33 Mon Sep 17 00:00:00 2001 From: Paul Saxe Date: Thu, 22 Oct 2026 12:08:56 -0400 Subject: [PATCH] Loops checkpointed before 2026.10.22 resume unchanged cores per iteration lists 1, its default until 2026.10.22, as a former default (needs seamm 2026.10.22.1). The user guide now says a refused resume runs nothing. Co-Authored-By: Claude Opus 5.5 --- HISTORY.rst | 8 ++++++++ docs/user_guide/index.rst | 7 +++++-- loop_step/loop_parameters.py | 2 ++ requirements.txt | 2 +- tests/test_loop_step.py | 2 ++ 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index c8030b7..81a5b40 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,6 +1,14 @@ ======= History ======= +2026.10.22.1 -- Bugfix: loops checkpointed before 2026.10.22 could not resume + * A job with a loop that was checkpointed before 2026.10.22 refused to resume + unless its cores per iteration was changed to automatic. It now resumes + unchanged too (needs seamm 2026.10.22.1). Its other settings of how the + iterations run must still be as they were. + * The user guide now says that a resume refused because a setting changed runs + nothing, rather than starting the job from the top. + 2026.10.22 -- Bugfix: a parallel loop's iterations share the job's cores * A parallel loop gave each iteration one core by default, so four replicas in a 64-core job ran on four cores (job 5368). "Cores per iteration" now defaults to diff --git a/docs/user_guide/index.rst b/docs/user_guide/index.rst index 3228461..bc81075 100644 --- a/docs/user_guide/index.rst +++ b/docs/user_guide/index.rst @@ -156,8 +156,11 @@ own checkpoints. An iteration whose evaluator was killed while the job ran on The settings above that say only how the iterations run -- iterations at once, cores, memory and time per iteration, and where the calculations run -- can be -changed before resuming, e.g. to give the iterations more cores; changing any -other setting makes the job start again from the top. +changed before resuming, e.g. to give the iterations more cores. Changing any +other setting stops the resume: nothing is run, and ``job.out`` says why. A job +checkpointed before seamm 2026.10.22 resumes only with these settings as they +were, except that cores per iteration 1, the default then, may be set to +automatic. Index ===== diff --git a/loop_step/loop_parameters.py b/loop_step/loop_parameters.py index c3b9922..4a6083a 100644 --- a/loop_step/loop_parameters.py +++ b/loop_step/loop_parameters.py @@ -238,6 +238,8 @@ class LoopParameters(seamm.Parameters): "cores per iteration": { "resource": True, "default": "automatic", + # Until 2026.10.22: checkpoints written then still resume + "former defaults": ("1",), "kind": "integer", "default_units": "", "enumeration": ("automatic",), diff --git a/requirements.txt b/requirements.txt index 576c1a2..ab2cb40 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ molsystem>=2026.10.17 psutil -seamm>=2026.10.22 +seamm>=2026.10.22.1 seamm-exec>=2026.10.5 diff --git a/tests/test_loop_step.py b/tests/test_loop_step.py index a97b78a..12e7eec 100644 --- a/tests/test_loop_step.py +++ b/tests/test_loop_step.py @@ -55,3 +55,5 @@ def test_resource_parameters_are_marked(): ): assert P[key]._data.get("resource") is True, key assert P["cores per iteration"].default == "automatic" + # Its default until 2026.10.22, for checkpoints written then + assert P["cores per iteration"]._data.get("former defaults") == ("1",)