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

Packages that use HopRewriteRule
org.apache.sysds.hops.rewrite

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

Subclasses of HopRewriteRule in org.apache.sysds.hops.rewrite
`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` `RewriteGPUSpecificOps`
`class` `RewriteIndexingVectorization` Rule: Indexing vectorization.
`class` `RewriteInjectSparkPReadCheckpointing` Rule: Inject checkpointing on reading in data in all cases where the operand is used in more than one operation.
`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
`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
`void` ProgramRewriter.`removeHopRewrite​(Class<? extends HopRewriteRule> clazz)`

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