Skip to content

Add parquet DELTA read tests and nested benchmark axis - #23771

Draft
vyasr wants to merge 3 commits into
NVIDIA:mainfrom
vyasr:codex/delta-filter-test-benchmarks
Draft

Add parquet DELTA read tests and nested benchmark axis#23771
vyasr wants to merge 3 commits into
NVIDIA:mainfrom
vyasr:codex/delta-filter-test-benchmarks

Conversation

@vyasr

@vyasr vyasr commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a flat DELTA_BINARY_PACKED roundtrip regression for a 33-value tail iteration case
  • add a nullable DELTA_BINARY_PACKED boundary-word regression for two 33-row pages
  • add a nesting axis to DELTA parquet read benchmarks so nested LIST paths are measured

Testing

  • git diff --check upstream/main..HEAD
  • build-cudf-cpp -j0 -DBUILD_BENCHMARKS=ON
  • ./PARQUET_TEST --gtest_filter="ParquetWriterTest.DeltaBinaryNzIdxTailIteration33:ParquetReaderTest.DeltaBinaryBoundaryWordMerge"
  • ./PARQUET_READER_NVBENCH --benchmark parquet_read_delta_binary --devices 0 --axis encoding=DELTA_BINARY_PACKED --axis io_type=DEVICE_BUFFER --axis cardinality=1000 --axis run_length=1 --axis nesting=1 --axis data_size=1048576 --profile --min-samples 1 --timeout 30 --csv stdout

Note: the full build and focused checks were run before rebasing this extracted branch onto latest upstream/main; after the rebase, git diff --check upstream/main..HEAD was rerun successfully.

vyasr and others added 3 commits August 22, 2026 22:02
…_input_values=33)

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
(cherry picked from commit 1e99ed8)
… pages

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
(cherry picked from commit 5e0fef0)
Nested DELTA pages have no benchmark today. The DeltaBinaryList* gtests are
correctness-only and TPC-H has no nested DELTA columns, so the 3-warp
decode_delta_binary_kernel<Flat=false> path is currently unmeasured -- which
makes it impossible to say whether replacing it regresses anything.

nesting=0 keeps the flat columns these benchmarks have always used; nesting=N
wraps the leaf type in N levels of LIST, which is what puts the decoder on its
repetition path.

Setting the encoding needed to become recursive. The writer only honours the
request on the schema node whose physical type matches: it skips nodes named
"list" and reaches the values through lists_column_view::child_column_index,
so a request left on the outermost column never lands on a LIST's leaf.

Verified the nested configuration measures what it claims, rather than assuming
it: under nsys, nesting=1 with DELTA_BINARY_PACKED runs
decode_delta_binary_kernel<unsigned char, (bool)0> -- the Flat=false
instantiation -- for 95.5% of GPU time (65.8 ms x 209 launches), and no
compute_nz_idx_kernel appears, which is the expected shape while nested pages
have no pre-pass. Reported noise is 0.19%.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit c4fbfec)
@copy-pr-bot

copy-pr-bot Bot commented Aug 23, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@github-actions github-actions Bot added the libcudf Affects libcudf (C++/CUDA) code. label Aug 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

libcudf Affects libcudf (C++/CUDA) code.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant