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.
Problem
The current
devcuDF expression path cannot replace Spark'sxxhash64_with_seedand 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
XxHash64Functionandxxhash64_with_seedregistration. The capability disappeared from the current development history during the August upstream merge atf91f93a2a736c2aeafab335c0c126ee1fb75ad56.Expected behavior
xxhash64_with_seedin the cuDF expression adapter.might_containfor serialized Spark/Velox Bloom filters.bloom_filter_aggfor raw and intermediate/final aggregation.xxhash64_with_seedfrom 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
might_contain, and Bloom-filter aggregate paths.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 job11606, 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.