## Uses of Class
org.apache.sysds.hops.rewrite.HopRewriteRule

- Packages that use HopRewriteRule
  Package | Description
  --- | ---
  org.apache.sysds.hops.rewrite |

- - ### Uses of HopRewriteRule in org.apache.sysds.hops.rewrite

    Subclasses of HopRewriteRule in org.apache.sysds.hops.rewrite
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `RewriteAlgebraicSimplificationDynamic` | Rule: Algebraic Simplifications.
    `class` | `RewriteAlgebraicSimplificationStatic` | Rule: Algebraic Simplifications.
    `class` | `RewriteBlockSizeAndReblock` | Rule: BlockSizeAndReblock.
    `class` | `RewriteCommonSubexpressionElimination` | Rule: CommonSubexpressionElimination.
    `class` | `RewriteConstantFolding` | Rule: Constant Folding.
    `class` | `RewriteElementwiseMultChainOptimization` | Prerequisite: RewriteCommonSubexpressionElimination must run before this rule.
    `class` | `RewriteFederatedExecution` |
    `class` | `RewriteGPUSpecificOps` |
    `class` | `RewriteIndexingVectorization` | Rule: Indexing vectorization.
    `class` | `RewriteInjectSparkPReadCheckpointing` | Rule: BlockSizeAndReblock.
    `class` | `RewriteMatrixMultChainOptimization` | Rule: Determine the optimal order of execution for a chain of matrix multiplications Solution: Classic Dynamic Programming Approach: Currently, the approach based only on matrix dimensions Goal: To reduce the number of computations in the run-time (map-reduce) layer
    `class` | `RewriteMatrixMultChainOptimizationSparse` | Rule: Determine the optimal order of execution for a chain of matrix multiplications Solution: Classic Dynamic Programming Approach: Currently, the approach based only on matrix dimensions and sparsity estimates using the MNC sketch Goal: To reduce the number of computations in the run-time (map-reduce) layer
    `class` | `RewriteRemoveDanglingParentReferences` | This rewrite is a general-purpose cleanup pass that removes any dangling parent references in one pass through the hop DAG.
    `class` | `RewriteRemovePersistentReadWrite` | This rewrite is a custom rewrite for JMLC in order to replace all persistent reads and writes with transient reads and writes from the symbol table.
    `class` | `RewriteRemoveReadAfterWrite` | Rule: RemoveReadAfterWrite.
    `class` | `RewriteRemoveUnnecessaryCasts` | Rule: RemoveUnnecessaryCasts.
    `class` | `RewriteTransientWriteParentHandling` | Rule: Eliminate for Transient Write DataHops to have no parents Solution: Move parent edges of Transient Write Hop to parent of its child Reason: Transient Write not being a root messes up analysis for Lop's to Instruction translation (according to Amol)

    Methods in org.apache.sysds.hops.rewrite with parameters of type HopRewriteRule
    Modifier and Type | Method | Description
    --- | --- | ---
    `static void` | HopDagValidator.`validateHopDag​(ArrayList<Hop> roots, HopRewriteRule rule)` |
    `static void` | HopDagValidator.`validateHopDag​(Hop root, HopRewriteRule rule)` |

    Method parameters in org.apache.sysds.hops.rewrite with type arguments of type HopRewriteRule
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | ProgramRewriter.`removeHopRewrite​(Class<? extends HopRewriteRule> clazz)` |

    Constructors in org.apache.sysds.hops.rewrite with parameters of type HopRewriteRule
    Constructor | Description
    --- | ---
    `ProgramRewriter​(HopRewriteRule... rewrites)` | Construct a program rewriter for a given rewrite which is passed from outside.

    Constructor parameters in org.apache.sysds.hops.rewrite with type arguments of type HopRewriteRule
    Constructor | Description
    --- | ---
    `ProgramRewriter​(ArrayList<HopRewriteRule> hRewrites, ArrayList<StatementBlockRewriteRule> sbRewrites)` | Construct a program rewriter for the given rewrite sets which are passed from outside.