class GpuTransitionOverrides extends Rule[SparkPlan]
Rules that run after the row to columnar and columnar to row transitions have been inserted. These rules insert transitions to and from the GPU, and then optimize various transitions.
- Alphabetic
- By Inheritance
- GpuTransitionOverrides
- Rule
- Logging
- SQLConfHelper
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new GpuTransitionOverrides()
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
apply(sparkPlan: SparkPlan): SparkPlan
- Definition Classes
- GpuTransitionOverrides → Rule
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
- def assertIsOnTheGpu(plan: SparkPlan, conf: RapidsConf): Unit
- def assertIsOnTheGpu(exp: Expression, conf: RapidsConf): Unit
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @HotSpotIntrinsicCandidate()
-
def
conf: SQLConf
- Definition Classes
- SQLConfHelper
- def detectAndTagFinalColumnarOutput(plan: SparkPlan): SparkPlan
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
fixupHostColumnarTransitions(plan: SparkPlan): SparkPlan
Fixes up instances of HostColumnarToGpu that are operating on nested types.
Fixes up instances of HostColumnarToGpu that are operating on nested types. There are no batch methods to access nested types in Spark's ColumnVector, and as such HostColumnarToGpu does not support nested types due to the performance problem. If there's nested types involved, use a CPU columnar to row transition followed by a GPU row to columnar transition which is a more optimized code path for these types. This is done as a fixup pass since there are earlier transition optimizations that are looking for HostColumnarToGpu when optimizing transitions.
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
initializeLogIfNecessary(isInterpreter: Boolean, silent: Boolean): Boolean
- Attributes
- protected
- Definition Classes
- Logging
-
def
initializeLogIfNecessary(isInterpreter: Boolean): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isTraceEnabled(): Boolean
- Attributes
- protected
- Definition Classes
- Logging
-
def
log: Logger
- Attributes
- protected
- Definition Classes
- Logging
-
def
logDebug(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logDebug(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logError(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logError(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logInfo(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logInfo(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logName: String
- Attributes
- protected
- Definition Classes
- Logging
-
def
logTrace(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logTrace(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logWarning(msg: ⇒ String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
def
logWarning(msg: ⇒ String): Unit
- Attributes
- protected
- Definition Classes
- Logging
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def optimizeAdaptiveTransitions(plan: SparkPlan, parent: Option[SparkPlan]): SparkPlan
-
def
optimizeCoalesce(plan: SparkPlan): SparkPlan
This optimizes the plan to remove GpuCoalesceBatches nodes that are unnecessary or undesired in some situations.
This optimizes the plan to remove GpuCoalesceBatches nodes that are unnecessary or undesired in some situations.
- Note
This does not examine GpuShuffleCoalesceExec nodes in the plan, as they are always required after GPU columnar exchanges during normal shuffle to place the data after shuffle on the GPU. Those nodes also do not coalesce to the same goal as used by GpuCoalesceBatches, so a GpuShuffleCoalesceExec immediately followed by a GpuCoalesceBatches is not unusual.
- def optimizeGpuPlanTransitions(plan: SparkPlan): SparkPlan
- var rapidsConf: RapidsConf
-
lazy val
ruleId: RuleId
- Attributes
- protected
- Definition Classes
- Rule
-
val
ruleName: String
- Definition Classes
- Rule
-
def
shuffledHashJoinOptimizeShuffle(plan: SparkPlan): SparkPlan
Removes
GpuCoalesceBatches(GpuShuffleCoalesceExec(build side))for the build side for the shuffled hash join.Removes
GpuCoalesceBatches(GpuShuffleCoalesceExec(build side))for the build side for the shuffled hash join. The coalesce logic has been moved to theGpuShuffleCoalesceExecclass, and is handled differently to prevent holding onto the GPU semaphore for stream IO. -
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )