Prototype/incremental sim
- Review: By file with walkthroughs
- Merge strategy: Merge (no squash)
Description
Implementation of in-memory incremental simulation. By default, this will be turned off except for scheduling.
Details can be found in presentations (that should be downloaded as pptx instead of viewing on web):
- Incremental SIm presentation to AI Group
- Incremental Sim presentation at IWPSS 2025 (slides, paper)
Also see the Incremental Simulation discussion.
Merging these changes avoids maintaining this as a separate version, which is problematic for architecture changes that do not consider this version. Updating this branch for new Aerie versions developed in parallel has been almost as much work as the implementation.
Verification
Tests added: IncrementalSimTests, EdgeCaseTests, GeneratedTests
The EdgeCaseTests and GeneratedTests tests validate against a past version of the develop branch copied as a module (merlin-driver-develop). Other implementations may also be compared; and alternative version of incremental sim is included).
Passes all tests
Documentation
No documentation has been invalidated. Documentation is needed.
Future work
Work needed before merging
- Need a mechanism for turning it on/off while keeping it on for all tests.
- Ensure simulation is not incremental with the sim configuration changes.
- Compare performance to develop branch
Future work potentially beyond this pull request
- IncrementalSimulationFacade needs to be hooked in and debugged--scheduling currently does not use it.
- Safeguard memory usage; offload in-memory simulations.
- Store incremental simulation results; currently, the full simulation results are constructed and stored, a bottleneck.
- Enable UI to update incremental simulation results.
- UI visualization and controls for turning on/off incremental sim and applicability of incremental sim
- Coalesce chains of
SimulationEngines into one for performance/memory improvement. - Tests that validate understanding of how incremental sim works, e.g..
assertDirectiveNotRerun(ActivityDirectiveId) - Tests that verify that performance has not changed significantly
- Performance history/trending across versions would be nice
- Add back the Aerie 2.1(?) version of merlin-driver to compare. It was replaced with Aerie 3.0.1.
- Combine with checkpoint restart (persistent checkpoints) to do incremental sim without blowing up memory.
- Incremental sim for sim configuration changes
- Others found in discussion
🫨
Quality Gate failed
Failed conditions
24.9% Duplication on New Code (required ≤ 3%)
C Reliability Rating on New Code (required ≥ A)
See analysis details on SonarQube Cloud
Catch issues before they fail your Quality Gate with our IDE extension
SonarQube for IDE