## Uses of Class
org.apache.sysds.hops.Hop

- Packages that use Hop
  Package | Description
  --- | ---
  org.apache.sysds.hops |
  org.apache.sysds.hops.codegen |
  org.apache.sysds.hops.codegen.cplan |
  org.apache.sysds.hops.codegen.opt |
  org.apache.sysds.hops.codegen.template |
  org.apache.sysds.hops.ipa |
  org.apache.sysds.hops.recompile |
  org.apache.sysds.hops.rewrite |
  org.apache.sysds.lops |
  org.apache.sysds.parser |
  org.apache.sysds.runtime.compress.workload |
  org.apache.sysds.runtime.controlprogram |
  org.apache.sysds.runtime.controlprogram.parfor.opt |
  org.apache.sysds.runtime.lineage |
  org.apache.sysds.runtime.matrix.data |
  org.apache.sysds.runtime.privacy.propagation |
  org.apache.sysds.runtime.util |
  org.apache.sysds.utils |

- - ### Uses of Hop in org.apache.sysds.hops

    Subclasses of Hop in org.apache.sysds.hops
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AggBinaryOp`
    `class` | `AggUnaryOp`
    `class` | `BinaryOp`
    `class` | `DataGenOp` A DataGenOp can be rand (or matrix constructor), sequence, and sample - these operators have different parameters and use a map of parameter type to hop position.
    `class` | `DataOp` A DataOp can be either a persistent read/write or transient read/write - writes will always have at least one input, but all types can have parameters (e.g., for csv literals of delimiter, header, etc).
    `class` | `DnnOp`
    `class` | `FunctionOp` This FunctionOp represents the call to a DML-bodied or external function.
    `class` | `IndexingOp`
    `class` | `LeftIndexingOp`
    `class` | `LiteralOp`
    `class` | `MultiThreadedHop` Optional hop interface, to be implemented by multi-threaded hops.
    `class` | `NaryOp` The NaryOp Hop allows for a variable number of operands.
    `class` | `ParameterizedBuiltinOp` Defines the HOP for calling an internal function (with custom parameters) from a DML script.
    `class` | `QuaternaryOp` Note: this hop should be called AggQuaternaryOp in consistency with AggUnaryOp and AggBinaryOp; however, since there does not exist a real QuaternaryOp yet - we can leave it as is for now.
    `class` | `ReorgOp` Reorg (cell) operation: aij Properties: Symbol: ', rdiag, rshape, rsort 1 Operand (except sort and reshape take additional arguments) Semantic: change indices (in mapper or reducer) NOTE MB: reshape integrated here because (1) ParameterizedBuiltinOp requires name-value pairs for params and (2) most importantly semantic of reshape is exactly a reorg op.
    `class` | `TernaryOp` Primary use cases for now, are `quantile (<n-1-matrix>, <n-1-matrix>, <literal>): quantile (A, w, 0.5)` `quantile (<n-1-matrix>, <n-1-matrix>, <scalar>): quantile (A, w, s)` `interquantile (<n-1-matrix>, <n-1-matrix>, <scalar>): interquantile (A, w, s)` Keep in mind, that we also have binaries for it w/o weights.
    `class` | `UnaryOp`

    Methods in org.apache.sysds.hops that return Hop
    Modifier and Type | Method and Description
    --- | ---
    `Hop` | DataGenOp.`getConstantValue()`
    `Hop` | Hop.`getInput(int ix)`
    `Hop` | DataGenOp.`getInput(String key)`
    `Hop` | DataGenOp.`getParam(String key)`
    `Hop` | ParameterizedBuiltinOp.`getParameterHop(String name)`
    `Hop` | ParameterizedBuiltinOp.`getTargetHop()`
    `Hop` | Hop.`resetVisitStatus()`

    Methods in org.apache.sysds.hops that return types with arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `ArrayList<Hop>` | Hop.`getInput()`
    `ArrayList<Hop>` | FunctionOp.`getOutputs()`
    `ArrayList<Hop>` | Hop.`getParent()`

    Methods in org.apache.sysds.hops with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `void` | Hop.`addInput(Hop h)`
    `static boolean` | OptimizerUtils.`allowsToFilterEmptyBlockOutputs(Hop hop)`
    `static void` | HopsException.`check(boolean condition, Hop hop, String message, Object... objects)` If the condition fails, print the Op and its Id, along with the message formatted with objects.
    `boolean` | AggBinaryOp.`compare(Hop that)`
    `boolean` | DataGenOp.`compare(Hop that)`
    `abstract boolean` | Hop.`compare(Hop that)`
    `boolean` | IndexingOp.`compare(Hop that)`
    `boolean` | NaryOp.`compare(Hop that)`
    `boolean` | DnnOp.`compare(Hop that)`
    `boolean` | QuaternaryOp.`compare(Hop that)`
    `boolean` | AggUnaryOp.`compare(Hop that)`
    `boolean` | TernaryOp.`compare(Hop that)`
    `boolean` | BinaryOp.`compare(Hop that)`
    `boolean` | LiteralOp.`compare(Hop that)`
    `boolean` | UnaryOp.`compare(Hop that)`
    `boolean` | ReorgOp.`compare(Hop that)`
    `boolean` | ParameterizedBuiltinOp.`compare(Hop that)`
    `boolean` | LeftIndexingOp.`compare(Hop that)`
    `boolean` | FunctionOp.`compare(Hop that)`
    `boolean` | DataOp.`compare(Hop that)`
    `double` | Hop.`computeBoundsInformation(Hop input)`
    `static double` | Hop.`computeBoundsInformation(Hop input, LocalVariableMap vars)`
    `static double` | Hop.`computeBoundsInformation(Hop input, LocalVariableMap vars, HashMap<Long,Double> memo)`
    `static long` | Hop.`computeSizeInformation(Hop input)`
    `long` | Hop.`computeSizeInformation(Hop input, LocalVariableMap vars)`
    `long` | Hop.`computeSizeInformation(Hop input, LocalVariableMap vars, HashMap<Long,Long> memo)`
    `static Lop` | BinaryOp.`constructSPAppendLop(Hop left, Hop right, Types.DataType dt, Types.ValueType vt, boolean cbind, Hop current)`
    `static Lop` | Hop.`createOffsetLop(Hop hop, boolean repCols)`
    `static long` | OptimizerUtils.`estimatePartitionedSizeExactSparsity(Hop hop)` Estimates the footprint (in bytes) for a partitioned in-memory representation of a matrix with the hops dimensions and number of non-zeros nnz.
    `DataCharacteristics` | MemoTable.`getAllInputStats(Hop input)`
    `static double` | OptimizerUtils.`getSparsity(Hop hop)`
    `static double` | OptimizerUtils.`getTotalMemEstimate(Hop[] in, Hop out)`
    `static double` | OptimizerUtils.`getTotalMemEstimate(Hop[] in, Hop out)`
    `static double` | OptimizerUtils.`getTotalMemEstimate(Hop[] in, Hop out, boolean denseOut)`
    `static double` | OptimizerUtils.`getTotalMemEstimate(Hop[] in, Hop out, boolean denseOut)`
    `boolean` | MemoTable.`hasInputStatistics(Hop h)`
    `void` | MemoTable.`init(Hop hop, RecompileStatus status)`
    `void` | Hop.`refreshColsParameterInformation(Hop input, LocalVariableMap vars)`
    `void` | Hop.`refreshColsParameterInformation(Hop input, LocalVariableMap vars, HashMap<Long,Long> memo)`
    `void` | Hop.`refreshRowsParameterInformation(Hop input, LocalVariableMap vars)`
    `void` | Hop.`refreshRowsParameterInformation(Hop input, LocalVariableMap vars, HashMap<Long,Long> memo)`
    `static boolean` | BinaryOp.`requiresReplication(Hop left, Hop right)`
    `static void` | Hop.`resetRecompilationFlag(Hop hops, Types.ExecType et, Recompiler.ResetType reset)`
    `static double` | OptimizerUtils.`rEvalSimpleDoubleExpression(Hop root, HashMap<Long,Double> valMemo)`
    `static double` | OptimizerUtils.`rEvalSimpleDoubleExpression(Hop root, HashMap<Long,Double> valMemo, LocalVariableMap vars)`
    `static long` | OptimizerUtils.`rEvalSimpleLongExpression(Hop root, HashMap<Long,Long> valMemo)` Function to evaluate simple size expressions over literals and now/ncol.
    `static long` | OptimizerUtils.`rEvalSimpleLongExpression(Hop root, HashMap<Long,Long> valMemo, LocalVariableMap vars)`
    `void` | DataGenOp.`setInput(String key, Hop hop, boolean linkParent)`

    Method parameters in org.apache.sysds.hops with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `void` | Hop.`addAllInputs(ArrayList<Hop> list)`
    `Lop` | DnnOp.`constructDnnLops(Types.ExecType et, ArrayList<Hop> inputs)`
    `void` | MemoTable.`extract(ArrayList<Hop> hops, RecompileStatus status)`
    `DataCharacteristics[]` | MemoTable.`getAllInputStats(ArrayList<Hop> inputs)`
    `void` | MemoTable.`init(ArrayList<Hop> hops, RecompileStatus status)`
    `static void` | Hop.`resetRecompilationFlag(ArrayList<Hop> hops, Types.ExecType et, Recompiler.ResetType reset)`
    `static void` | Hop.`resetVisitStatus(ArrayList<Hop> hops)`
    `static void` | Hop.`resetVisitStatus(ArrayList<Hop> hops, boolean force)`

    Constructors in org.apache.sysds.hops with parameters of type Hop
    Constructor and Description
    `AggBinaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp2 innOp, Types.AggOp outOp, Hop in1, Hop in2)`
    `AggUnaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.AggOp o, Types.Direction idx, Hop inp)`
    `BinaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp2 o, Hop inp1, Hop inp2)`
    `DataOp(String l, Types.DataType dt, Types.ValueType vt, Hop in, Types.OpOpData dop, String fname)`
    `DataOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOpData dop, Hop in, HashMap<String,Hop> inputParameters)` WRITE operation for Matrix This constructor supports expression in parameters
    `IndexingOp(String l, Types.DataType dt, Types.ValueType vt, Hop inpMatrix, Hop inpRowL, Hop inpRowU, Hop inpColL, Hop inpColU, boolean passedRowsLEU, boolean passedColsLEU)`
    `LeftIndexingOp(String l, Types.DataType dt, Types.ValueType vt, Hop inpMatrixLeft, Hop inpMatrixRight, Hop inpRowL, Hop inpRowU, Hop inpColL, Hop inpColU, boolean passedRowsLEU, boolean passedColsLEU)`
    `NaryOp(String name, Types.DataType dataType, Types.ValueType valueType, Types.OpOpN op, Hop... inputs)` NaryOp constructor.
    `QuaternaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp4 o, Hop inX, Hop inU, Hop inV)`
    `QuaternaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp4 o, Hop inX, Hop inU, Hop inV, boolean flag1, boolean flag2)` Constructor for wsigmoid.
    `QuaternaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp4 o, Hop inW, Hop inU, Hop inV, boolean umult, Types.OpOp1 uop, Types.OpOp2 sop)`
    `QuaternaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp4 o, Hop inX, Hop inU, Hop inV, Hop inW, boolean post)` Constructor for wsloss.
    `QuaternaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp4 o, Hop inX, Hop inU, Hop inV, Hop inW, int baseType, boolean flag1, boolean flag2)`
    `ReorgOp(String l, Types.DataType dt, Types.ValueType vt, Types.ReOrgOp o, Hop inp)`
    `TernaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp3 o, Hop inp1, Hop inp2, Hop inp3)`
    `TernaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp3 o, Hop inp1, Hop inp2, Hop inp3, Hop inp4, Hop inp5, Hop inp6)`
    `UnaryOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOp1 o, Hop inp)`

    Constructor parameters in org.apache.sysds.hops with type arguments of type Hop
    Constructor and Description
    `DataGenOp(Types.OpOpDG mthd, DataIdentifier id, HashMap<String,Hop> inputParameters)` Creates a new Rand HOP.
    `DataOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOpData dop, HashMap<String,Hop> params)` READ operation for Matrix / SQL operation for tensor This constructor supports expressions in parameters
    `DataOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOpData dop, Hop in, HashMap<String,Hop> inputParameters)` WRITE operation for Matrix This constructor supports expression in parameters
    `DnnOp(String l, Types.DataType dt, Types.ValueType vt, Types.OpOpDnn o, ArrayList<Hop> inp)` Create a hop from the builtin expression
    `FunctionOp(FunctionOp.FunctionType type, String fnamespace, String fname, String[] inputNames, List<Hop> inputs, String[] outputNames, ArrayList<Hop> outputHops)`
    `FunctionOp(FunctionOp.FunctionType type, String fnamespace, String fname, String[] inputNames, List<Hop> inputs, String[] outputNames, ArrayList<Hop> outputHops)`
    `FunctionOp(FunctionOp.FunctionType type, String fnamespace, String fname, String[] inputNames, List<Hop> inputs, String[] outputNames, boolean singleOut)`
    `FunctionOp(FunctionOp.FunctionType type, String fnamespace, String fname, String[] inputNames, List<Hop> inputs, String[] outputNames, boolean singleOut, boolean pseudo)`
    `ParameterizedBuiltinOp(String l, Types.DataType dt, Types.ValueType vt, Types.ParamBuiltinOp op, LinkedHashMap<String,Hop> inputParameters)` Creates a new HOP for a function call
    `ReorgOp(String l, Types.DataType dt, Types.ValueType vt, Types.ReOrgOp o, ArrayList<Hop> inp)`

  - ### Uses of Hop in org.apache.sysds.hops.codegen

    Subclasses of Hop in org.apache.sysds.hops.codegen
    Modifier and Type | Class and Description
    --- | ---
    `class` | `SpoofFusedOp`

    Methods in org.apache.sysds.hops.codegen that return Hop
    Modifier and Type | Method and Description
    --- | ---
    `static Hop` | SpoofCompiler.`optimize(Hop root, boolean recompile)` Main interface of sum-product optimizer, predicate dag.

    Methods in org.apache.sysds.hops.codegen that return types with arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static ArrayList<Hop>` | SpoofCompiler.`generateCodeFromHopDAGs(ArrayList<Hop> roots)`
    `static ArrayList<Hop>` | SpoofCompiler.`optimize(ArrayList<Hop> roots, boolean recompile)` Main interface of sum-product optimizer, statement block dag.

    Methods in org.apache.sysds.hops.codegen with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | SpoofFusedOp.`compare(Hop that)`
    `static ArrayList<Instruction>` | SpoofCompiler.`generateCodeFromHopDAGsToInst(Hop root)`
    `static Hop` | SpoofCompiler.`optimize(Hop root, boolean recompile)` Main interface of sum-product optimizer, predicate dag.

    Method parameters in org.apache.sysds.hops.codegen with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static ArrayList<Hop>` | SpoofCompiler.`generateCodeFromHopDAGs(ArrayList<Hop> roots)`
    `static ArrayList<Instruction>` | SpoofCompiler.`generateCodeFromHopDAGsToInst(StatementBlock sb, ArrayList<Hop> roots)`
    `static ArrayList<Hop>` | SpoofCompiler.`optimize(ArrayList<Hop> roots, boolean recompile)` Main interface of sum-product optimizer, statement block dag.

  - ### Uses of Hop in org.apache.sysds.hops.codegen.cplan

    Methods in org.apache.sysds.hops.codegen.cplan that return types with arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `ArrayList<Hop>` | CNodeMultiAgg.`getRootNodes()`

    Method parameters in org.apache.sysds.hops.codegen.cplan with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `void` | CNodeMultiAgg.`setRootNodes(ArrayList<Hop> roots)`

    Constructors in org.apache.sysds.hops.codegen.cplan with parameters of type Hop
    Constructor and Description
    `CNodeData(Hop hop)`
    `CNodeData(Hop hop, long rows, long cols, Types.DataType dt)`

  - ### Uses of Hop in org.apache.sysds.hops.codegen.opt

    Method parameters in org.apache.sysds.hops.codegen.opt with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static Collection<PlanPartition>` | PlanAnalyzer.`analyzePlanPartitions(CPlanMemoTable memo, ArrayList<Hop> roots, boolean ext)`
    `abstract void` | PlanSelection.`selectPlans(CPlanMemoTable memo, ArrayList<Hop> roots)` Given a HOP DAG G, and a set of partial fusions plans P, find the set of optimal, non-conflicting fusion plans P' that applied to G minimizes costs C with P' = \argmin_{p \subseteq P} C(G, p) s.t.
    `void` | PlanSelectionFuseCostBasedV2.`selectPlans(CPlanMemoTable memo, ArrayList<Hop> roots)`
    `void` | PlanSelectionFuseNoRedundancy.`selectPlans(CPlanMemoTable memo, ArrayList<Hop> roots)`
    `void` | PlanSelectionFuseAll.`selectPlans(CPlanMemoTable memo, ArrayList<Hop> roots)`
    `void` | PlanSelectionFuseCostBased.`selectPlans(CPlanMemoTable memo, ArrayList<Hop> roots)`

  - ### Uses of Hop in org.apache.sysds.hops.codegen.template

    Methods in org.apache.sysds.hops.codegen.template that return types with arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `HashMap<Long,Hop>` | CPlanMemoTable.`getHopRefs()`

    Methods in org.apache.sysds.hops.codegen.template with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `void` | CPlanMemoTable.`add(Hop hop, CPlanMemoTable.MemoTableEntry me)`
    `void` | CPlanMemoTable.`add(Hop hop, TemplateBase.TemplateType type)`
    `void` | CPlanMemoTable.`add(Hop hop, TemplateBase.TemplateType type, long in1)`
    `void` | CPlanMemoTable.`add(Hop hop, TemplateBase.TemplateType type, long in1, long in2)`
    `void` | CPlanMemoTable.`add(Hop hop, TemplateBase.TemplateType type, long in1, long in2, long in3)`
    `void` | CPlanMemoTable.`addAll(Hop hop, CPlanMemoTable.MemoTableEntrySet P)`
    `void` | CPlanMemoTable.`addHop(Hop hop)`
    `TemplateBase.CloseType` | TemplateMultiAgg.`close(Hop hop)`
    `abstract TemplateBase.CloseType` | TemplateBase.`close(Hop hop)` Indicates if the template must be closed at the current hop; either due to final operations (e.g., aggregate) or unsupported operations.
    `TemplateBase.CloseType` | TemplateRow.`close(Hop hop)`
    `TemplateBase.CloseType` | TemplateOuterProduct.`close(Hop hop)`
    `TemplateBase.CloseType` | TemplateCell.`close(Hop hop)`
    `int` | TemplateRow.HopInputComparator.`compare(Hop h1, Hop h2)`
    `int` | TemplateCell.HopInputComparator.`compare(Hop h1, Hop h2)`
    `Pair<Hop[],CNodeTpl>` | TemplateMultiAgg.`constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals)`
    `abstract Pair<Hop[],CNodeTpl>` | TemplateBase.`constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals)` Constructs a single cplan rooted at the given hop, according to the plan given in the memo structure for this particular hop and its recursive inputs.
    `Pair<Hop[],CNodeTpl>` | TemplateRow.`constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals)`
    `Pair<Hop[],CNodeTpl>` | TemplateOuterProduct.`constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals)`
    `Pair<Hop[],CNodeTpl>` | TemplateCell.`constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals)`
    `boolean` | CPlanMemoTable.`containsHop(Hop hop)`
    `static boolean` | TemplateUtils.`containsOuterProduct(Hop hop)`
    `static boolean` | TemplateUtils.`containsOuterProduct(Hop hop, Hop probe)`
    `static CNodeData` | TemplateUtils.`createCNodeData(Hop hop, boolean compileLiterals)`
    `static LinkedList<Long>` | TemplateUtils.`findRemovableConditionalPatternInOuterProduct(Hop hop)`
    `boolean` | TemplateMultiAgg.`fuse(Hop hop, Hop input)`
    `abstract boolean` | TemplateBase.`fuse(Hop hop, Hop input)` Indicates if the template can be expanded to the given hop starting from an open template at the input.
    `boolean` | TemplateRow.`fuse(Hop hop, Hop input)`
    `boolean` | TemplateOuterProduct.`fuse(Hop hop, Hop input)`
    `boolean` | TemplateCell.`fuse(Hop hop, Hop input)`
    `static Types.AggOp` | TemplateUtils.`getAggOp(Hop hop)`
    `static SpoofCellwise.CellType` | TemplateUtils.`getCellType(Hop hop)`
    `static SpoofOuterProduct.OutProdType` | TemplateUtils.`getOuterProductType(Hop X, Hop U, Hop V, Hop out)`
    `static long` | TemplateUtils.`getRowTemplateMatrixInput(Hop current, CPlanMemoTable memo)`
    `static SpoofRowwise.RowType` | TemplateUtils.`getRowType(Hop output, Hop... inputs)`
    `static SpoofRowwise.RowType` | TemplateUtils.`getRowType(Hop output, Hop... inputs)`
    `static boolean` | TemplateUtils.`hasCommonRowTemplateMatrixInput(Hop input1, Hop input2, CPlanMemoTable memo)`
    `static boolean` | TemplateUtils.`hasMatrixInput(Hop hop)`
    `static boolean` | TemplateUtils.`hasTransposeParentUnderOuterProduct(Hop hop)`
    `static boolean` | TemplateUtils.`isBinaryMatrixColVector(Hop hop)`
    `static boolean` | TemplateUtils.`isBinaryMatrixRowVector(Hop hop)`
    `static boolean` | TemplateUtils.`isColVector(Hop hop)`
    `static boolean` | TemplateUtils.`isMatrix(Hop hop)`
    `static boolean` | TemplateUtils.`isOperationSupported(Hop h)`
    `static boolean` | TemplateUtils.`isValidSingleOperation(Hop hop)`
    `static boolean` | TemplateUtils.`isVector(Hop hop)`
    `static boolean` | TemplateUtils.`isVectorOrScalar(Hop hop)`
    `boolean` | TemplateMultiAgg.`merge(Hop hop, Hop input)`
    `abstract boolean` | TemplateBase.`merge(Hop hop, Hop input)` Indicates if the template at the current hop can be expanded by merging another template available for one of its other inputs which is not yet covered by the template of the current hop.
    `boolean` | TemplateRow.`merge(Hop hop, Hop input)`
    `boolean` | TemplateOuterProduct.`merge(Hop hop, Hop input)`
    `boolean` | TemplateCell.`merge(Hop hop, Hop input)`
    `boolean` | TemplateMultiAgg.`open(Hop hop)`
    `abstract boolean` | TemplateBase.`open(Hop hop)` Indicates if this template can be opened at the given hop, where hop represents bottom (first operation on the inputs) of the fused operator.
    `boolean` | TemplateRow.`open(Hop hop)`
    `boolean` | TemplateOuterProduct.`open(Hop hop)`
    `boolean` | TemplateCell.`open(Hop hop)`
    `void` | CPlanMemoTable.`remove(Hop hop, Set<CPlanMemoTable.MemoTableEntry> excludeList)`
    `void` | CPlanMemoTable.`remove(Hop hop, TemplateBase.TemplateType type)`
    `static long` | TemplateUtils.`skipConditionalInOuterProduct(Hop hop, HashMap<Long,CNode> tmp, HashSet<Hop> inHops)`
    `static CNode` | TemplateUtils.`skipTranspose(CNode cdataOrig, Hop hop, HashMap<Long,CNode> tmp, boolean compileLiterals)`
    `static CNode` | TemplateUtils.`wrapLookupIfNecessary(CNode node, Hop hop)`
    `static CNode` | TemplateUtils.`wrapLookupIfNecessary(CNode node, Hop hop, boolean rowTpl)`

    Method parameters in org.apache.sysds.hops.codegen.template with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `void` | CPlanMemoTable.`pruneSuboptimal(ArrayList<Hop> roots)`
    `static long` | TemplateUtils.`skipConditionalInOuterProduct(Hop hop, HashMap<Long,CNode> tmp, HashSet<Hop> inHops)`

    Constructors in org.apache.sysds.hops.codegen.template with parameters of type Hop
    Constructor and Description
    `HopInputComparator(Hop driver)`
    `HopInputComparator(Hop X, Hop B1)`
    `MemoTableEntrySet(Hop hop, Hop c, TemplateBase tpl)`

  - ### Uses of Hop in org.apache.sysds.hops.ipa

    Methods in org.apache.sysds.hops.ipa with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static void` | IPAPassRemoveUnnecessaryCheckpoints.`rRemoveCheckpointReadWrite(Hop hop)`

  - ### Uses of Hop in org.apache.sysds.hops.recompile

    Methods in org.apache.sysds.hops.recompile that return Hop
    Modifier and Type | Method and Description
    --- | ---
    `static Hop` | Recompiler.`deepCopyHopsDag(Hop hops)` Deep copy of hops dags for parallel recompilation.

    Methods in org.apache.sysds.hops.recompile that return types with arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static ArrayList<Hop>` | Recompiler.`deepCopyHopsDag(List<Hop> hops)` Deep copy of hops dags for parallel recompilation.

    Methods in org.apache.sysds.hops.recompile with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static Hop` | Recompiler.`deepCopyHopsDag(Hop hops)` Deep copy of hops dags for parallel recompilation.
    `static void` | Recompiler.`extractDAGOutputStatistics(Hop hop, LocalVariableMap vars, boolean overwrite)`
    `static void` | Recompiler.`rClearLops(Hop hop)` Clearing lops for a given hops includes to (1) remove the reference to constructed lops and (2) clear the exec type (for consistency).
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDag(Hop hop, LocalVariableMap vars, RecompileStatus status, boolean inplace, boolean replaceLit, long tid)`
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDag2Forced(Hop hop, long tid, Types.ExecType et)`
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDagInstructions(Hop hop)`
    `static boolean` | Recompiler.`requiresRecompilation(Hop hop)`
    `static int` | Recompiler.`rGetMaxParallelism(Hop hop)`
    `static void` | Recompiler.`rReplaceLiterals(Hop hop, ExecutionContext ec, boolean scalarsOnly)` public interface to package local literal replacement
    `static void` | Recompiler.`rReplaceLiterals(Hop hop, LocalVariableMap vars, boolean scalarsOnly)`
    `static void` | Recompiler.`rSetExecType(Hop hop, Types.ExecType etype)`
    `static void` | Recompiler.`rSetMaxParallelism(Hop hop, int k)`
    `static void` | Recompiler.`rUpdateFunctionNames(Hop hop, long pid)`
    `static void` | Recompiler.`rUpdateStatistics(Hop hop, LocalVariableMap vars)`

    Method parameters in org.apache.sysds.hops.recompile with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static ArrayList<Hop>` | Recompiler.`deepCopyHopsDag(List<Hop> hops)` Deep copy of hops dags for parallel recompilation.
    `static void` | Recompiler.`extractDAGOutputStatistics(ArrayList<Hop> hops, LocalVariableMap vars)`
    `static void` | Recompiler.`extractDAGOutputStatistics(ArrayList<Hop> hops, LocalVariableMap vars, boolean overwrite)`
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDag(StatementBlock sb, ArrayList<Hop> hops, ExecutionContext ec, RecompileStatus status, boolean inplace, boolean replaceLit, long tid)`
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDag(StatementBlock sb, ArrayList<Hop> hops, LocalVariableMap vars, RecompileStatus status, boolean inplace, boolean replaceLit, long tid)`
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDag2Forced(StatementBlock sb, ArrayList<Hop> hops, long tid, Types.ExecType et)`
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDagInstructions(StatementBlock sb, ArrayList<Hop> hops)`
    `static boolean` | Recompiler.`requiresRecompilation(ArrayList<Hop> hops)`
    `static int` | Recompiler.`rGetMaxParallelism(List<Hop> hops)`
    `static void` | Recompiler.`rSetMaxParallelism(List<Hop> hops, int k)`
    `static void` | Recompiler.`updateFunctionNames(ArrayList<Hop> hops, long pid)`

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

    Methods in org.apache.sysds.hops.rewrite that return Hop
    Modifier and Type | Method and Description
    --- | ---
    `static Hop` | HopRewriteUtils.`createComputeNnz(Hop input)`
    `static Hop` | HopRewriteUtils.`createDataGenOp(Hop rowInput, boolean tRowInput, Hop colInput, boolean tColInput, double value)`
    `static Hop` | HopRewriteUtils.`createDataGenOp(Hop input, double value)`
    `static Hop` | HopRewriteUtils.`createDataGenOp(Hop rowInput, Hop colInput, double value)`
    `static Hop` | HopRewriteUtils.`createDataGenOpByVal(ArrayList<LiteralOp> values, long rows, long cols)`
    `static Hop` | HopRewriteUtils.`createDataGenOpByVal(Hop rowInput, Hop colInput, Hop dimsInput, Types.DataType dt, Types.ValueType vt, double value)`
    `static Hop` | HopRewriteUtils.`createPartialTsmmCbind(Hop X, Hop deltaX, Hop tsmmIn1)`
    `static Hop` | HopRewriteUtils.`createScalarIndexing(Hop input, long rix, long cix)`
    `static Hop` | HopRewriteUtils.`createValueHop(Hop hop, boolean row)`
    `static Hop` | HopRewriteUtils.`getBasic1NSequenceMax(Hop hop)`
    `static Hop` | HopRewriteUtils.`getDataGenOpConstantValue(Hop hop)`
    `static Hop` | HopRewriteUtils.`getLargestInput(Hop hop)`
    `static Hop` | HopRewriteUtils.`getOtherInput(Hop hop, Hop input)`
    `static Hop` | HopRewriteUtils.`rewireAllParentChildReferences(Hop hold, Hop hnew)` Replace an old Hop with a replacement Hop.
    `Hop` | RewriteFederatedExecution.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteAlgebraicSimplificationDynamic.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteAlgebraicSimplificationStatic.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteTransientWriteParentHandling.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteCommonSubexpressionElimination.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteConstantFolding.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteIndexingVectorization.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteInjectSparkPReadCheckpointing.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteGPUSpecificOps.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteBlockSizeAndReblock.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteRemoveReadAfterWrite.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `abstract Hop` | HopRewriteRule.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)` Handle a predicate hop DAG with exactly one root.
    `Hop` | RewriteElementwiseMultChainOptimization.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteRemoveUnnecessaryCasts.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteRemoveDanglingParentReferences.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | ProgramRewriter.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteRemovePersistentReadWrite.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteMatrixMultChainOptimization.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`

    Methods in org.apache.sysds.hops.rewrite that return types with arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `ArrayList<Hop>` | ProgramRewriter.`rewriteHopDAG(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteFederatedExecution.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteAlgebraicSimplificationDynamic.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteAlgebraicSimplificationStatic.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteTransientWriteParentHandling.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteCommonSubexpressionElimination.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteConstantFolding.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteIndexingVectorization.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteInjectSparkPReadCheckpointing.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteGPUSpecificOps.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteBlockSizeAndReblock.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteRemoveReadAfterWrite.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `abstract ArrayList<Hop>` | HopRewriteRule.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)` Handle a generic (last-level) hop DAG with multiple roots.
    `ArrayList<Hop>` | RewriteElementwiseMultChainOptimization.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteRemoveUnnecessaryCasts.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteRemoveDanglingParentReferences.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteRemovePersistentReadWrite.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteMatrixMultChainOptimization.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`

    Methods in org.apache.sysds.hops.rewrite with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static void` | HopRewriteUtils.`addChildReference(Hop parent, Hop child)`
    `static void` | HopRewriteUtils.`addChildReference(Hop parent, Hop child, int pos)`
    `static boolean` | HopRewriteUtils.`alwaysRequiresReblock(Hop hop)`
    `static boolean` | HopRewriteUtils.`checkInputDataTypes(Hop hop, Types.DataType... dt)`
    `static void` | HopRewriteUtils.`cleanupUnreferenced(Hop... inputs)`
    `static int` | HopRewriteUtils.`compareSize(Hop hop1, Hop hop2)` Compares the size of outputs from hop1 and hop2, in terms of number of matrix cells.
    `static boolean` | HopRewriteUtils.`containsInput(Hop current, Hop probe)`
    `static void` | HopRewriteUtils.`copyLineNumbers(Hop src, Hop dest)`
    `static void` | HopRewriteUtils.`copyLineNumbers(MatrixBlock mb, Hop tread)`
    `static void` | HopRewriteUtils.`copyLineNumbers(MatrixObject mo, Hop tread)`
    `static AggUnaryOp` | HopRewriteUtils.`createAggUnaryOp(Hop input, String op)`
    `static AggUnaryOp` | HopRewriteUtils.`createAggUnaryOp(Hop input, Types.AggOp op, Types.Direction dir)`
    `static BinaryOp` | HopRewriteUtils.`createBinary(Hop input1, Hop input2, String op)`
    `static BinaryOp` | HopRewriteUtils.`createBinary(Hop input1, Hop input2, Types.OpOp2 op)`
    `static BinaryOp` | HopRewriteUtils.`createBinary(Hop input1, Hop input2, Types.OpOp2 op, boolean outer)`
    `static BinaryOp` | HopRewriteUtils.`createBinaryMinus(Hop input)`
    `static Hop` | HopRewriteUtils.`createComputeNnz(Hop input)`
    `static Hop` | HopRewriteUtils.`createDataGenOp(Hop rowInput, boolean tRowInput, Hop colInput, boolean tColInput, double value)`
    `static Hop` | HopRewriteUtils.`createDataGenOp(Hop input, double value)`
    `static Hop` | HopRewriteUtils.`createDataGenOp(Hop rowInput, Hop colInput, double value)`
    `static Hop` | HopRewriteUtils.`createDataGenOpByVal(Hop rowInput, Hop colInput, Hop dimsInput, Types.DataType dt, Types.ValueType vt, double value)`
    `static DataOp` | HopRewriteUtils.`createDataOp(String name, Hop in, Types.OpOpData type)`
    `static IndexingOp` | HopRewriteUtils.`createIndexingOp(Hop input, Hop batchsize)`
    `static IndexingOp` | HopRewriteUtils.`createIndexingOp(Hop input, Hop rl, Hop ru, Hop cl, Hop cu)`
    `static IndexingOp` | HopRewriteUtils.`createIndexingOp(Hop input, long rix, long cix)`
    `static IndexingOp` | HopRewriteUtils.`createIndexingOp(Hop input, long rl, long ru, long cl, long cu)`
    `static LeftIndexingOp` | HopRewriteUtils.`createLeftIndexingOp(Hop lhs, Hop rhs, Hop rl, Hop ru, Hop cl, Hop cu)`
    `static AggBinaryOp` | HopRewriteUtils.`createMatrixMultiply(Hop left, Hop right)`
    `static NaryOp` | HopRewriteUtils.`createNary(Types.OpOpN op, Hop... inputs)`
    `static ParameterizedBuiltinOp` | HopRewriteUtils.`createParameterizedBuiltinOp(Hop input, LinkedHashMap<String,Hop> args, Types.ParamBuiltinOp op)`
    `static Hop` | HopRewriteUtils.`createPartialTsmmCbind(Hop X, Hop deltaX, Hop tsmmIn1)`
    `static ReorgOp` | HopRewriteUtils.`createReorg(Hop input, String rop)`
    `static ReorgOp` | HopRewriteUtils.`createReorg(Hop input, Types.ReOrgOp rop)`
    `static Hop` | HopRewriteUtils.`createScalarIndexing(Hop input, long rix, long cix)`
    `static DataGenOp` | HopRewriteUtils.`createSeqDataGenOp(Hop input)`
    `static DataGenOp` | HopRewriteUtils.`createSeqDataGenOp(Hop input, boolean asc)`
    `static AggUnaryOp` | HopRewriteUtils.`createSum(Hop input)`
    `static TernaryOp` | HopRewriteUtils.`createTernary(Hop in1, Hop in2, Hop in3, Hop in4, Hop in5, Types.OpOp3 op)`
    `static TernaryOp` | HopRewriteUtils.`createTernary(Hop mleft, Hop smid, Hop mright, String opcode)`
    `static TernaryOp` | HopRewriteUtils.`createTernary(Hop mleft, Hop smid, Hop mright, Types.OpOp3 op)`
    `static DataOp` | HopRewriteUtils.`createTransientRead(String name, Hop h)`
    `static DataOp` | HopRewriteUtils.`createTransientWrite(String name, Hop in)`
    `static ReorgOp` | HopRewriteUtils.`createTranspose(Hop input)`
    `static AggBinaryOp` | HopRewriteUtils.`createTsmm(Hop input, boolean left)`
    `static UnaryOp` | HopRewriteUtils.`createUnary(Hop input, String type)`
    `static UnaryOp` | HopRewriteUtils.`createUnary(Hop input, Types.OpOp1 type)`
    `static Hop` | HopRewriteUtils.`createValueHop(Hop hop, boolean row)`
    `static Hop` | HopRewriteUtils.`getBasic1NSequenceMax(Hop hop)`
    `static int` | HopRewriteUtils.`getChildReferencePos(Hop parent, Hop child)`
    `static Hop` | HopRewriteUtils.`getDataGenOpConstantValue(Hop hop)`
    `static long` | HopRewriteUtils.`getIntValueSafe(Hop op)`
    `static Hop` | HopRewriteUtils.`getLargestInput(Hop hop)`
    `static long` | HopRewriteUtils.`getMaxInputDim(Hop hop, boolean dim1)`
    `static long` | HopRewriteUtils.`getMaxNcolInput(Hop hop)`
    `static long` | HopRewriteUtils.`getMaxNrowInput(Hop hop)`
    `static Hop` | HopRewriteUtils.`getOtherInput(Hop hop, Hop input)`
    `static long` | HopRewriteUtils.`getSumValidInputDims(Hop hop, boolean dim1)`
    `static long` | HopRewriteUtils.`getSumValidInputNnz(Hop hop)`
    `static boolean` | HopRewriteUtils.`hasListInputs(Hop hop)`
    `static boolean` | HopRewriteUtils.`hasOnlyUnaryBinaryParents(Hop hop, boolean disallowLhs)`
    `static boolean` | HopRewriteUtils.`hasOnlyWriteParents(Hop hop, boolean inclTransient, boolean inclPersistent)`
    `static boolean` | HopRewriteUtils.`hasValidInputDims(Hop hop, boolean dim1)`
    `static boolean` | HopRewriteUtils.`hasValidInputNnz(Hop hop)`
    `static boolean` | HopRewriteUtils.`isAggUnaryOp(Hop hop, Types.AggOp... op)`
    `static boolean` | HopRewriteUtils.`isAggUnaryOp(Hop hop, Types.AggOp op, Types.Direction dir)`
    `static boolean` | HopRewriteUtils.`isBasic1NSequence(Hop hop)`
    `static boolean` | HopRewriteUtils.`isBasic1NSequence(Hop seq, Hop input, boolean row)`
    `static boolean` | HopRewriteUtils.`isBasicN1Sequence(Hop hop)`
    `static boolean` | HopRewriteUtils.`isBinary(Hop hop, Types.OpOp2... types)`
    `static boolean` | HopRewriteUtils.`isBinary(Hop hop, Types.OpOp2 type)`
    `static boolean` | HopRewriteUtils.`isBinary(Hop hop, Types.OpOp2 type, int maxParents)`
    `static boolean` | HopRewriteUtils.`isBinaryMatrixColVectorOperation(Hop hop)`
    `static boolean` | HopRewriteUtils.`isBinaryMatrixMatrixOperation(Hop hop)`
    `static boolean` | HopRewriteUtils.`isBinaryMatrixMatrixOperationWithSharedInput(Hop hop)`
    `static boolean` | HopRewriteUtils.`isBinaryMatrixRowVectorOperation(Hop hop)`
    `static boolean` | HopRewriteUtils.`isBinaryMatrixScalar(Hop hop, Types.OpOp2 type, double val)`
    `static boolean` | HopRewriteUtils.`isBinaryMatrixScalarOperation(Hop hop)`
    `static boolean` | HopRewriteUtils.`isBinaryPPred(Hop hop)`
    `static boolean` | HopRewriteUtils.`isBinarySparseSafe(Hop hop)`
    `static boolean` | HopRewriteUtils.`isColumnRightIndexing(Hop hop)`
    `static boolean` | HopRewriteUtils.`isConsecutiveIndex(Hop index, Hop index2)`
    `static boolean` | HopRewriteUtils.`isData(Hop hop, Types.OpOpData... types)`
    `static boolean` | HopRewriteUtils.`isData(Hop hop, Types.OpOpData type)`
    `static boolean` | HopRewriteUtils.`isDataGenOp(Hop hop, Types.OpOpDG... ops)`
    `static boolean` | HopRewriteUtils.`isDataGenOpWithConstantValue(Hop hop)`
    `static boolean` | HopRewriteUtils.`isDataGenOpWithConstantValue(Hop hop, double value)`
    `static boolean` | HopRewriteUtils.`isDataGenOpWithLiteralInputs(Hop hop, Types.OpOpDG... ops)`
    `static boolean` | HopRewriteUtils.`isDataGenOpWithNonDeterminism(Hop hop)`
    `static boolean` | HopRewriteUtils.`isDense(Hop hop)`
    `static boolean` | HopRewriteUtils.`isDimsKnown(Hop hop)`
    `static boolean` | HopRewriteUtils.`isDnn(Hop hop, Types.OpOpDnn... types)`
    `static boolean` | HopRewriteUtils.`isDnn(Hop hop, Types.OpOpDnn type)`
    `static boolean` | HopRewriteUtils.`isEmpty(Hop hop)`
    `static boolean` | HopRewriteUtils.`isEqualSize(Hop hop1, Hop... hops)`
    `static boolean` | HopRewriteUtils.`isEqualSize(Hop hop1, Hop... hops)`
    `static boolean` | HopRewriteUtils.`isEqualSize(Hop hop1, Hop hop2)`
    `static boolean` | HopRewriteUtils.`isEqualValue(Hop hop1, Hop hop2)`
    `static boolean` | HopRewriteUtils.`isLiteralOfValue(Hop hop, boolean val)`
    `static boolean` | HopRewriteUtils.`isLiteralOfValue(Hop hop, Double... val)`
    `static boolean` | HopRewriteUtils.`isLiteralOfValue(Hop hop, double val)`
    `static boolean` | HopRewriteUtils.`isLiteralOfValue(Hop hop, String val)`
    `static boolean` | HopRewriteUtils.`isMatrixMultiply(Hop hop)`
    `static boolean` | HopRewriteUtils.`isNary(Hop hop, Types.OpOpN... types)`
    `static boolean` | HopRewriteUtils.`isNary(Hop hop, Types.OpOpN type)`
    `static boolean` | HopRewriteUtils.`isNonZeroIndicator(Hop pred, Hop hop)`
    `static boolean` | HopRewriteUtils.`isNotMatrixVectorBinaryOperation(Hop hop)`
    `static boolean` | HopRewriteUtils.`isOuterBinary(Hop hop)`
    `static boolean` | HopRewriteUtils.`isOuterProductLikeMM(Hop hop)`
    `static boolean` | HopRewriteUtils.`isParameterBuiltinOp(Hop hop, Types.ParamBuiltinOp type)`
    `static boolean` | HopRewriteUtils.`isRemoveEmpty(Hop hop)`
    `static boolean` | HopRewriteUtils.`isRemoveEmpty(Hop hop, boolean rows)`
    `static boolean` | HopRewriteUtils.`isReorg(Hop hop, Types.ReOrgOp... types)`
    `static boolean` | HopRewriteUtils.`isReorg(Hop hop, Types.ReOrgOp type)`
    `static boolean` | HopRewriteUtils.`isScalarMatrixBinaryMult(Hop hop)`
    `static boolean` | HopRewriteUtils.`isSingleBlock(Hop hop)`
    `static boolean` | HopRewriteUtils.`isSingleBlock(Hop hop, boolean cols)` Checks our BLOCKSIZE CONSTRAINT, w/ awareness of forced single node execution mode.
    `static boolean` | HopRewriteUtils.`isSizeExpressionOf(Hop size, Hop input, boolean row)`
    `static boolean` | HopRewriteUtils.`isSparse(Hop hop)`
    `static boolean` | HopRewriteUtils.`isSparse(Hop hop, double threshold)`
    `static boolean` | HopRewriteUtils.`isSum(Hop hop)`
    `static boolean` | HopRewriteUtils.`isSumSq(Hop hop)`
    `static boolean` | HopRewriteUtils.`isTernary(Hop hop, Types.OpOp3... types)`
    `static boolean` | HopRewriteUtils.`isTernary(Hop hop, Types.OpOp3 type)`
    `static boolean` | HopRewriteUtils.`isTransposeOfItself(Hop hop1, Hop hop2)`
    `static boolean` | HopRewriteUtils.`isTransposeOperation(Hop hop)`
    `static boolean` | HopRewriteUtils.`isTransposeOperation(Hop hop, int maxParents)`
    `static boolean` | HopRewriteUtils.`isTsmm(Hop input)`
    `static boolean` | HopRewriteUtils.`isTsmmInput(Hop input)`
    `static boolean` | HopRewriteUtils.`isUnary(Hop hop, Types.OpOp1... types)`
    `static boolean` | HopRewriteUtils.`isUnary(Hop hop, Types.OpOp1 type)`
    `static boolean` | HopRewriteUtils.`isUnary(Hop hop, Types.OpOp1 type, int maxParents)`
    `static boolean` | HopRewriteUtils.`isUnnecessaryRightIndexing(Hop hop)`
    `static boolean` | HopRewriteUtils.`knownParamservFunctions(Hop hop)`
    `static boolean` | HopRewriteUtils.`rContainsRead(Hop root, String var, boolean includeMetaOp)`
    `static void` | HopRewriteUtils.`refreshOutputParameters(Hop hnew, Hop hold)`
    `static void` | HopRewriteUtils.`removeAllChildReferences(Hop parent)`
    `static void` | HopRewriteUtils.`removeChildReference(Hop parent, Hop child)`
    `static void` | HopRewriteUtils.`removeChildReferenceByPos(Hop parent, Hop child, int posChild)`
    `static void` | HopRewriteUtils.`replaceChildReference(Hop parent, Hop inOld, Hop inNew)`
    `static void` | HopRewriteUtils.`replaceChildReference(Hop parent, Hop inOld, Hop inNew, int pos)`
    `static void` | HopRewriteUtils.`replaceChildReference(Hop parent, Hop inOld, Hop inNew, int pos, boolean refresh)`
    `static Hop` | HopRewriteUtils.`rewireAllParentChildReferences(Hop hold, Hop hnew)` Replace an old Hop with a replacement Hop.
    `Hop` | RewriteFederatedExecution.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteAlgebraicSimplificationDynamic.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteAlgebraicSimplificationStatic.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteTransientWriteParentHandling.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteCommonSubexpressionElimination.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteConstantFolding.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteIndexingVectorization.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteInjectSparkPReadCheckpointing.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteGPUSpecificOps.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteBlockSizeAndReblock.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteRemoveReadAfterWrite.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `abstract Hop` | HopRewriteRule.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)` Handle a predicate hop DAG with exactly one root.
    `Hop` | RewriteElementwiseMultChainOptimization.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteRemoveUnnecessaryCasts.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteRemoveDanglingParentReferences.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | ProgramRewriter.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteRemovePersistentReadWrite.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `Hop` | RewriteMatrixMultChainOptimization.`rewriteHopDAG(Hop root, ProgramRewriteStatus state)`
    `static boolean` | HopRewriteUtils.`rHasSimpleReadChain(Hop root, String var)`
    `static boolean` | RewriteCompressedReblock.`satisfiesCompressionCondition(Hop hop)`
    `static boolean` | RewriteCompressedReblock.`satisfiesSizeConstraintsForCompression(Hop hop)`
    `static void` | HopRewriteUtils.`setOutputParameters(Hop hop, long rlen, long clen, int blen, long nnz)`
    `static void` | HopRewriteUtils.`setOutputParametersForScalar(Hop hop)`
    `static void` | HopRewriteUtils.`updateHopCharacteristics(Hop hop, int blen, Hop src)`
    `static void` | HopRewriteUtils.`updateHopCharacteristics(Hop hop, int blen, MemoTable memo, Hop src)`
    `static void` | HopDagValidator.`validateHopDag(Hop root, HopRewriteRule rule)`

    Method parameters in org.apache.sysds.hops.rewrite with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static boolean` | HopRewriteUtils.`checkAvgRowsGteCols(List<Hop> list)`
    `static boolean` | HopRewriteUtils.`checkConsistentRows(List<Hop> list1, List<Hop> list2)`
    `static boolean` | HopRewriteUtils.`checkConsistentRows(List<Hop> list1, List<Hop> list2)`
    `static boolean` | HopRewriteUtils.`containsOp(ArrayList<Hop> candidates, Class<? extends Hop> clazz)`
    `static boolean` | HopRewriteUtils.`containsOp(ArrayList<Hop> candidates, Class<? extends Hop> clazz)`
    `static boolean` | HopRewriteUtils.`containsSecondOrderBuiltin(ArrayList<Hop> roots)`
    `static boolean` | HopRewriteUtils.`containsTransposeOperation(ArrayList<Hop> hops)`
    `static ParameterizedBuiltinOp` | HopRewriteUtils.`createParameterizedBuiltinOp(Hop input, LinkedHashMap<String,Hop> args, Types.ParamBuiltinOp op)`
    `static ReorgOp` | HopRewriteUtils.`createReorg(ArrayList<Hop> inputs, Types.ReOrgOp rop)`
    `ArrayList<Hop>` | ProgramRewriter.`rewriteHopDAG(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteFederatedExecution.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteAlgebraicSimplificationDynamic.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteAlgebraicSimplificationStatic.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteTransientWriteParentHandling.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteCommonSubexpressionElimination.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteConstantFolding.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteIndexingVectorization.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteInjectSparkPReadCheckpointing.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteGPUSpecificOps.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteBlockSizeAndReblock.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteRemoveReadAfterWrite.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `abstract ArrayList<Hop>` | HopRewriteRule.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)` Handle a generic (last-level) hop DAG with multiple roots.
    `ArrayList<Hop>` | RewriteElementwiseMultChainOptimization.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteRemoveUnnecessaryCasts.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteRemoveDanglingParentReferences.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteRemovePersistentReadWrite.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `ArrayList<Hop>` | RewriteMatrixMultChainOptimization.`rewriteHopDAGs(ArrayList<Hop> roots, ProgramRewriteStatus state)`
    `static void` | HopDagValidator.`validateHopDag(ArrayList<Hop> roots, HopRewriteRule rule)`

  - ### Uses of Hop in org.apache.sysds.lops

    Constructor parameters in org.apache.sysds.lops with type arguments of type Hop
    Constructor and Description
    `FunctionCallCP(ArrayList<Lop> inputs, String fnamespace, String fname, String[] inputNames, String[] outputNames, ArrayList<Hop> outputHops, boolean opt, Types.ExecType et)`

  - ### Uses of Hop in org.apache.sysds.parser

    Methods in org.apache.sysds.parser that return Hop
    Modifier and Type | Method and Description
    --- | ---
    `Hop` | ForStatementBlock.`getFromHops()`
    `Hop` | ForStatementBlock.`getIncrementHops()`
    `Hop` | IfStatementBlock.`getPredicateHops()`
    `Hop` | WhileStatementBlock.`getPredicateHops()`
    `Hop` | ForStatementBlock.`getToHops()`

    Methods in org.apache.sysds.parser that return types with arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `ArrayList<Hop>` | StatementBlock.`getHops()`

    Methods in org.apache.sysds.parser with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `void` | ForStatementBlock.`setFromHops(Hop hops)`
    `void` | DMLTranslator.`setIdentifierParams(Hop h, Identifier id)`
    `void` | ForStatementBlock.`setIncrementHops(Hop hops)`
    `void` | IfStatementBlock.`setPredicateHops(Hop hops)`
    `void` | WhileStatementBlock.`setPredicateHops(Hop hops)`
    `void` | ForStatementBlock.`setToHops(Hop hops)`

    Method parameters in org.apache.sysds.parser with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `void` | StatementBlock.`setHops(ArrayList<Hop> hops)`

  - ### Uses of Hop in org.apache.sysds.runtime.compress.workload

    Methods in org.apache.sysds.runtime.compress.workload that return Hop
    Modifier and Type | Method and Description
    --- | ---
    `Hop` | Op.`getHop()`
    `Hop` | WTreeRoot.`getRoot()` Get the Root hop instruction, that is producing a result used in the rest of the tree.

    Methods in org.apache.sysds.runtime.compress.workload that return types with arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `List<Hop>` | WTreeRoot.`getDecompressList()`

    Constructors in org.apache.sysds.runtime.compress.workload with parameters of type Hop
    Constructor and Description
    `Op(Hop op)`
    `OpDecompressing(Hop op)`
    `OpMetadata(Hop op)`
    `OpNormal(Hop op, boolean compressedOut)`
    `OpOverlappingDecompress(Hop op)`
    `OpSided(Hop op, boolean cLeft, boolean cRight, boolean tLeft, boolean tRight)`
    `WTreeRoot(Hop root, List<Hop> decompressList)`

    Constructor parameters in org.apache.sysds.runtime.compress.workload with type arguments of type Hop
    Constructor and Description
    `WTreeRoot(Hop root, List<Hop> decompressList)`

  - ### Uses of Hop in org.apache.sysds.runtime.controlprogram

    Methods in org.apache.sysds.runtime.controlprogram with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `ScalarObject` | ProgramBlock.`executePredicate(ArrayList<Instruction> inst, Hop hops, boolean requiresRecompile, Types.ValueType retType, ExecutionContext ec)` Executes given predicate instructions (incl recompilation if required)

  - ### Uses of Hop in org.apache.sysds.runtime.controlprogram.parfor.opt

    Methods in org.apache.sysds.runtime.controlprogram.parfor.opt that return Hop
    Modifier and Type | Method and Description
    --- | ---
    `Hop` | OptTreePlanMappingAbstract.`getMappedHop(long id)`

    Methods in org.apache.sysds.runtime.controlprogram.parfor.opt with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `long` | OptTreePlanMappingAbstract.`putHopMapping(Hop hops, OptNode n)`
    `static ArrayList<OptNode>` | OptTreeConverter.`rCreateAbstractOptNodes(Hop hop, LocalVariableMap vars, Set<String> memo)`

    Method parameters in org.apache.sysds.runtime.controlprogram.parfor.opt with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static ArrayList<OptNode>` | OptTreeConverter.`createAbstractOptNodes(ArrayList<Hop> hops, LocalVariableMap vars, Set<String> memo)`

  - ### Uses of Hop in org.apache.sysds.runtime.lineage

    Methods in org.apache.sysds.runtime.lineage with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static void` | LineageItemUtils.`constructLineageFromHops(Hop[] roots, String claName, Hop[] inputs, HashMap<Long,Hop> spoofmap)`
    `static void` | LineageItemUtils.`constructLineageFromHops(Hop[] roots, String claName, Hop[] inputs, HashMap<Long,Hop> spoofmap)`
    `static void` | LineageItemUtils.`rConstructLineageFromHops(Hop root, Hop[] inputs, Map<Long,LineageItem> operands, HashMap<Long,Hop> spoofmap)`
    `static void` | LineageItemUtils.`rConstructLineageFromHops(Hop root, Hop[] inputs, Map<Long,LineageItem> operands, HashMap<Long,Hop> spoofmap)`

    Method parameters in org.apache.sysds.runtime.lineage with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static void` | LineageItemUtils.`constructLineageFromHops(Hop[] roots, String claName, Hop[] inputs, HashMap<Long,Hop> spoofmap)`
    `static void` | LineageItemUtils.`rConstructLineageFromHops(Hop root, Hop[] inputs, Map<Long,LineageItem> operands, HashMap<Long,Hop> spoofmap)`

  - ### Uses of Hop in org.apache.sysds.runtime.matrix.data

    Methods in org.apache.sysds.runtime.matrix.data with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `void` | DnnParameters.`setIfUnknown(Hop N, Hop C, Hop H, Hop W, Hop K, Hop R, Hop S, Hop stride_h, Hop stride_w, Hop pad_h, Hop pad_w, int numThreads)`

  - ### Uses of Hop in org.apache.sysds.runtime.privacy.propagation

    Methods in org.apache.sysds.runtime.privacy.propagation with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static void` | PrivacyPropagator.`hopPropagation(Hop hop)` Propagate privacy constraints from input hops to given hop.

  - ### Uses of Hop in org.apache.sysds.runtime.util

    Methods in org.apache.sysds.runtime.util that return types with arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static ArrayList<Hop>` | AutoDiff.`constructHopsNR(LineageItem item, Map<Long,Hop> operands, Hop mo, ArrayList<String> names)`

    Methods in org.apache.sysds.runtime.util with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static ArrayList<Hop>` | AutoDiff.`constructHopsNR(LineageItem item, Map<Long,Hop> operands, Hop mo, ArrayList<String> names)`

    Method parameters in org.apache.sysds.runtime.util with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static ArrayList<Hop>` | AutoDiff.`constructHopsNR(LineageItem item, Map<Long,Hop> operands, Hop mo, ArrayList<String> names)`

  - ### Uses of Hop in org.apache.sysds.utils

    Methods in org.apache.sysds.utils with parameters of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static String` | Explain.`explain(Hop hop)`
    `static String` | Explain.`explain(Hop hop, int level)`

    Method parameters in org.apache.sysds.utils with type arguments of type Hop
    Modifier and Type | Method and Description
    --- | ---
    `static String` | Explain.`explainHops(ArrayList<Hop> hops)`
    `static String` | Explain.`explainHops(ArrayList<Hop> hops, int level)`

Copyright © 2021 The Apache Software Foundation. All rights reserved.