abstract class RapidsMeta[INPUT <: BASE, BASE, OUTPUT <: BASE] extends AnyRef
Holds metadata about a stage in the physical plan that is separate from the plan itself. This is helpful in deciding when to replace part of the plan with a GPU enabled version.
- INPUT
the exact type of the class we are wrapping.
- BASE
the generic base class for this type of stage, i.e. SparkPlan, Expression, etc.
- OUTPUT
when converting to a GPU enabled version of the plan, the generic base type for all GPU enabled versions.
- Alphabetic
- By Inheritance
- RapidsMeta
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
RapidsMeta(wrapped: INPUT, conf: RapidsConf, parent: Option[RapidsMeta[_, _, _]], rule: DataFromReplacementRule)
- wrapped
what we are wrapping
- conf
the config
- parent
the parent of this node, if there is one.
- rule
holds information related to the config for this object, typically this is the rule used to wrap the stage.
Abstract Value Members
-
abstract
val
childDataWriteCmds: Seq[DataWritingCommandMeta[_]]
The wrapped data writing commands that should be examined
-
abstract
val
childExprs: Seq[BaseExprMeta[_]]
The wrapped expressions that should be examined
-
abstract
val
childParts: Seq[PartMeta[_]]
The wrapped partitioning that should be examined
-
abstract
val
childPlans: Seq[SparkPlanMeta[_]]
The wrapped plans that should be examined
-
abstract
val
childScans: Seq[ScanMeta[_]]
The wrapped scans that should be examined
-
abstract
def
convertToGpu(): OUTPUT
Convert what this wraps to a GPU enabled version.
-
abstract
def
tagSelfForGpu(): Unit
Do any extra checks and tag yourself if you are compatible or not.
Do any extra checks and tag yourself if you are compatible or not. Be aware that this may already have been marked as incompatible for a number of reasons.
All of your children should have already been tagged so if there are situations where you may need to disqualify your children for various reasons you may do it here too.
Concrete 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
-
final
def
addConvertedDataType(expression: Expression, typeMeta: DataTypeMeta): Unit
Call this method to record information about type conversions via DataTypeMeta.
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
canDataWriteCmdsBeReplaced: Boolean
Returns true iff all of the data writing commands can be replaced.
-
def
canExprTreeBeReplaced: Boolean
Returns true iff all of the expressions and their children could be replaced.
-
def
canPartsBeReplaced: Boolean
Returns true iff all of the partitioning can be replaced.
-
def
canScansBeReplaced: Boolean
Returns true iff all of the scans can be replaced.
-
final
def
canThisBeReplaced: Boolean
Returns true iff this could be replaced.
-
var
cannotBeReplacedReasons: Option[Set[String]]
- Attributes
- protected
-
var
cannotRunOnGpuBecauseOfCost: Boolean
- Attributes
- protected
-
var
cannotRunOnGpuBecauseOfSparkPlan: Boolean
- Attributes
- protected
- def checkTimeZoneId(sessionZoneId: ZoneId): Unit
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @HotSpotIntrinsicCandidate()
- val conf: RapidsConf
- def confKey: String
-
def
convertToCpu(): BASE
Keep this on the CPU, but possibly convert its children under it to run on the GPU if enabled.
Keep this on the CPU, but possibly convert its children under it to run on the GPU if enabled. By default this just returns what is wrapped by this. For some types of operators/stages, like SparkPlan, each part of the query can be converted independent of other parts. As such in a subclass this should be overridden to do the correct thing.
- final def costPreventsRunningOnGpu(): Unit
- final val disabledMsg: Option[String]
-
final
def
entirePlanExcludedReasons: Set[String]
Returns the list of reasons the entire plan can't be replaced.
Returns the list of reasons the entire plan can't be replaced. An empty set means the entire plan is ok to be replaced, do the normal checking per exec and children.
-
final
def
entirePlanWillNotWork(because: String): Unit
Call this if there is a condition found that the entire plan is not allowed to run on the GPU.
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def explain(all: Boolean): String
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final val incompatDoc: Option[String]
-
def
indent(append: StringBuilder, depth: Int): Unit
- Attributes
- protected
- def initReasons(): Unit
- final def inputFilePreventsRunningOnGpu(): Unit
- def isDisabledByDefault: Boolean
- def isIncompat: Boolean
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def mustBeReplaced(because: String): Unit
-
final
def
mustThisBeReplaced: Boolean
Returns true iff this must be replaced because its children have already been replaced and this needs to also be replaced for compatibility.
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def noReplacementPossibleMessage(reasons: String): String
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final val operationName: String
- val parent: Option[RapidsMeta[_, _, _]]
-
def
print(strBuilder: StringBuilder, depth: Int, all: Boolean): Unit
Create a string representation of this in append.
Create a string representation of this in append.
- strBuilder
where to place the string representation.
- depth
how far down the tree this is.
- all
should all the data be printed or just what does not work on the GPU?
- Attributes
- protected
-
val
printWrapped: Boolean
When converting this to a string should we include the string representation of what this wraps too? This is off by default.
When converting this to a string should we include the string representation of what this wraps too? This is off by default.
- Attributes
- protected
-
final
def
recursiveCostPreventsRunningOnGpu(): Unit
Recursively force a section of the plan back onto CPU, stopping once a plan is reached that is already on CPU.
- final def recursiveSparkPlanPreventsRunningOnGpu(): Unit
- final def recursiveSparkPlanRemoved(): Unit
- def replaceMessage: String
- final def shouldBeRemoved(because: String): Unit
-
final
def
shouldThisBeRemoved: Boolean
Returns true if this node should be removed.
- def suppressWillWorkOnGpuInfo: Boolean
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
final
def
tagForGpu(): Unit
Tag all of the children to see if they are GPU compatible first.
Tag all of the children to see if they are GPU compatible first. Do basic common verification for the operators, and then call tagSelfForGpu
-
def
toString(): String
- Definition Classes
- RapidsMeta → 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( ... )
-
final
def
willNotWorkOnGpu(because: String): Unit
Call this to indicate that this should not be replaced with a GPU enabled version
Call this to indicate that this should not be replaced with a GPU enabled version
- because
why it should not be replaced.
- val wrapped: INPUT