Packages

object GpuWindowExecMeta

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. GpuWindowExecMeta
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. def getBoundedWindowPrecedingAndFollowing(spec: GpuWindowSpecDefinition): (Int, Int)
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. def isBatchedDoublePassFunc(func: Expression, spec: GpuWindowSpecDefinition): Boolean
  13. def isBatchedFunc(func: Expression, spec: GpuWindowSpecDefinition, conf: RapidsConf): Boolean
  14. def isBatchedRunningFunc(func: Expression, spec: GpuWindowSpecDefinition): Boolean
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. def isUnboundedToUnboundedAggFunc(func: Expression, spec: GpuWindowSpecDefinition, conf: RapidsConf): Boolean

    Checks whether the window aggregation qualifies to be accelerated via group-by aggregation.

    Checks whether the window aggregation qualifies to be accelerated via group-by aggregation. Currently, aggregations without group-by (i.e. whole-table aggregations) are not supported.

  17. def isUnboundedToUnboundedWindow(spec: GpuWindowSpecDefinition): Boolean
  18. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  19. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  20. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  21. def remapAttributes(windowOps: Seq[NamedExpression], post: Seq[NamedExpression]): Seq[NamedExpression]

    As a part of splitAndDedup the dedup part adds a layer of indirection.

    As a part of splitAndDedup the dedup part adds a layer of indirection. This attempts to remove that layer of indirection.

    windowOps

    the windowOps output of splitAndDedup

    post

    the post output of splitAndDedup

    returns

    a version of windowOps that has removed as many un-needed temp aliases as possible.

  22. def splitAndDedup(inputFieldExprs: Seq[NamedExpression], windowExprs: Seq[NamedExpression], resultColumnsOnly: Boolean): (Seq[NamedExpression], Seq[NamedExpression], Seq[NamedExpression])

    In some distributions expressions passed into WindowExec can have more operations in them than just a WindowExpression wrapped in an GpuAlias.

    In some distributions expressions passed into WindowExec can have more operations in them than just a WindowExpression wrapped in an GpuAlias. This is a problem if we want to try and do multiple window operations in a single pass to speed things up or if we need to add new transitive window functions when we are doing some memory optimizations, like running window. This will split the input expressions into three sets of expressions. The first set is a project with no window expressions in it at all. The second takes the first as input and will only have aliases to columns in the first or named expressions wrapping a single window function in it. The third uses the second as input and will do any final steps to combine window functions together.

    For example SUM(a) - SUM(b + c) over (PARTITION BY d ORDER BY e) as result would be transformed into

    Phase 1 (Pre project):
    a, b + c as _tmp0, d, e
    
    Phase 2 (Window Operations):
    SUM(a) over (PARTITION BY d ORDER BY e) as _tmp1,
    SUM(_tmp0) over (PARTITION BY d ORDER BY e) as _tmp2
    
    Phase 3 (Post Project):
    (_tmp1 - _tmp2) as result
    

    To handle special cases (like window function of another window function eg LAG(SUM(a), 2), distros should split apart those into separate window operations. However, we will not see all of these in just the input window expressions of the WindowExec, so we process both the input fields and input window expressions, and handle whether we *only* want result columns using the Post Project stage.

    inputFieldExprs

    the input fields converted to input expressions

    windowExprs

    the input window expressions to a GpuWindowExec

    resultColumnsOnly

    whether the output of the window operation only desires result columns or the output of all input expressions

  23. def splitBatchedOps(windowOps: Seq[NamedExpression], conf: RapidsConf): BatchedOps
  24. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  25. def toString(): String
    Definition Classes
    AnyRef → Any
  26. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  27. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped