Skip to content

runtime/legion: initial support for non-idempotent traces

Rohan Yadav requested to merge non-idempotent-traces into master

This PR is an initial attempt at supporting non-idempotent traces. After many discussions, we have settled on the following approach. Assuming that the application/mapper are requesting traces for actually repeated sequences of tasks + mapping decisions, the runtime will have a simple approach to supporting non-idempotent traces -- just record a template for each of the preconditions a trace replay may have, and select between them when considering to replay a trace. If the application is actually repeating operations, then a saturation point will be hit where all potential pre-conditions have been recorded for a trace, and then the runtime can replay the set of collected templates.

I am in the process of adding dedicated tests for this MR, but wanted to put it up for preliminary review as it was sufficient for me to replay several non-idempotent traces collected by my automatic tracing implementation. The pieces that I've modified here are only the components of the tracing code that I've gotten familiar with, so there might be more places that would need to be updated.

Optimizations like deduplicating InvalidInstAnalysis and AntivalidInstAnalysis during precondition checking can be added in this MR, or as a followup -- I'm open to doing either.

Merge request reports