Skip to content

Parquet Variant Extract Benchmark - #23616

Draft
abigalekim wants to merge 1 commit into
NVIDIA:mainfrom
abigalekim:ak/variant-bench
Draft

Parquet Variant Extract Benchmark#23616
abigalekim wants to merge 1 commit into
NVIDIA:mainfrom
abigalekim:ak/variant-bench

Conversation

@abigalekim

Copy link
Copy Markdown
Contributor

Description

(DRAFT)

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@abigalekim abigalekim added the feature request New feature or request label Aug 11, 2026
@abigalekim
abigalekim requested review from a team as code owners August 11, 2026 00:35
@abigalekim abigalekim added the non-breaking Non-breaking change label Aug 11, 2026
@abigalekim
abigalekim requested review from bdice and simoneves August 11, 2026 00:35
@copy-pr-bot

copy-pr-bot Bot commented Aug 11, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@abigalekim
abigalekim marked this pull request as draft August 11, 2026 00:35
@github-actions github-actions Bot added libcudf Affects libcudf (C++/CUDA) code. CMake CMake build issue labels Aug 11, 2026
@abigalekim
abigalekim marked this pull request as ready for review August 11, 2026 01:07
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • Added a benchmark for extracting fields from experimental Parquet VARIANT data.
    • Supports testing primitive and array values across configurable row counts, nesting depths, data types, and match rates.
    • Enables performance comparisons between direct VARIANT conversion and path-based field extraction.

Walkthrough

Changes

VARIANT benchmark

Layer / File(s) Summary
VARIANT value encoding
cpp/benchmarks/io/parquet/experimental/variant/extract.cpp
Adds encoders for metadata, primitive and array leaves, and nested object values.
Column and extraction path construction
cpp/benchmarks/io/parquet/experimental/variant/extract.cpp
Builds STRUCT VARIANT columns and maps benchmark parameters to extraction paths and target types.
Benchmark execution and registration
cpp/benchmarks/io/parquet/experimental/variant/extract.cpp, cpp/benchmarks/CMakeLists.txt
Runs casting or path extraction across configurable rows, types, nesting depths, and hit rates. Registers the NVBench target.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

Suggested labels: 2 - In Progress

Suggested reviewers: bdice, simoneves, vuule

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description contains only a draft marker and checklist, so it does not meaningfully describe the benchmark changes. Add a concise summary of the Parquet Variant extraction benchmark and its scope.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: a Parquet Variant extraction benchmark.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cpp/benchmarks/io/parquet/experimental/variant/extract.cpp`:
- Around line 19-22: Add the direct declaration headers <cstdint>,
<cuda_runtime_api.h>, and <tuple> to the includes in extract.cpp for its
fixed-width integer types, cudaStreamSynchronize, and std::ignore usage.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c1a8c46b-67f1-4a01-bbe5-91ef1b75588e

📥 Commits

Reviewing files that changed from the base of the PR and between 98832f4 and 1531d85.

📒 Files selected for processing (2)
  • cpp/benchmarks/CMakeLists.txt
  • cpp/benchmarks/io/parquet/experimental/variant/extract.cpp

Comment on lines +19 to +22
#include <cstring>
#include <memory>
#include <string>
#include <vector>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="cpp/benchmarks/io/parquet/experimental/variant/extract.cpp"
for header in cuda_runtime_api.h cstdint tuple; do
  rg -qF "`#include` <${header}>" "$file" ||
    printf 'Missing direct include: <%s>\n' "$header"
done

Repository: rapidsai/cudf

Length of output: 262


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="cpp/benchmarks/io/parquet/experimental/variant/extract.cpp"
printf '%s\n' '--- include block and symbol context ---'
sed -n '1,45p' "$file"
sed -n '205,240p' "$file"

printf '%s\n' '--- direct declarations and usages ---'
rg -n 'cudaStreamSynchronize|std::ignore|int(8|16|32|64)_t|uint(8|16|32|64)_t|size_t|ptrdiff_t|make_tuple|tie|tuple' "$file"

Repository: rapidsai/cudf

Length of output: 5883


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- project usage of the required direct headers ---'
rg -n -g '*.{cpp,cu,h,hpp,cuh}' '`#include` <cuda_runtime_api\.h>|cudaStreamSynchronize|`#include` <cstdint>|`#include` <tuple>' cpp/benchmarks/io/parquet/experimental cpp/benchmarks | head -200

Repository: rapidsai/cudf

Length of output: 841


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- CUDA runtime include conventions ---'
rg -n -g '*.{cpp,cu,h,hpp,cuh}' '`#include` <cuda_runtime(_api)?\.h>|cudaStreamSynchronize' cpp | head -200

Repository: rapidsai/cudf

Length of output: 3365


Add direct declaration headers.

This file uses fixed-width integer types, cudaStreamSynchronize, and std::ignore without their declaration headers. Add <cstdint>, <cuda_runtime_api.h>, and <tuple>.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cpp/benchmarks/io/parquet/experimental/variant/extract.cpp` around lines 19 -
22, Add the direct declaration headers <cstdint>, <cuda_runtime_api.h>, and
<tuple> to the includes in extract.cpp for its fixed-width integer types,
cudaStreamSynchronize, and std::ignore usage.

Source: Coding guidelines

@abigalekim
abigalekim marked this pull request as draft August 11, 2026 01:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CMake CMake build issue feature request New feature or request libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant