Skip to content

draft: fix(cudf): Restore NLJ build byte limit and timestamp AST compares - #112

Open
sperlingxx wants to merge 2 commits into
HighPerfDataAccelerator:devfrom
sperlingxx:fix/cudf-nested-loop-join-bounds
Open

draft: fix(cudf): Restore NLJ build byte limit and timestamp AST compares#112
sperlingxx wants to merge 2 commits into
HighPerfDataAccelerator:devfrom
sperlingxx:fix/cudf-nested-loop-join-bounds

Conversation

@sperlingxx

@sperlingxx sperlingxx commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Restore CudfNestedLoopJoin build-side max_build_bytes accounting (reserveBuildBytes / close-time and concat-failure release). The header still declared it after #38 replaced the cpp with upstream; the test added in 73a13076e therefore no longer threw.
  • Compile two-sided timestamp comparisons (gt(p_ts, b_ts)) as cuDF AST ops instead of a cross-side precompute. innerJoinWithTimestampFilter was added in 635816cba and failed with sideIdx == -2.
  • Pin velox.cudf.gpu_batch_size_rows=1 on buildByteLimitAndCleanup so the two tiny Values pages stay distinct GPU batches.

Test plan

  • Reproduce on HPDA dev 28798f623 (CUDA SM 86): no throw on the 16-byte cap; timestamp filter throws sideIdx == -2.
  • After this change, buildByteLimitAndCleanup and innerJoinWithTimestampFilter passed.
  • Full velox_cudf_nested_loop_join_test: 58/58 passed.

Fixes #111
Part of #100

Prepared with assistance from Cursor.

The header still declared reserveBuildBytes after the Facebook-main
sync dropped the cpp path, so max_build_bytes never threw. Two-sided
timestamp comparisons were gated off AST and then failed as a
cross-side precompute. Keep the byte-limit test's Values pages as
separate GPU batches.

Fixes rapidsai#111
@github-actions github-actions Bot added the cudf label Sep 1, 2026
@sperlingxx sperlingxx changed the title fix(cudf): Restore NLJ build byte limit and timestamp AST compares draft: fix(cudf): Restore NLJ build byte limit and timestamp AST compares Sep 1, 2026
Adapters already include the complete CudfNestedLoopJoinBuild type, so a factory wrapper is not needed to restore max_build_bytes accounting.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[bug] CudfNestedLoopJoin drops build byte limit and rejects two-sided timestamp filters

1 participant