Summary
RandomizationBlock<System> and BlendBlock<System> hold their operand systems as shared_ptr<System>. Per-thread path tracking needs each thread to own its mutable evaluation state, so structured-block systems need a deep clone of the block operands — not a shared pointer copy.
Proposal
Implement deep-clone of block operands (shared design point between RandomizationBlock and BlendBlock) so that structured-block systems can be tracked in parallel safely.
Notes
- Currently a shared limitation of both operand-wrapping blocks.
- Prerequisite for parallel tracking of randomized / blended / moving homotopies (and thus for a performant regeneration cascade).
Summary
RandomizationBlock<System>andBlendBlock<System>hold their operand systems asshared_ptr<System>. Per-thread path tracking needs each thread to own its mutable evaluation state, so structured-block systems need a deep clone of the block operands — not a shared pointer copy.Proposal
Implement deep-clone of block operands (shared design point between
RandomizationBlockandBlendBlock) so that structured-block systems can be tracked in parallel safely.Notes