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
`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
`PlanSelectionFuseCostBasedV2()`

### Method Summary

All Methods Instance Methods Concrete Methods
`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