pre-execute: traverse actions and determine set of fields involved
helps sim codes only wrap fields the actions will digest -- especially useful if the wrapping can involve some cpu/gpu transfers.
one solution exists, share with brian ryujin
or copies
so we have this, but we need to read the actions. one solution I implemented is to have one rank read the actions and broadcast the actions to all other ranks. Then they all call the filter fields methods. Alternatively, we could have rank 0 read and create a list of fields, then broadcast the strings to the other ranks.
could we have a dry-run execute mode, that way we can simply rely on execute and info to get the details in and out?
This would require us to
- have all filters tell us about what they used (touching everything)
- support a dry run
We would still have the issue of filters using all fields (like relay). Currently, if you use field filtering in the relay case without explicitly specifying a field list, then it complains that it isn't supported and that you need to use the field list.
we could implement the action scan smarts as a dry run to start, then figure out if we would want to extend.
I think perfect dry run is pretty difficult, especially with expressions and triggers, etc.
This is what we have now:
https://github.com/Alpine-DAV/ascent/blob/e0afe9750ba047f5916805dec5aec95f4e16c1e1/src/ascent/utils/ascent_actions_utils.hpp#L64