This is an issue to discuss what mutations,how to perform them on the IIR and what functionality we need to apply them:
<i,j,k> block sizes: We need to add these parameters to the IIR level
stencil function <-> tmp precomputation replacement. We would need to configure the Pass so that it makes a replacement in each of both direction of a single (random?) tmp computation.
Elemental EPU transformation: In a DAG of EPUs, take a single EPU inside a MS into another MS. We need a new pass that does that. And we will need to re-run some passes inside the modified MSs, like the fusion of stages, identification of caches, etc.
we need to add EPUs label as a derived info of the StatementAccessPair level. We need to use the ms splitting and stage with maxSplit option in such a way that does not reorganize the stms but rather extracts EPUs labels. We also need to build the DAG of EPUs
Cache mutation pass: The IIR will contain a subset of caches that is generated by the Caches Pass. We need to either remove one cache from the IIR or re-run the Caches pass and from the
Level Fusion of Stages: Sometimes fusion all the statements possible due to dependencies will create artificially large redundant computations, that could be avoided with a more fine grained split of stages. We are not sure how we can experiment with multiple permutations here, probably it can be left for a second stage.
This is an issue to discuss what mutations,how to perform them on the IIR and what functionality we need to apply them:
More???