Package org.apache.sysds.hops.codegen.opt

## Class PlanSelectionFuseCostBasedV2

- java.lang.Object
- - org.apache.sysds.hops.codegen.opt.PlanSelection
  - - org.apache.sysds.hops.codegen.opt.PlanSelectionFuseCostBasedV2

-     public class PlanSelectionFuseCostBasedV2
      extends PlanSelection

  This cost-based plan selection algorithm chooses fused operators based on the DAG structure and resulting overall costs. This includes holistic decisions on
  - Materialization points per consumer
  - Sparsity exploitation and operator ordering
  - Decisions on overlapping template types
  - Decisions on multi-aggregates with shared reads
  - Constraints (e.g., memory budgets and block sizes)

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.sysds.hops.codegen.opt.PlanSelection

      `PlanSelection.VisitMarkCost`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static double` | `COST_MIN_EPS` |
    `static int` | `COST_MIN_EPS_NUM_POINTS` |
    `static boolean` | `COST_PRUNING` |
    `static boolean` | `PLAN_CACHING` |
    `static boolean` | `STRUCTURAL_PRUNING` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PlanSelectionFuseCostBasedV2()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `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.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### COST_MIN_EPS

          public static final double COST_MIN_EPS

      See Also:
        Constant Field Values

    - #### COST_MIN_EPS_NUM_POINTS

          public static final int COST_MIN_EPS_NUM_POINTS

      See Also:
        Constant Field Values

    - #### COST_PRUNING

          public static boolean COST_PRUNING

    - #### STRUCTURAL_PRUNING

          public static boolean STRUCTURAL_PRUNING

    - #### PLAN_CACHING

          public static boolean PLAN_CACHING

  - ### Constructor Detail

    - #### PlanSelectionFuseCostBasedV2

          public PlanSelectionFuseCostBasedV2()

  - ### Method Detail

    - #### selectPlans

          public void selectPlans​(CPlanMemoTable memo,
                                  ArrayList<Hop> roots)

      Description copied from class: `PlanSelection`
      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. Z \vDash p, where Z is a set of constraints such as memory budgets and block size restrictions per fused operator.
      Specified by:
        `selectPlans` in class `PlanSelection`
      Parameters:
        `memo` - partial fusion plans P
        `roots` - entry points of HOP DAG G