This is an automated email from the ASF dual-hosted git repository.

hongze pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 0bd6584eab [VL] RAS: Remove alternative constraint sets passing to RAS 
planner (#8033)
0bd6584eab is described below

commit 0bd6584eab916e79028c6275ae72e4cb3a0364a8
Author: Hongze Zhang <[email protected]>
AuthorDate: Mon Nov 25 14:04:45 2024 +0800

    [VL] RAS: Remove alternative constraint sets passing to RAS planner (#8033)
---
 .../columnar/enumerated/EnumeratedTransform.scala  | 11 +------
 .../src/main/scala/org/apache/gluten/ras/Ras.scala | 17 +++--------
 .../scala/org/apache/gluten/ras/RasPlanner.scala   | 10 ++-----
 .../scala/org/apache/gluten/ras/dp/DpPlanner.scala | 15 ++--------
 .../gluten/ras/exaustive/ExhaustivePlanner.scala   | 10 ++-----
 .../org/apache/gluten/ras/PropertySuite.scala      | 35 ----------------------
 6 files changed, 13 insertions(+), 85 deletions(-)

diff --git 
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/enumerated/EnumeratedTransform.scala
 
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/enumerated/EnumeratedTransform.scala
index 43c5f10bbd..fad0ae386c 100644
--- 
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/enumerated/EnumeratedTransform.scala
+++ 
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/enumerated/EnumeratedTransform.scala
@@ -21,7 +21,6 @@ import org.apache.gluten.exception.GlutenException
 import 
org.apache.gluten.extension.columnar.ColumnarRuleApplier.ColumnarRuleCall
 import 
org.apache.gluten.extension.columnar.enumerated.planner.GlutenOptimization
 import org.apache.gluten.extension.columnar.enumerated.planner.property.Conv
-import org.apache.gluten.extension.columnar.transition.ConventionReq
 import org.apache.gluten.extension.injector.Injector
 import org.apache.gluten.extension.util.AdaptiveContext
 import org.apache.gluten.logging.LogLevelUtil
@@ -59,17 +58,9 @@ case class EnumeratedTransform(costModel: 
CostModel[SparkPlan], rules: Seq[RasRu
 
   private val reqConvention = Conv.any
 
-  private val altConventions = {
-    val rowBased: Conv = Conv.req(ConventionReq.row)
-    val backendBatchBased: Conv = Conv.req(ConventionReq.backendBatch)
-    Seq(rowBased, backendBatchBased)
-  }
-
   override def apply(plan: SparkPlan): SparkPlan = {
     val constraintSet = PropertySet(List(reqConvention))
-    val altConstraintSets =
-      altConventions.map(altConv => PropertySet(List(altConv)))
-    val planner = optimization.newPlanner(plan, constraintSet, 
altConstraintSets)
+    val planner = optimization.newPlanner(plan, constraintSet)
     val out = planner.plan()
     out
   }
diff --git a/gluten-ras/common/src/main/scala/org/apache/gluten/ras/Ras.scala 
b/gluten-ras/common/src/main/scala/org/apache/gluten/ras/Ras.scala
index f705a2901b..6cf15b0e8d 100644
--- a/gluten-ras/common/src/main/scala/org/apache/gluten/ras/Ras.scala
+++ b/gluten-ras/common/src/main/scala/org/apache/gluten/ras/Ras.scala
@@ -26,10 +26,7 @@ import scala.collection.mutable
  * https://github.com/apache/incubator-gluten/issues/5057.
  */
 trait Optimization[T <: AnyRef] {
-  def newPlanner(
-      plan: T,
-      constraintSet: PropertySet[T],
-      altConstraintSets: Seq[PropertySet[T]]): RasPlanner[T]
+  def newPlanner(plan: T, constraintSet: PropertySet[T]): RasPlanner[T]
   def anyPropSet(): PropertySet[T]
   def withNewConfig(confFunc: RasConfig => RasConfig): Optimization[T]
 }
@@ -47,10 +44,7 @@ object Optimization {
 
   implicit class OptimizationImplicits[T <: AnyRef](opt: Optimization[T]) {
     def newPlanner(plan: T): RasPlanner[T] = {
-      opt.newPlanner(plan, opt.anyPropSet(), List.empty)
-    }
-    def newPlanner(plan: T, constraintSet: PropertySet[T]): RasPlanner[T] = {
-      opt.newPlanner(plan, constraintSet, List.empty)
+      opt.newPlanner(plan, opt.anyPropSet())
     }
   }
 }
@@ -113,11 +107,8 @@ class Ras[T <: AnyRef] private (
     }
   }
 
-  override def newPlanner(
-      plan: T,
-      constraintSet: PropertySet[T],
-      altConstraintSets: Seq[PropertySet[T]]): RasPlanner[T] = {
-    RasPlanner(this, altConstraintSets, constraintSet, plan)
+  override def newPlanner(plan: T, constraintSet: PropertySet[T]): 
RasPlanner[T] = {
+    RasPlanner(this, constraintSet, plan)
   }
 
   override def anyPropSet(): PropertySet[T] = propertySetFactory().any()
diff --git 
a/gluten-ras/common/src/main/scala/org/apache/gluten/ras/RasPlanner.scala 
b/gluten-ras/common/src/main/scala/org/apache/gluten/ras/RasPlanner.scala
index 327b980f38..626d2b1caf 100644
--- a/gluten-ras/common/src/main/scala/org/apache/gluten/ras/RasPlanner.scala
+++ b/gluten-ras/common/src/main/scala/org/apache/gluten/ras/RasPlanner.scala
@@ -32,16 +32,12 @@ trait RasPlanner[T <: AnyRef] {
 }
 
 object RasPlanner {
-  def apply[T <: AnyRef](
-      ras: Ras[T],
-      altConstraintSets: Seq[PropertySet[T]],
-      constraintSet: PropertySet[T],
-      plan: T): RasPlanner[T] = {
+  def apply[T <: AnyRef](ras: Ras[T], constraintSet: PropertySet[T], plan: T): 
RasPlanner[T] = {
     ras.config.plannerType match {
       case PlannerType.Exhaustive =>
-        ExhaustivePlanner(ras, altConstraintSets, constraintSet, plan)
+        ExhaustivePlanner(ras, constraintSet, plan)
       case PlannerType.Dp =>
-        DpPlanner(ras, altConstraintSets, constraintSet, plan)
+        DpPlanner(ras, constraintSet, plan)
     }
   }
 }
diff --git 
a/gluten-ras/common/src/main/scala/org/apache/gluten/ras/dp/DpPlanner.scala 
b/gluten-ras/common/src/main/scala/org/apache/gluten/ras/dp/DpPlanner.scala
index 3f2590dff8..2b601720bf 100644
--- a/gluten-ras/common/src/main/scala/org/apache/gluten/ras/dp/DpPlanner.scala
+++ b/gluten-ras/common/src/main/scala/org/apache/gluten/ras/dp/DpPlanner.scala
@@ -26,11 +26,7 @@ import org.apache.gluten.ras.property.PropertySet
 import org.apache.gluten.ras.rule.{EnforcerRuleSet, RuleApplier, Shape}
 
 // TODO: Branch and bound pruning.
-private class DpPlanner[T <: AnyRef] private (
-    ras: Ras[T],
-    altConstraintSets: Seq[PropertySet[T]],
-    constraintSet: PropertySet[T],
-    plan: T)
+private class DpPlanner[T <: AnyRef] private (ras: Ras[T], constraintSet: 
PropertySet[T], plan: T)
   extends RasPlanner[T] {
   import DpPlanner._
 
@@ -43,7 +39,6 @@ private class DpPlanner[T <: AnyRef] private (
   }
 
   private lazy val best: (Best[T], KnownCostPath[T]) = {
-    altConstraintSets.foreach(propSet => memo.memorize(plan, propSet))
     val groupId = rootGroupId
     val memoTable = memo.table()
     val best = findBest(memoTable, groupId)
@@ -70,12 +65,8 @@ private class DpPlanner[T <: AnyRef] private (
 }
 
 object DpPlanner {
-  def apply[T <: AnyRef](
-      ras: Ras[T],
-      altConstraintSets: Seq[PropertySet[T]],
-      constraintSet: PropertySet[T],
-      plan: T): RasPlanner[T] = {
-    new DpPlanner(ras, altConstraintSets: Seq[PropertySet[T]], constraintSet, 
plan)
+  def apply[T <: AnyRef](ras: Ras[T], constraintSet: PropertySet[T], plan: T): 
RasPlanner[T] = {
+    new DpPlanner(ras, constraintSet, plan)
   }
 
   // Visited flag.
diff --git 
a/gluten-ras/common/src/main/scala/org/apache/gluten/ras/exaustive/ExhaustivePlanner.scala
 
b/gluten-ras/common/src/main/scala/org/apache/gluten/ras/exaustive/ExhaustivePlanner.scala
index c4d3e4881c..f0cb42cf66 100644
--- 
a/gluten-ras/common/src/main/scala/org/apache/gluten/ras/exaustive/ExhaustivePlanner.scala
+++ 
b/gluten-ras/common/src/main/scala/org/apache/gluten/ras/exaustive/ExhaustivePlanner.scala
@@ -27,7 +27,6 @@ import org.apache.gluten.ras.rule.{EnforcerRuleSet, 
RuleApplier, Shape}
 
 private class ExhaustivePlanner[T <: AnyRef] private (
     ras: Ras[T],
-    altConstraintSets: Seq[PropertySet[T]],
     constraintSet: PropertySet[T],
     plan: T)
   extends RasPlanner[T] {
@@ -40,7 +39,6 @@ private class ExhaustivePlanner[T <: AnyRef] private (
   }
 
   private lazy val best: (Best[T], KnownCostPath[T]) = {
-    altConstraintSets.foreach(propSet => memo.memorize(plan, propSet))
     val groupId = rootGroupId
     explore()
     val memoState = memo.newState()
@@ -72,12 +70,8 @@ private class ExhaustivePlanner[T <: AnyRef] private (
 }
 
 object ExhaustivePlanner {
-  def apply[T <: AnyRef](
-      ras: Ras[T],
-      altConstraintSets: Seq[PropertySet[T]],
-      constraintSet: PropertySet[T],
-      plan: T): RasPlanner[T] = {
-    new ExhaustivePlanner(ras, altConstraintSets, constraintSet, plan)
+  def apply[T <: AnyRef](ras: Ras[T], constraintSet: PropertySet[T], plan: T): 
RasPlanner[T] = {
+    new ExhaustivePlanner(ras, constraintSet, plan)
   }
 
   private class ExhaustiveExplorer[T <: AnyRef](
diff --git 
a/gluten-ras/common/src/test/scala/org/apache/gluten/ras/PropertySuite.scala 
b/gluten-ras/common/src/test/scala/org/apache/gluten/ras/PropertySuite.scala
index eb4babe069..06bb806f7d 100644
--- a/gluten-ras/common/src/test/scala/org/apache/gluten/ras/PropertySuite.scala
+++ b/gluten-ras/common/src/test/scala/org/apache/gluten/ras/PropertySuite.scala
@@ -250,41 +250,6 @@ abstract class PropertySuite extends AnyFunSuite {
     assert(out == TypedUnary(TypeA, 8, PassNodeType(5, TypedLeaf(TypeA, 10))))
   }
 
-  test(s"Property convert - (A, B), alternative conventions") {
-    object ConvertEnforcerAndTypeAToTypeB extends RasRule[TestNode] {
-      override def shift(node: TestNode): Iterable[TestNode] = node match {
-        case TypeEnforcer(TypeB, _, TypedBinary(TypeA, 5, left, right)) =>
-          List(TypedBinary(TypeB, 0, left, right))
-        case _ => List.empty
-      }
-      override def shape(): Shape[TestNode] = Shapes.fixedHeight(2)
-    }
-
-    val ras =
-      Ras[TestNode](
-        PlanModelImpl,
-        CostModelImpl,
-        MetadataModelImpl,
-        propertyModel(zeroDepth),
-        ExplainImpl,
-        RasRule.Factory.reuse(List(ConvertEnforcerAndTypeAToTypeB)))
-        .withNewConfig(_ => conf)
-    val plan =
-      TypedBinary(TypeA, 5, TypedUnary(TypeA, 10, TypedLeaf(TypeA, 10)), 
TypedLeaf(TypeA, 10))
-    val planner = ras.newPlanner(
-      plan,
-      PropertySet(Seq(TypeAny)),
-      List(PropertySet(Seq(TypeB)), PropertySet(Seq(TypeC))))
-    val out = planner.plan()
-    assert(
-      out == TypedBinary(
-        TypeB,
-        0,
-        TypeEnforcer(TypeB, 1, TypedUnary(TypeA, 10, TypedLeaf(TypeA, 10))),
-        TypeEnforcer(TypeB, 1, TypedLeaf(TypeA, 10))))
-    assert(planner.newState().memoState().allGroups().size == 9)
-  }
-
   test(s"Property convert - (A, B), Unary only has TypeA") {
     object ReplaceNonUnaryByTypeBRule extends RasRule[TestNode] {
       override def shift(node: TestNode): Iterable[TestNode] = {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to