Dan ss slurm3 - #2080
Dan ss slurm3#2080danv61 wants to merge 12 commits into
Conversation
…ile containing output type
jcschaff
left a comment
There was a problem hiding this comment.
Review
Read through the whole diff and checked the compatibility and client/server consistency questions against the repo. CI is green and it builds. One blocking item, one wrong number shown to the user, and a handful of smaller things.
Blocking: saved Langevin models will fail to load
LangevinSimulationOptions.readVCML ends its token chain with a throw on anything unrecognized. This PR comments out the branch that consumed NumberOfConcurrentJobs, but that token has been written into every saved Langevin simulation since it was introduced, and it shipped:
| Fact | Value |
|---|---|
| Token added | 2025-09-30 |
| Shipped in | 8.1.6.02, tagged 2026-09-07 |
So any model saved by a released 8.1.x client now throws DataAccessException: unexpected identifier NumberOfConcurrentJobs on load. This is the persistence path, written at SolverTaskDescription.getVCML and read back at readVCML, not a debug dump.
The fix is already modelled three branches up: numOfParallelLocalRuns is kept as a read-and-discard branch with the comment "not in use anymore, may be present in some old VCML files". I have put one-click suggestions on both spots.
The XML side is fine. XmlReader uses getChildText, so it silently ignores an element it no longer reads.
The node count shown to the user is off
Showing node count is the stated purpose here, so it is worth getting exact. The server divides the concurrent tasks including the watchdog, while the client divides the simulations only:
| Concurrent sims | Client displays | Slurm requests |
|---|---|---|
| 20 | 1 | 2 |
| 40 | 2 | 3 |
| 50 | 3 | 3 |
They agree only when the sim count is not an exact multiple of the per-node limit. Adding the watchdog task before dividing, the way SlurmProxy does, lines them up.
There is a second divergence behind that. The client reads the concurrency ceiling from a compiled-in constant, while SlurmProxy reads it from PropertyLoader and uses the constant only as a fallback. If the deployed property ever differs from the shipped client constant, the panel displays a concurrency and node count the server will not use. The ServerInfo stub is presumably where that gets fixed once it really consults the server, so this may just be worth a comment for now.
Smaller points
ServerInfowas repurposed rather than extended. The old contents were dead, I checked, so nothing breaks. But the name now sits incbit.vcell.serverwhile describing Langevin slurm tuning; something likeLangevinSlurmSettingswould say what it is. It also staysSerializablewith noserialVersionUID, which will matter if it does start crossing the wire.nodesis computed and then discarded four times inLangevinOptionsPanel, at lines 92, 99, 160 and 769. OnlySimulationSummaryPanelactually displays it.- The new
totalNumberOfJobs < 2throw is unreachable.submitJobonly takes the batch path when that value already exceeds one. Fine as an assertion, it just can never fire. - Unused imports.
LangevinLngvWritergainedPropertyLoaderandServerInfowith no uses. TheSimulationSummaryPanelimport cleanup is correct, those really are gone. - Roughly sixty lines are commented out rather than deleted, across six files, in a PR whose last commit is "Deleted unused functionality." Worth picking one convention.
- Two identical copies of
getRequestManagerandgetServerInfo, about twenty five lines each, in the two panels. - Watchdog tick default halved from 60 to 30 seconds. Worth flagging next to LangevinNoVis01 PR 44, where the alive message was commented out to cut spam. These two pull in opposite directions on message volume, so it may be worth deciding the intended rate across both.
Also worth knowing: the slurm fixture is unaffected by the 31 to 51 bump, since TOTAL_JOBS=8 clamps below both. Nothing currently exercises the new ceiling.
🤖 Generated with Claude Code
|
Fixed the vcml import regression, correct calculation of number of nodes, other smaller points fixed. |
Relaxed max number of concurrent runs to 50 (51 including the watchdog)
Formal slurm attributes class (ServerInfo). Stub, using some predefined constants right now, we'll go to the server eventually and read there all the properties as required.
We need this to show multi-run info to the user in the Simulation Properties Panel: number of concurent runs, number of nodes used (at Les' request)
Number of concurrent runs is not user editable anymore.