Class OptimizerRuleBased

java.lang.Object
org.apache.sysds.runtime.controlprogram.parfor.opt.Optimizer
org.apache.sysds.runtime.controlprogram.parfor.opt.OptimizerRuleBased
Direct Known Subclasses:
OptimizerConstrained, OptimizerHeuristic

public class OptimizerRuleBased extends Optimizer
Rule-Based ParFor Optimizer (time: O(n)): Applied rule-based rewrites - 1) rewrite set data partitioner (incl. recompile RIX) - 2) rewrite remove unnecessary compare matrix - 3) rewrite result partitioning (incl. recompile LIX) - 4) rewrite set execution strategy - 5) rewrite set operations exec type (incl. recompile) - 6) rewrite use data colocation - 7) rewrite set partition replication factor - 8) rewrite set export replication factor - 9) rewrite use nested parallelism - 10) rewrite set degree of parallelism - 11) rewrite set task partitioner - 12) rewrite set fused data partitioning and execution - 13) rewrite transpose vector operations (for sparse) - 14) rewrite set in-place result indexing - 15) rewrite disable caching (prevent sparse serialization) - 16) rewrite enable runtime piggybacking - 17) rewrite inject spark loop checkpointing - 18) rewrite inject spark repartition (for zipmm) - 19) rewrite set spark eager rdd caching - 20) rewrite set result merge - 21) rewrite set recompile memory budget - 22) rewrite remove recursive parfor - 23) rewrite remove unnecessary parfor TODO fuse also result merge into fused data partitioning and execute (for writing the result directly from execute we need to partition columns/rows according to blocksize -> rewrite (only applicable if numCols/blocksize>numreducers)+custom MR partitioner) TODO take remote memory into account in data/result partitioning rewrites (smaller/larger) TODO memory estimates with shared reads TODO memory estimates of result merge into plan tree TODO blockwise partitioning
  • Field Details

    • PROB_SIZE_THRESHOLD_REMOTE

      public static final double PROB_SIZE_THRESHOLD_REMOTE
      See Also:
    • PROB_SIZE_THRESHOLD_PARTITIONING

      public static final double PROB_SIZE_THRESHOLD_PARTITIONING
      See Also:
    • PROB_SIZE_THRESHOLD_MB

      public static final double PROB_SIZE_THRESHOLD_MB
      See Also:
    • MAX_REPLICATION_FACTOR_PARTITIONING

      public static final int MAX_REPLICATION_FACTOR_PARTITIONING
      See Also:
    • MAX_REPLICATION_FACTOR_EXPORT

      public static final int MAX_REPLICATION_FACTOR_EXPORT
      See Also:
    • ALLOW_REMOTE_NESTED_PARALLELISM

      public static final boolean ALLOW_REMOTE_NESTED_PARALLELISM
      See Also:
    • FUNCTION_UNFOLD_NAMEPREFIX

      public static final String FUNCTION_UNFOLD_NAMEPREFIX
      See Also:
    • PAR_K_FACTOR

      public static final double PAR_K_FACTOR
      See Also:
    • PAR_K_MR_FACTOR

      public static final double PAR_K_MR_FACTOR
      See Also:
  • Constructor Details

    • OptimizerRuleBased

      public OptimizerRuleBased()
  • Method Details