[us-commits] [ehb54/ultrascan3] cf4ff5: somo/grpy: pre-flight memory guard for oversized m...
emre brookes
noreply at github.com
Thu Aug 6 22:15:24 MDT 2026
Branch: refs/heads/somo-dev
Home: https://github.com/ehb54/ultrascan3
Commit: cf4ff58c731891c97b578dafc5b53166931a183e
https://github.com/ehb54/ultrascan3/commit/cf4ff58c731891c97b578dafc5b53166931a183e
Author: ehb54 <brookes at uthscsa.edu>
Date: 2026-08-06 (Thu, 06 Aug 2026)
Changed paths:
M us_somo/develop/src/us_hydrodyn_grpy.cpp
Log Message:
-----------
somo/grpy: pre-flight memory guard for oversized models
The in-process GRPY solver holds the tiled upper triangle of the 11N x 11N
mobility matrix in RAM (peak ~ (11N)^2/2 * scalar bytes), so a model larger
than physical RAM cannot fit in-core -- e.g. 20k beads needs ~180 GB double /
~90 GB single. Because the solve runs synchronously on the GUI thread, such a
model previously sent the machine into heavy swapping with a frozen interface.
Add a pre-flight guard in calc_grpy_hydro() before the batch starts: estimate
peak memory for the largest selected model from its used-bead count and the
chosen precision, read physical RAM (macOS hw.memsize / Linux sysconf; unknown
-> no guard), and if the estimate exceeds ~70% of RAM:
- interactive: a Cancel / Run-anyway dialog naming the estimate, the machine
RAM, and the remedies (single precision, or a smaller model);
- script mode (gui_script): never block on a dialog -- report the error to the
editor and stderr and fail with a non-zero exit.
Verified: a headless run of a 20,000-bead model on a 32 GB machine reports
"~198.3 GB needed, 32.0 GB available" and exits non-zero pre-flight, instead of
thrashing.
Fixes ehb54/ultrascan-tickets#987
Co-Authored-By: Claude Opus 4.8 <noreply at anthropic.com>
Commit: 9107bb46c07f34ea32ea5afe4a775af018020f3d
https://github.com/ehb54/ultrascan3/commit/9107bb46c07f34ea32ea5afe4a775af018020f3d
Author: ehb54 <brookes at uthscsa.edu>
Date: 2026-08-06 (Thu, 06 Aug 2026)
Changed paths:
M us_somo/develop/src/us_hydrodyn_grpy.cpp
Log Message:
-----------
somo/grpy: memory guard - add Windows physical-RAM detection
Windows is a shipped SOMO target (GRPY_win64) but was falling through to the
"unknown -> no guard" path. Add GlobalMemoryStatusEx (ullTotalPhys) so the
pre-flight memory guard applies there too. Mac/Linux paths unchanged; the
Windows branch is #if'd out off-Windows and needs verifying on the win build.
Refs ehb54/ultrascan-tickets#987
Co-Authored-By: Claude Opus 4.8 <noreply at anthropic.com>
Commit: a23a53982b33f7f85c4b33b422037f8355c0656a
https://github.com/ehb54/ultrascan3/commit/a23a53982b33f7f85c4b33b422037f8355c0656a
Author: ehb54 <brookes at uthscsa.edu>
Date: 2026-08-06 (Thu, 06 Aug 2026)
Changed paths:
M us_somo/develop/src/us_hydrodyn_grpy.cpp
Log Message:
-----------
somo/grpy: memory guard - point oversized models to ZENO
Single precision only ~halves the footprint, so a genuinely huge structure
(e.g. 20k beads ~90 GB single) still will not fit on a modest machine. Add
ZENO to the guard's remedy message as the size-independent alternative, noting
its limitation (it does not compute rotational diffusion).
Refs ehb54/ultrascan-tickets#987
Co-Authored-By: Claude Opus 4.8 <noreply at anthropic.com>
Commit: de70ea2fcf18a94984a1f865fb30dee38f26b8db
https://github.com/ehb54/ultrascan3/commit/de70ea2fcf18a94984a1f865fb30dee38f26b8db
Author: ehb54 <brookes at uthscsa.edu>
Date: 2026-08-06 (Thu, 06 Aug 2026)
Changed paths:
M us_somo/develop/src/us_hydrodyn_grpy.cpp
Log Message:
-----------
somo/grpy: clear grpy_used_beads at run start (fix stale count)
grpy_used_beads was populated with push_back each run but, unlike its sibling
lists (grpy_to_process, grpy_model_numbers), was never cleared at the top of
calc_grpy_hydro -- it only drained via pop_front as models processed. So any
run that aborts before processing (now including the pre-flight memory guard,
but also the stop-flag and filename-length aborts) left a stale count behind,
and the next run's max()/processing saw it. Observed as: a vdW model triggers
the memory guard, then a subsequent smaller SoMo model in the same session is
wrongly reported with the vdW bead count. Clear grpy_used_beads at run start,
consistent with the other lists.
Refs ehb54/ultrascan-tickets#987
Co-Authored-By: Claude Opus 4.8 <noreply at anthropic.com>
Commit: e34ae2102472da996832c77372c968ca5a6d4e72
https://github.com/ehb54/ultrascan3/commit/e34ae2102472da996832c77372c968ca5a6d4e72
Author: ehb54 <brookes at uthscsa.edu>
Date: 2026-08-06 (Thu, 06 Aug 2026)
Changed paths:
M us_somo/somo/doc/manual/somo/somo_hydro.html
M us_somo/somo/doc/manual/somo/somo_misc.html
Log Message:
-----------
somo/doc: update manual for in-process GRPY, precision, memory guard
The GRPY overhaul (#972) and the memory guard (#987) left the SOMO manual
stale/incomplete:
- somo_misc.html documented the removed "Enable Parallel GRPY" checkbox and the
Docker-based parallel path. Rewritten: GRPY now runs in-process, multi-threaded
by default (no checkbox); notes the memory-lean/single-precision solver and the
pre-flight memory guard, and points oversized models to single precision, a
smaller model, or ZENO (size-independent, no rotational diffusion). Also softened
the "GRPY can crash" note to the guarded behavior.
- somo_hydro.html: document the new "GRPY Numerical Precision" (Double/Float)
control; drop the stale "parallel GRPY ... July 2024 release" clause from the
buried-beads paragraph.
Release date in somo_misc.html marked with an HTML comment to confirm at release.
Refs ehb54/ultrascan-tickets#987
Co-Authored-By: Claude Opus 4.8 <noreply at anthropic.com>
Commit: a11dc0be21767815c933c548a3f40de397ea5fe4
https://github.com/ehb54/ultrascan3/commit/a11dc0be21767815c933c548a3f40de397ea5fe4
Author: ehb54 <brookes at uthscsa.edu>
Date: 2026-08-06 (Thu, 06 Aug 2026)
Changed paths:
M us_somo/somo/doc/manual/somo/somo_hydro.html
M us_somo/somo/doc/manual/somo/somo_misc.html
Log Message:
-----------
somo/doc: bump manual last-updated/last-modified dates
Update both date fields (top "Last updated" and bottom "Last modified on")
on somo_misc.html and somo_hydro.html to reflect the GRPY doc edits.
Refs ehb54/ultrascan-tickets#987
Commit: e4cc0467b55c3728bfcb217aa2623ea2ad65da6e
https://github.com/ehb54/ultrascan3/commit/e4cc0467b55c3728bfcb217aa2623ea2ad65da6e
Author: emre brookes <ehb54 at users.noreply.github.com>
Date: 2026-08-06 (Thu, 06 Aug 2026)
Changed paths:
M us_somo/develop/src/us_hydrodyn_grpy.cpp
M us_somo/somo/doc/manual/somo/somo_hydro.html
M us_somo/somo/doc/manual/somo/somo_misc.html
Log Message:
-----------
Merge pull request #497 from ehb54/ehb54-issue-987
somo/grpy: pre-flight memory guard for oversized models
Compare: https://github.com/ehb54/ultrascan3/compare/2144ac859551...e4cc0467b55c
To unsubscribe from these emails, change your notification settings at https://github.com/ehb54/ultrascan3/settings/notifications
More information about the us-commits
mailing list