# Package org.apache.sysds.hops.rewrite

package org.apache.sysds.hops.rewrite

Related Packages
Package
Description
org.apache.sysds.hops
Classes
Class
Description
HopDagValidator
This class allows to check hop dags for validity, e.g., parent-child linking.
HopRewriteRule
Base class for all hop rewrites in order to enable generic application of all rules.
HopRewriteUtils
MarkForLineageReuse
ProgramRewriter
This program rewriter applies a variety of rule-based rewrites on all hop dags of the given program in one pass over the entire program.
ProgramRewriteStatus
RewriteAlgebraicSimplificationDynamic
Rule: Algebraic Simplifications.
RewriteAlgebraicSimplificationStatic
Rule: Algebraic Simplifications.
RewriteBlockSizeAndReblock
Rule: BlockSizeAndReblock.
RewriteCommonSubexpressionElimination
Rule: CommonSubexpressionElimination.
RewriteCompressedReblock
Rule: Compressed Re block if config compressed.linalg is enabled, we inject compression directions after read of matrices if number of rows is above 1000 and cols at least 1.
RewriteConstantFolding
Rule: Constant Folding.
RewriteElementwiseMultChainOptimization
Prerequisite: RewriteCommonSubexpressionElimination must run before this rule.
RewriteForLoopVectorization
Rule: Simplify program structure by pulling if or else statement body out (removing the if statement block ifself) in order to allow intra-procedure analysis to propagate exact statistics.
RewriteGPUSpecificOps
RewriteHoistLoopInvariantOperations
Rule: Simplify program structure by hoisting loop-invariant operations out of while, for, or parfor loops.
RewriteIndexingVectorization
Rule: Indexing vectorization.
RewriteInjectOOCTee
This Rewrite rule injects a Tee Operator for specific Out-Of-Core (OOC) patterns where a value or an intermediate result is shared twice.
RewriteInjectSparkLoopCheckpointing
Rule: Insert checkpointing operations for caching purposes.
RewriteInjectSparkPReadCheckpointing
Rule: Inject checkpointing on reading in data in all cases where the operand is used in more than one operation.
RewriteJoinReordering
RewriteMarkLoopVariablesUpdateInPlace
Rule: Mark loop variables that are only read/updated through cp left indexing for update in-place.
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
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
RewriteMatrixMultChainOptimizationTranspose
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
RewriteMatrixMultChainWithTransOptimization
Advanced Matrix Multiplication Chain Optimizer using Dynamic Programming.
RewriteMergeBlockSequence
Rule: Simplify program structure by merging sequences of last-level statement blocks in order to create optimization opportunities.
RewriteNonScalarPrint
RewriteQuantizationFusedCompression
Rule: RewriteFloorCompress.
RewriteRaPushdown
Rule: Simplify program structure by rewriting relational expressions, implemented here: Pushdown of Selections before Join.
RewriteRemoveEmptyBasicBlocks
Rule: Simplify program structure by removing empty last-level blocks, which may originate from the original program or due to a sequence of rewrites (e.g., checkpoint injection and subsequent IPA).
RewriteRemoveEmptyForLoops
Rule: Simplify program structure by removing empty for loops, which may originate from the sequence of other rewrites like dead-code-elimination.
RewriteRemoveForLoopEmptySequence
Rule: Simplify program structure by removing (par)for statements iterating over an empty sequence, i.e., (par)for-loops without a single iteration.
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.
RewriteRemoveReadAfterWrite
Rule: RemoveReadAfterWrite.
RewriteRemoveTransformEncodeMeta
Rule: If transformencode procudes a meta data frame which is never used, flag transformencode to never allocate an serialize this frame.
RewriteRemoveUnnecessaryBranches
Rule: Simplify program structure by pulling if or else statement body out (removing the if statement block ifself) in order to allow intra-procedure analysis to propagate exact statistics.
RewriteRemoveUnnecessaryCasts
Rule: RemoveUnnecessaryCasts.
RewriteSplitDagDataDependentOperators
Rule: Split Hop DAG after specific data-dependent operators.
RewriteSplitDagUnknownCSVRead
Rule: Split Hop DAG after CSV reads with unknown size.
StatementBlockRewriteRule
Base class for all hop rewrites in order to enable generic application of all rules.