Skip to content

Commit 1664197

Browse files
authored
Merge branch 'develop' into ngates/stats-7707/zoned-statfn-pruning
2 parents f29bd91 + 30103b8 commit 1664197

90 files changed

Lines changed: 2602 additions & 1011 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/runs-on.yml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
_extends: .github-private
2+
23
images:
3-
ubuntu24-full-arm64-pre:
4+
ubuntu24-full-x64-pre-v2:
5+
platform: "linux"
6+
arch: "x64"
7+
name: "vortex-ci-v2-x64-*"
8+
owner: "245040174862"
9+
ubuntu24-full-arm64-pre-v2:
410
platform: "linux"
511
arch: "arm64"
6-
ami: "ami-0f1ea4587146704c3"
12+
name: "vortex-ci-v2-arm64-*"
13+
owner: "245040174862"
14+
windows25-full-x64-pre:
15+
platform: "windows"
16+
arch: "x64"
17+
name: "vortex-ci-windows-x64-*"
18+
owner: "245040174862"

.github/workflows/codspeed.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ jobs:
7676
- { shard: 3, name: "Standalone kernels", benches: "alp_cuda date_time_parts_cuda dict_cuda fsst_cuda runend_cuda" }
7777
name: "Benchmark with Codspeed (CUDA Shard #${{ matrix.shard }} - ${{ matrix.name }})"
7878
timeout-minutes: 30
79-
runs-on: runs-on=${{ github.run_id }}/family=g5/image=ubuntu24-gpu-x64/tag=bench-codspeed-cuda-${{ matrix.shard }}
79+
runs-on: >-
80+
runs-on=${{ github.run_id }}/family=g5/cpu=8/image=ubuntu24-gpu-x64/tag=bench-codspeed-cuda-${{ matrix.shard }}
8081
steps:
8182
- uses: runs-on/action@v2
8283
with:

.github/workflows/cuda.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,5 +150,6 @@ jobs:
150150
- name: Download and run cudf-test-harness
151151
run: |
152152
curl -fsSL https://github.com/vortex-data/cudf-test-harness/releases/latest/download/cudf-test-harness-x86_64.tar.gz | tar -xz
153-
cd cudf-test-harness-x86_64
154-
compute-sanitizer --tool memcheck --error-exitcode 1 ./cudf-test-harness check $GITHUB_WORKSPACE/target/x86_64-unknown-linux-gnu/ci/libvortex_test_e2e_cuda.so
153+
$GITHUB_WORKSPACE/target/x86_64-unknown-linux-gnu/ci/cudf_harness_runner \
154+
./cudf-test-harness-x86_64/cudf-test-harness \
155+
$GITHUB_WORKSPACE/target/x86_64-unknown-linux-gnu/ci/libvortex_test_e2e_cuda.so

.github/workflows/fuzz-coverage.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,14 @@ jobs:
4040
rustup component add llvm-tools-preview --toolchain $NIGHTLY_TOOLCHAIN
4141
4242
# Verify llvm-profdata is accessible (cargo-fuzz needs it for coverage merging)
43-
LLVM_PROFDATA="$(rustc +$NIGHTLY_TOOLCHAIN --print sysroot)/lib/rustlib/$(rustc +$NIGHTLY_TOOLCHAIN -vV | sed -n 's|host: ||p')/bin/llvm-profdata"
43+
RUST_SYSROOT="$(rustc +$NIGHTLY_TOOLCHAIN --print sysroot)"
44+
RUST_HOST="$(rustc +$NIGHTLY_TOOLCHAIN --print host-tuple)"
45+
LLVM_TOOLS_BIN="${RUST_SYSROOT}/lib/rustlib/${RUST_HOST}/bin"
46+
LLVM_PROFDATA="${LLVM_TOOLS_BIN}/llvm-profdata"
4447
if [ ! -f "$LLVM_PROFDATA" ]; then
4548
echo "ERROR: llvm-profdata not found at $LLVM_PROFDATA"
4649
echo "Listing bin directory:"
47-
ls -la "$(dirname "$LLVM_PROFDATA")" || echo "Directory does not exist"
50+
ls -la "$LLVM_TOOLS_BIN" || echo "Directory does not exist"
4851
exit 1
4952
fi
5053
echo "Found llvm-profdata at $LLVM_PROFDATA"
@@ -84,13 +87,13 @@ jobs:
8487
COVERAGE_DIR="fuzz/coverage/${{ matrix.fuzz_target }}"
8588
8689
# llvm tools are installed via rustup's llvm-tools component
87-
LLVM_TOOLS_BIN="$(rustc +$NIGHTLY_TOOLCHAIN --print sysroot)/lib/rustlib/$(rustc +$NIGHTLY_TOOLCHAIN -vV | sed -n 's|host: ||p')/bin"
88-
89-
TARGET_TRIPLE=$(rustc +$NIGHTLY_TOOLCHAIN -vV | sed -n 's|host: ||p')
90+
RUST_SYSROOT="$(rustc +$NIGHTLY_TOOLCHAIN --print sysroot)"
91+
RUST_HOST="$(rustc +$NIGHTLY_TOOLCHAIN --print host-tuple)"
92+
LLVM_TOOLS_BIN="${RUST_SYSROOT}/lib/rustlib/${RUST_HOST}/bin"
9093
9194
# cargo-fuzz coverage places the binary at:
9295
# target/<triple>/coverage/<triple>/release/<fuzz_target>
93-
FUZZ_BIN="target/${TARGET_TRIPLE}/coverage/${TARGET_TRIPLE}/release/${{ matrix.fuzz_target }}"
96+
FUZZ_BIN="target/${RUST_HOST}/coverage/${RUST_HOST}/release/${{ matrix.fuzz_target }}"
9497
9598
if [ ! -f "$FUZZ_BIN" ]; then
9699
echo "ERROR: Could not find fuzz binary at $FUZZ_BIN"

.github/workflows/package.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
- name: Install cargo-edit
4545
uses: taiki-e/cache-cargo-install-action@66c9585ef5ca780ee69399975a5e911f47905995
4646
with:
47-
tool: cargo-edit
47+
tool: cargo-edit@0.13.10
4848

4949
- name: Cargo Set Version
5050
run: |

.github/workflows/publish-dry-runs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ jobs:
117117
- name: Install cargo-edit
118118
uses: taiki-e/cache-cargo-install-action@66c9585ef5ca780ee69399975a5e911f47905995
119119
with:
120-
tool: cargo-edit
120+
tool: cargo-edit@0.13.10
121121
- name: Set Version
122122
run: |
123123
# This is mostly a dummy version, we don't actually publish anything but it cannot exist in crates.io

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
- name: Install cargo-edit
3434
uses: taiki-e/cache-cargo-install-action@66c9585ef5ca780ee69399975a5e911f47905995
3535
with:
36-
tool: cargo-edit
36+
tool: cargo-edit@0.13.10
3737

3838
- name: Cargo Set Version
3939
run: |

.github/workflows/rust-instrumented.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,35 @@ jobs:
4747
sccache: s3
4848
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
4949
- uses: ./.github/actions/setup-prebuild
50+
- name: Ensure llvm-tools are installed
51+
run: |
52+
rustup component add llvm-tools || \
53+
rustup component add llvm-tools-preview
54+
55+
# Verify llvm-profdata is accessible (grcov needs it for coverage merging)
56+
RUST_SYSROOT="$(rustc --print sysroot)"
57+
RUST_HOST="$(rustc --print host-tuple)"
58+
LLVM_TOOLS_BIN="${RUST_SYSROOT}/lib/rustlib/${RUST_HOST}/bin"
59+
LLVM_PROFDATA="${LLVM_TOOLS_BIN}/llvm-profdata"
60+
if [ ! -f "$LLVM_PROFDATA" ]; then
61+
echo "ERROR: llvm-profdata not found at $LLVM_PROFDATA"
62+
echo "Listing bin directory:"
63+
ls -la "$LLVM_TOOLS_BIN" || echo "Directory does not exist"
64+
exit 1
65+
fi
66+
echo "Found llvm-profdata at $LLVM_PROFDATA"
67+
5068
- name: Rust Tests
5169
if: ${{ matrix.suite == 'tests' }}
5270
run: |
5371
cargo nextest run --locked --workspace --all-features --no-fail-fast
5472
- name: Generate coverage report
5573
run: |
74+
RUST_SYSROOT="$(rustc --print sysroot)"
75+
RUST_HOST="$(rustc --print host-tuple)"
76+
LLVM_TOOLS_BIN="${RUST_SYSROOT}/lib/rustlib/${RUST_HOST}/bin"
5677
grcov . --binary-path target/debug/ -s . -t lcov --llvm --ignore-not-existing \
78+
--llvm-path "${LLVM_TOOLS_BIN}" \
5779
--threads $(nproc) \
5880
--ignore '../*' --ignore '/*' --ignore 'fuzz/*' --ignore 'vortex-bench/*' \
5981
--ignore 'home/*' --ignore 'xtask/*' --ignore 'target/*' --ignore 'vortex-error/*' \
@@ -62,6 +84,7 @@ jobs:
6284
--ignore 'vortex-ffi/examples/*' --ignore '*/arbitrary/*' --ignore '*/arbitrary.rs' --ignore 'vortex-cxx/*' \
6385
--ignore benchmarks/* --ignore 'vortex-test/*' \
6486
-o ${{ env.GRCOV_OUTPUT_FILE }}
87+
test -s ${{ env.GRCOV_OUTPUT_FILE }}
6588
- name: Codecov
6689
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6
6790
with:

.github/workflows/sql-benchmarks.yml

Lines changed: 35 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,29 @@ on:
252252
{"engine": "datafusion", "format": "vortex"}
253253
],
254254
"scale_factor": "1"
255+
},
256+
{
257+
"id": "appian-nvme",
258+
"subcommand": "appian",
259+
"name": "Appian on NVME",
260+
"data_formats": ["parquet", "vortex", "vortex-compact", "duckdb"],
261+
"pr_targets": [
262+
{"engine": "datafusion", "format": "parquet"},
263+
{"engine": "datafusion", "format": "vortex"},
264+
{"engine": "duckdb", "format": "parquet"},
265+
{"engine": "duckdb", "format": "vortex"},
266+
{"engine": "duckdb", "format": "duckdb"}
267+
],
268+
"develop_targets": [
269+
{"engine": "datafusion", "format": "parquet"},
270+
{"engine": "datafusion", "format": "vortex"},
271+
{"engine": "datafusion", "format": "vortex-compact"},
272+
{"engine": "duckdb", "format": "parquet"},
273+
{"engine": "duckdb", "format": "vortex"},
274+
{"engine": "duckdb", "format": "vortex-compact"},
275+
{"engine": "duckdb", "format": "duckdb"}
276+
],
277+
"iterations": "10"
255278
}
256279
]
257280
@@ -402,6 +425,18 @@ jobs:
402425
${{ matrix.iterations && format('--iterations {0}', matrix.iterations) || '' }} \
403426
--opt remote-data-dir=${{ matrix.remote_storage }} \
404427
${{ matrix.scale_factor && format('--opt scale-factor={0}', matrix.scale_factor) || '' }}
428+
429+
- name: Capture file sizes
430+
if: matrix.remote_storage == null
431+
shell: bash
432+
run: |
433+
uv run --no-project scripts/capture-file-sizes.py \
434+
vortex-bench/data \
435+
--benchmark ${{ matrix.subcommand }} \
436+
--commit ${{ inputs.mode == 'pr' && github.event.pull_request.head.sha || github.sha }} \
437+
-o sizes.json
438+
cat sizes.json >> results.json
439+
405440
- name: Compare results
406441
if: inputs.mode == 'pr'
407442
shell: bash
@@ -435,56 +470,6 @@ jobs:
435470
# unique benchmark configuration must have a unique comment-tag.
436471
comment-tag: bench-pr-comment-${{ matrix.id }}
437472

438-
- name: Compare file sizes
439-
if: inputs.mode == 'pr' && matrix.remote_storage == null
440-
shell: bash
441-
run: |
442-
set -Eeu -o pipefail -x
443-
444-
# Capture HEAD file sizes (vortex formats only)
445-
uv run --no-project scripts/capture-file-sizes.py \
446-
vortex-bench/data \
447-
--benchmark ${{ matrix.subcommand }} \
448-
--commit ${{ github.event.pull_request.head.sha }} \
449-
-o head-sizes.json
450-
451-
# Get base commit SHA (same as benchmark comparison)
452-
base_commit_sha=$(\
453-
curl -L \
454-
-H "Accept: application/vnd.github+json" \
455-
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
456-
https://api.github.com/repos/vortex-data/vortex/actions/workflows/bench.yml/runs\?branch\=develop\&status\=success\&per_page\=1 \
457-
| jq -r '.workflow_runs[].head_sha' \
458-
)
459-
460-
# Download file sizes baseline (per-benchmark file)
461-
python3 scripts/s3-download.py s3://vortex-ci-benchmark-results/file-sizes-${{ matrix.id }}.json.gz file-sizes.json.gz --no-sign-request || true
462-
463-
# Generate comparison report
464-
echo '# File Sizes: ${{ matrix.name }}' > sizes-comment.md
465-
echo '' >> sizes-comment.md
466-
467-
if [ -f file-sizes.json.gz ]; then
468-
gzip -d -c file-sizes.json.gz | grep $base_commit_sha > base-sizes.json || true
469-
if [ -s base-sizes.json ]; then
470-
uv run --no-project scripts/compare-file-sizes.py base-sizes.json head-sizes.json \
471-
>> sizes-comment.md
472-
else
473-
echo '_No baseline file sizes found for base commit._' >> sizes-comment.md
474-
fi
475-
else
476-
echo '_No baseline file sizes available yet._' >> sizes-comment.md
477-
fi
478-
479-
cat sizes-comment.md >> $GITHUB_STEP_SUMMARY
480-
481-
- name: Comment PR with file sizes
482-
if: inputs.mode == 'pr' && matrix.remote_storage == null && github.event.pull_request.head.repo.fork == false
483-
uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3
484-
with:
485-
file-path: sizes-comment.md
486-
comment-tag: file-sizes-${{ matrix.id }}
487-
488473
- name: Comment PR on failure
489474
if: failure() && inputs.mode == 'pr' && github.event.pull_request.head.repo.fork == false
490475
uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3
@@ -513,17 +498,6 @@ jobs:
513498
--benchmark-id "${{ matrix.id }}" \
514499
--repo-url "${{ github.server_url }}/${{ github.repository }}"
515500
516-
- name: Upload File Sizes
517-
if: inputs.mode == 'develop' && matrix.remote_storage == null
518-
shell: bash
519-
run: |
520-
uv run --no-project scripts/capture-file-sizes.py \
521-
vortex-bench/data \
522-
--benchmark ${{ matrix.subcommand }} \
523-
--commit ${{ github.sha }} \
524-
-o sizes.json
525-
bash scripts/cat-s3.sh vortex-ci-benchmark-results file-sizes-${{ matrix.id }}.json.gz sizes.json
526-
527501
- name: Alert incident.io
528502
if: failure() && inputs.mode == 'develop'
529503
uses: ./.github/actions/alert-incident-io

bench-orchestrator/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ vx-bench run <benchmark> [options]
4141

4242
**Arguments:**
4343

44-
- `benchmark`: Benchmark suite to run (`tpch`, `tpcds`, `clickbench`, `fineweb`, `gh-archive`, `polarsignals`, `public-bi`, `statpopgen`)
44+
- `benchmark`: Benchmark suite to run (`appian`, `tpch`, `tpcds`, `clickbench`, `fineweb`, `gh-archive`, `polarsignals`, `public-bi`, `statpopgen`)
4545

4646
**Options:**
4747

0 commit comments

Comments
 (0)