Repository navigation
Conversation
New parameters (parallel, iterations at once, cores, memory and time per iteration, snapshot, placement, same-cell writes), shown in the dialog only for a parallel loop. Each iteration runs in an evaluator of its own, resumed into just that iteration; the parent merges them in order, one transaction and checkpoint each. The serial loop is refactored around a set-up per iteration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An iteration whose evaluator stopped before it ended (its checkpoint still 'running') runs again, resuming, up to twice; one that finished its iteration is merged even if it was killed as it exited. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A loop over systems makes the iteration's configuration current before merging it (M2). - Tables are re-exported and loop_entry.db removed after a break or exit too (S6); tables made in the body are variables after the merge (S7); merge warnings go to job.out; each iteration gets the chain of directories to read job-level files from. - tests/test_parallel.py runs a loop serially and in parallel with a fake step plug-in and compares the databases (S8). - Requires molsystem and seamm-exec; the user guide updated (conflicts on structures, appends, separate placement experimental, costs). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The end-to-end parallel test builds and runs its flowcharts with this interpreter and the package's source first on PYTHONPATH (inherited by the iterations), not the installed console scripts; failures show their output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
runs in an evaluator of its own, at the same time as others, on this machine or
bundled into queue jobs, and what it did -- structures, properties, table rows
and cells, files written in the job's directory -- is merged back in iteration
order. The iterations must be independent: each sees the job's database as it
was when the loop started (a job-level file it reads is read as it is at that
moment), and variables set in the loop are not visible after it.
break,continueand skipping work as before; a failed iteration is never merged.Two iterations changing the same table cell or structure are an error unless
"the later iteration wins" is chosen, which keeps the later change and writes a
warning to
job.out.as many as cores and memory allow), cores, memory and time per iteration, what
each iteration gets (the structures it works on, or the whole database -- every
iteration's copy is written as the loop starts, which needs disk space), where
calculations run (inline, or as separate tasks -- experimental) and same-cell
writes. Starting an evaluator takes about five seconds, so short iterations are
better run serially.
not run again and running ones resume where they were; an iteration whose
evaluator was killed is run again, up to twice.
🤖 Generated with Claude Code