body: stage motion-record uploads in an owned page-locked buffer

memcpy_htod_async needs page-locked host memory. MovingTables allocates one
pinned FP64 buffer at construction (manager.py action pattern) and rewrites
it only when the records change; every upload is followed by a stream sync
in Simulation._run_moving before the next one, so no copy is in flight when
it is reused. The advance test fixture now binds the real LBMStepper.step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-30 09:16:28 +00:00
1 parent 25cc5cfd68
commit 653fd997a6
2 files changed
+13 -4

No files matched your search

+2
View File
@@ -272,6 +272,8 @@ def advancing_simulation(monkeypatch, **tables):
sim.stepper = SimpleNamespace(
moving=Tables(writes, **tables), blocked=None,
_step=lambda n, advance=False, **k: writes.append(("step", n, advance)))
from CelerisLab.lbm.stepper import LBMStepper
sim.stepper.step = LBMStepper.step.__get__(sim.stepper) # real public entry
sim._moving_tables = sim.stepper.moving
return sim, writes, sim.bodies.objects[0].motion