Skip to content

[cuDF] Restore Spark xxhash64 and runtime Bloom-filter execution #101

Description

@sperlingxx

Problem

The current dev cuDF expression path cannot replace Spark's xxhash64_with_seed and runtime Bloom-filter operators used by TPC-H Q20 when CPU fallback is disabled. The result is a hard expression-replacement failure before query execution.

Ferdinand's retained July runtime did not encounter this failure: its native binary already contained the cuDF XxHash64Function and xxhash64_with_seed registration. The capability disappeared from the current development history during the August upstream merge at f91f93a2a736c2aeafab335c0c126ee1fb75ad56.

Expected behavior

  • Support Spark-compatible single-column xxhash64_with_seed in the cuDF expression adapter.
  • Support might_contain for serialized Spark/Velox Bloom filters.
  • Support reduce-only bloom_filter_agg for raw and intermediate/final aggregation.
  • Reject multi-column xxhash64_with_seed from GPU selection until Spark's iterative seed-chaining semantics can be implemented. cuDF's current multi-column combination differs from Spark and must fail closed when CPU fallback is disabled.

Acceptance criteria

  • Register and test the single-column xxhash64, might_contain, and Bloom-filter aggregate paths.
  • Verify single-column xxhash64 results against the CPU implementation, including nulls.
  • Verify expression selection rejects multi-column xxhash64 regardless of the CPU-fallback setting.
  • Preserve raw and intermediate/final Bloom-filter aggregation behavior.
  • Keep the compatibility-first host-copy implementation explicit; do not claim it is GPU-native or performance-qualified.

Validation evidence and limits

The fused staging branch compiled in NVL72 build job 11596, passed bundle qualification, and removed Q20's prior hard replacement failure. In four-peer job 11606, Q20 completed all three attempts in 4.745 / 4.717 / 4.702 seconds. Result comparison was disabled in that workflow, so CPU-oracle correctness and performance qualification remain separate gates.

Prepared with assistance from Codex.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions