Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 5 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -578,21 +578,15 @@ jobs:
- uses: ./.github/actions/setup-prebuild
with:
enable-sccache: "true"
# The golden suite pins the compressor's decisions per feature variant, and the
# variants are mutually exclusive at compile time: the `default` variant only exists
# without `unstable_encodings` (which changes ALL_SCHEMES), so the `--all-features`
# workspace test jobs cannot run it. Run each feature combination explicitly.
- name: Golden corpus (default features)
# The golden suite pins compressor decisions for the core-only and explicitly enabled
# edition configurations. Compact compression additionally needs its optional schemes.
- name: Golden corpus (edition configurations)
run: |
cargo nextest run --cargo-profile ci --locked --no-fail-fast -p vortex-btrblocks --test golden
- name: Golden corpus (unstable_encodings)
- name: Golden corpus (compact, zstd + pco)
run: |
cargo nextest run --cargo-profile ci --locked --no-fail-fast -p vortex-btrblocks --test golden \
--features unstable_encodings
- name: Golden corpus (compact, unstable_encodings + zstd + pco)
run: |
cargo nextest run --cargo-profile ci --locked --no-fail-fast -p vortex-btrblocks --test golden \
--features unstable_encodings,zstd,pco
--features zstd,pco -E 'test(golden_compact)'

build-java:
name: "Java"
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/develop-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
env:
RUSTFLAGS: "-C target-cpu=native -C force-frame-pointers=yes"
run: |
cargo build --bin ${{ matrix.benchmark.id }} --profile release_debug ${{ matrix.benchmark.build_args }} --features unstable_encodings
cargo build --bin ${{ matrix.benchmark.id }} --profile release_debug ${{ matrix.benchmark.build_args }}
- name: Pre-upload benchmark debuginfo to Polar Signals
uses: ./.github/actions/upload-parca-debuginfo
continue-on-error: true
Expand Down Expand Up @@ -143,7 +143,6 @@ jobs:
shell: bash
env:
RUST_BACKTRACE: full
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
run: |
python3 scripts/random-access-split.py --emit-ingest-records
Expand All @@ -153,7 +152,6 @@ jobs:
shell: bash
env:
RUST_BACKTRACE: full
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
run: |
python3 scripts/compress-split.py --formats arrow-ipc,parquet,lance,vortex --emit-ingest-records
Expand All @@ -163,7 +161,6 @@ jobs:
shell: bash
env:
RUST_BACKTRACE: full
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
run: |
python3 scripts/string-split.py
Expand Down
40 changes: 0 additions & 40 deletions .github/workflows/fuzz.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,46 +101,6 @@ jobs:
gh_token: ${{ secrets.GITHUB_TOKEN }}
incident_io_alert_token: ${{ secrets.INCIDENT_IO_ALERT_TOKEN }}

# ============================================================================
# Array Operations Fuzzer (unstable encodings)
# ============================================================================
ops_fuzz_unstable:
name: "Array Operations Fuzz (unstable)"
uses: ./.github/workflows/run-fuzzer.yml
with:
fuzz_target: array_ops
fuzz_name: array_ops_unstable_encodings
extra_features: "vortex/unstable_encodings"
extra_env: "VORTEX_EXPERIMENTAL_PATCHED_ARRAY=1"
jobs: 4
secrets:
R2_FUZZ_ACCESS_KEY_ID: ${{ secrets.R2_FUZZ_ACCESS_KEY_ID }}
R2_FUZZ_SECRET_ACCESS_KEY: ${{ secrets.R2_FUZZ_SECRET_ACCESS_KEY }}

report-ops-unstable-fuzz-failures:
name: "Report Array Ops (unstable) Fuzz Failures"
needs: ops_fuzz_unstable
if: always() && needs.ops_fuzz_unstable.outputs.crashes_found == 'true'
permissions:
issues: write
contents: read
id-token: write
pull-requests: read
uses: ./.github/workflows/report-fuzz-crash.yml
with:
fuzz_target: array_ops
fuzz_name: array_ops_unstable_encodings
crash_file: ${{ needs.ops_fuzz_unstable.outputs.first_crash_name }}
artifact_url: ${{ needs.ops_fuzz_unstable.outputs.artifact_url }}
artifact_name: array_ops_unstable_encodings-crash-artifacts
logs_artifact_name: array_ops_unstable_encodings-logs
branch: ${{ github.ref_name }}
commit: ${{ github.sha }}
secrets:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
gh_token: ${{ secrets.GITHUB_TOKEN }}
incident_io_alert_token: ${{ secrets.INCIDENT_IO_ALERT_TOKEN }}

# ============================================================================
# FSST LIKE Fuzzer
# ============================================================================
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-bench-gpu-compress.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
- name: Build GPU compression benchmark
shell: bash
run: |
cargo build --locked --package compress-bench --profile release_debug --features cuda,unstable_encodings
cargo build --locked --package compress-bench --profile release_debug --features cuda
- name: Setup benchmark environment
run: sudo bash scripts/setup-benchmark.sh
- name: Run GPU compression benchmark
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/pr-bench-runner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
RUSTFLAGS: "-C target-cpu=native -C force-frame-pointers=yes"
run: |
cargo build --package ${{ inputs.benchmark_id }} --profile release_debug \
--features ${{ inputs.with_lance && 'lance,' || '' }}unstable_encodings
${{ inputs.with_lance && '--features lance' || '' }}
- name: Pre-upload benchmark debuginfo to Polar Signals
if: github.event.pull_request.head.repo.fork == false
uses: ./.github/actions/upload-parca-debuginfo
Expand Down Expand Up @@ -130,7 +130,6 @@ jobs:
shell: bash
env:
RUST_BACKTRACE: full
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
run: |
python3 scripts/random-access-split.py
Expand All @@ -140,7 +139,6 @@ jobs:
shell: bash
env:
RUST_BACKTRACE: full
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
run: |
python3 scripts/compress-split.py
Expand All @@ -150,7 +148,6 @@ jobs:
shell: bash
env:
RUST_BACKTRACE: full
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
run: |
python3 scripts/string-split.py
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/sql-bench-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ jobs:
build:
timeout-minutes: 60
env:
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
Expand All @@ -73,7 +72,7 @@ jobs:
if [ "${{ inputs.mode }}" != "pr" ]; then
packages+=(--bin lance-bench)
fi
cargo build "${packages[@]}" --profile release_debug --features unstable_encodings
cargo build "${packages[@]}" --profile release_debug
- parallel:
- name: Upload binaries
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
Expand Down Expand Up @@ -101,7 +100,6 @@ jobs:
needs: [resolve-matrix, build]
timeout-minutes: 120
env:
VORTEX_EXPERIMENTAL_PATCHED_ARRAY: "1"
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
# Makes python output nicer
COLUMNS: 120
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion bench-orchestrator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,6 @@ Benchmarks are built with:

- Profile: `release_debug`
- RUSTFLAGS: `-C target-cpu=native -C force-frame-pointers=yes`
- Features: `unstable_encodings`
- Features: none

This enables native CPU optimizations while preserving debug symbols for profiling.
2 changes: 1 addition & 1 deletion bench-orchestrator/bench_orchestrator/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ class BuildConfig:

profile: str = "release_debug"
rustflags: str = "-C target-cpu=native -C force-frame-pointers=yes"
features: tuple[str, ...] = ("unstable_encodings",)
features: tuple[str, ...] = ()


def get_workspace_root() -> Path:
Expand Down
5 changes: 0 additions & 5 deletions benchmarks/compress-bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,6 @@ vortex-cuda = { workspace = true, optional = true }
[features]
cuda = ["dep:tempfile", "dep:vortex-cuda"]
lance = ["dep:lance-bench"]
unstable_encodings = [
"vortex/unstable_encodings",
"vortex-bench/unstable_encodings",
"vortex-cuda?/unstable_encodings",
]

[[bin]]
name = "compress-bench"
Expand Down
6 changes: 3 additions & 3 deletions benchmarks/compress-bench/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ Both sides therefore decode all the way to device-resident arrays, which is what

```bash
cargo run -p compress-bench --profile release_debug \
--features cuda,unstable_encodings -- --gpu-decompress
--features cuda -- --gpu-decompress

# pick the Parquet page codec the GPU file is written with (default: snappy)
cargo run -p compress-bench --profile release_debug \
--features cuda,unstable_encodings -- --gpu-decompress --gpu-parquet-codec zstd
--features cuda -- --gpu-decompress --gpu-parquet-codec zstd
```

### cuDF
Expand Down Expand Up @@ -116,7 +116,7 @@ still publishes comparable numbers — it just takes considerably longer:

```bash
cargo run -p compress-bench --profile release_debug \
--features cuda,unstable_encodings -- --gpu-decompress --gpu-verify --iterations 1
--features cuda -- --gpu-decompress --gpu-verify --iterations 1
```

Any `--gpu-decompress` run reports on every dataset rather than stopping at the first failure, so
Expand Down
13 changes: 8 additions & 5 deletions benchmarks/compress-bench/src/gpu/vortex.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ use vortex::layout::scan::split_by::SplitBy;
use vortex_arrow::ArrowSessionExt;
use vortex_bench::Format;
use vortex_bench::SESSION;
use vortex_bench::benchmark_write_options;
use vortex_bench::compress::Compressed;
use vortex_bench::compress::CompressedData;
use vortex_bench::compress::Compressor;
use vortex_bench::compress::Uncompressed;
use vortex_bench::conversions::parquet_to_vortex_chunks_with_batch_size;
use vortex_bench::retain_edition_encodings;
use vortex_cuda::CanonicalCudaExt;
use vortex_cuda::CudaExecutionCtx;
use vortex_cuda::CudaOpenOptionsExt;
Expand Down Expand Up @@ -100,12 +100,15 @@ impl Compressor for GpuVortexCompressor {
// partition rather than whatever the default strategy would regroup them into.
let strategy = Arc::new(ChunkedLayoutStrategy::new(CompressingStrategy::new(
CudaFlatLayoutStrategy::default(),
BtrBlocksCompressorBuilder::default()
.only_cuda_compatible()
.build(),
retain_edition_encodings(
&SESSION,
BtrBlocksCompressorBuilder::default().only_cuda_compatible(),
)
.build(),
)));
let start = Instant::now();
benchmark_write_options(SESSION.write_options())
SESSION
.write_options()
.with_strategy(strategy)
.write(&mut output, array.to_array_stream())
.await?;
Expand Down
4 changes: 2 additions & 2 deletions benchmarks/compress-bench/src/vortex.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ use vortex::file::WriteOptionsSessionExt;
use vortex_arrow::ArrowSessionExt;
use vortex_bench::Format;
use vortex_bench::SESSION;
use vortex_bench::benchmark_write_options;
use vortex_bench::compress::Compressed;
use vortex_bench::compress::CompressedData;
use vortex_bench::compress::Compressor;
Expand Down Expand Up @@ -50,7 +49,8 @@ impl Compressor for VortexCompressor {
let mut buf = Vec::new();
let start = Instant::now();
let mut cursor = Cursor::new(&mut buf);
benchmark_write_options(SESSION.write_options())
SESSION
.write_options()
.write(&mut cursor, array.to_array_stream())
.await?;
let elapsed = start.elapsed();
Expand Down
1 change: 0 additions & 1 deletion benchmarks/datafusion-bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ custom-labels = { workspace = true }

[features]
cuda = ["dep:vortex-cuda"]
unstable_encodings = ["vortex/unstable_encodings", "vortex-bench/unstable_encodings"]

[lints]
workspace = true
1 change: 0 additions & 1 deletion benchmarks/duckdb-bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ vortex-duckdb = { workspace = true }

[features]
cuda = ["dep:vortex-cuda"]
unstable_encodings = ["vortex/unstable_encodings", "vortex-bench/unstable_encodings"]

[lints]
workspace = true
3 changes: 0 additions & 3 deletions benchmarks/lance-bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ tokio = { workspace = true, features = ["full"] }
tracing = { workspace = true }
vortex-bench = { workspace = true }

[features]
unstable_encodings = ["vortex-bench/unstable_encodings"]

[lib]
test = false

Expand Down
1 change: 0 additions & 1 deletion benchmarks/random-access-bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ vortex-bench = { workspace = true }

[features]
lance = ["dep:lance-bench"]
unstable_encodings = ["vortex-bench/unstable_encodings"]

[[bin]]
name = "random-access-bench"
Expand Down
8 changes: 0 additions & 8 deletions benchmarks/string-bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,8 @@ vortex-btrblocks = { workspace = true }
vortex-fsst = { workspace = true }
vortex-onpair = { workspace = true }

[features]
unstable_encodings = [
"vortex/unstable_encodings",
"vortex-bench/unstable_encodings",
"vortex-btrblocks/unstable_encodings",
]

[[bin]]
name = "string-bench"
required-features = ["unstable_encodings"]

[lints]
workspace = true
10 changes: 5 additions & 5 deletions benchmarks/string-bench/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,22 +80,22 @@ Input preparation is outside benchmark timing.

```bash
# Tracked metrics: size, write, read for every configured column and encoder.
cargo run -p string-bench --profile release_debug --features unstable_encodings
cargo run -p string-bench --profile release_debug

# Focus on selected columns or encoders.
cargo run -p string-bench --profile release_debug --features unstable_encodings -- \
cargo run -p string-bench --profile release_debug -- \
--columns URL --encoders onpair

# Add the direct codec microbenchmark.
cargo run -p string-bench --profile release_debug --features unstable_encodings -- \
cargo run -p string-bench --profile release_debug -- \
--suite both

# Emit benchmark-comparator JSONL.
cargo run -p string-bench --profile release_debug --features unstable_encodings -- \
cargo run -p string-bench --profile release_debug -- \
--display-format gh-json --output-path results.json
```

Run `cargo run -p string-bench --features unstable_encodings -- --help` for all
Run `cargo run -p string-bench -- --help` for all
filters and tuning options.

Before timing, the benchmark checks that each requested encoding was produced
Expand Down
2 changes: 0 additions & 2 deletions benchmarks/string-bench/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright the Vortex contributors

#![cfg(feature = "unstable_encodings")]

//! String-compression benchmarks for Vortex.
//!
//! Two intentionally separate suites:
Expand Down
Loading
Loading