Skip to content

enh(cudf): Consolidate split GPU support checks across cudf operator adapters #16930

@karthikeyann

Description

@karthikeyann

Description

GPU support eligibility for cudf operators is split across two locations: static methods / free functions in operator source files (e.g. isSupportedJoinType, canBeEvaluatedByCudf) and the OperatorAdapter::canRunOnGPU overrides in OperatorAdapters.cpp. In several cases the adapter silently adds restrictions that are invisible from the operator-side check, making the operator-side function misleading as a source of truth.

As pointed out in #16714 (comment)
Affected operators are

  • HashJoin
    CudfHashJoinProbe::isSupportedJoinType (CudfHashJoin.h) checks only the join type enum and returns true for kAnti. But CudfHashJoinBaseAdapter::canRunOnGPU (OperatorAdapters.cpp) adds two additional restrictions on top:

    • Null-aware anti join with filter is not supported.
    • The join filter expression itself must be evaluable by cudf.
  • FilterProject

  • Aggregation
    AggregationAdapter::canRunOnGPU and FilterProjectAdapter::canRunOnGPU returns false when the input or output type has zero columns, but this restriction does not appear in their respective canBeEvaluatedByCudf.

Suggested solution:

Either move all the checks to Operator, or Adapter.

Metadata

Metadata

Assignees

No one assigned

    Labels

    cudfcudf related - GPU accelerationenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions