Skip to content
Closed
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
7 changes: 6 additions & 1 deletion .github/actions/setup-duckdb/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,13 @@ runs:
- name: Download DuckDB
shell: bash
run: |
case "$(uname -m)" in
x86_64) arch=amd64 ;;
aarch64) arch=arm64 ;;
*) echo "unsupported architecture: $(uname -m)" >&2; exit 1 ;;
esac
wget -qO- \
"https://github.com/duckdb/duckdb/releases/download/v${{ inputs.duckdb_version }}/duckdb_cli-linux-amd64.zip" \
"https://github.com/duckdb/duckdb/releases/download/v${{ inputs.duckdb_version }}/duckdb_cli-linux-${arch}.zip" \
| funzip > duckdb
chmod +x duckdb
echo "$PWD" >> "$GITHUB_PATH"
13 changes: 10 additions & 3 deletions .github/workflows/develop-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,14 @@ jobs:
bash scripts/commit-json.sh > new-commit.json
bash scripts/cat-s3.sh vortex-ci-benchmark-results commits.json new-commit.json

# Benchmarks run on Graviton3 (c7gd.metal). The binary is built on the same CPU family so
# `-C target-cpu=native` matches, and both jobs pin the arm64 image because the
# `bench-dedicated` runner defaults to x64.
build:
timeout-minutes: 60
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=bench-dedicated/family=c6id.8xlarge/extras=s3-cache/tag=build-{1}', github.run_id, matrix.benchmark.id)
&& format('runs-on={0}/runner=bench-dedicated/family=c7gd.8xlarge/image=ubuntu24-full-arm64-pre-v2/extras=s3-cache/tag=build-{1}', github.run_id, matrix.benchmark.id)
|| 'ubuntu-latest' }}
strategy:
fail-fast: false
Expand All @@ -59,8 +62,12 @@ jobs:
enable-sccache: ${{ github.repository == 'vortex-data/vortex' && 'true' || 'false' }}
- name: Build binary
shell: bash
# `-C target-feature=-sve,-sve2`: on Graviton3, `target-cpu=native` (neoverse-v1) makes rustc
# 1.98 / LLVM 22 miscompile widening `u8 -> usize` sums at 256-bit SVE, which undersizes
# the OnPair and FSST decode buffers for every Vortex file with `u8` string lengths. See
# `benchmarks/string-bench/examples/sve_widening_sum.rs`.
env:
RUSTFLAGS: "-C target-cpu=native -C force-frame-pointers=yes"
RUSTFLAGS: "-C target-cpu=native -C target-feature=-sve,-sve2 -C force-frame-pointers=yes"
run: |
cargo build --bin ${{ matrix.benchmark.id }} --profile release_debug ${{ matrix.benchmark.build_args }} --features unstable_encodings
- name: Pre-upload benchmark debuginfo to Polar Signals
Expand All @@ -83,7 +90,7 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=bench-dedicated/family=c6id.metal/extras=s3-cache/tag={1}', github.run_id, matrix.benchmark.id)
&& format('runs-on={0}/runner=bench-dedicated/family=c7gd.metal/image=ubuntu24-full-arm64-pre-v2/extras=s3-cache/tag={1}', github.run_id, matrix.benchmark.id)
|| 'ubuntu-latest' }}
strategy:
fail-fast: false
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/nightly-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,15 @@ jobs:
with:
mode: "develop"
machine_type: ${{ matrix.machine_type.instance_name }}
build_machine_type: ${{ matrix.machine_type.build_instance_name }}
machine_image: ${{ matrix.machine_type.image }}
matrix_preset: "nightly"
strategy:
# A single run not should kill the others
fail-fast: false
matrix:
machine_type:
- id: x86
instance_name: c6id.metal
- id: arm64
instance_name: c7gd.metal
build_instance_name: c7gd.8xlarge
image: ubuntu24-full-arm64-pre-v2
13 changes: 10 additions & 3 deletions .github/workflows/pr-bench-runner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,14 @@ permissions:
id-token: write # enables AWS-GitHub OIDC

jobs:
# Benchmarks run on Graviton3 (c7gd.metal). The binary is built on the same CPU family so
# `-C target-cpu=native` matches, and both jobs pin the arm64 image because the
# `bench-dedicated` runner defaults to x64.
build:
timeout-minutes: 60
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=bench-dedicated/family=c6id.8xlarge/tag=build-{1}{2}', github.run_id, inputs.benchmark_id, github.event.pull_request.head.repo.fork == false && '/extras=s3-cache' || '')
&& format('runs-on={0}/runner=bench-dedicated/family=c7gd.8xlarge/image=ubuntu24-full-arm64-pre-v2/tag=build-{1}{2}', github.run_id, inputs.benchmark_id, github.event.pull_request.head.repo.fork == false && '/extras=s3-cache' || '')
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
Expand All @@ -49,8 +52,12 @@ jobs:
enable-sccache: ${{ github.event.pull_request.head.repo.fork == false && 'true' || 'false' }}
- name: Build binary
shell: bash
# `-C target-feature=-sve,-sve2`: on Graviton3, `target-cpu=native` (neoverse-v1) makes rustc
# 1.98 / LLVM 22 miscompile widening `u8 -> usize` sums at 256-bit SVE, which undersizes
# the OnPair and FSST decode buffers for every Vortex file with `u8` string lengths. See
# `benchmarks/string-bench/examples/sve_widening_sum.rs`.
env:
RUSTFLAGS: "-C target-cpu=native -C force-frame-pointers=yes"
RUSTFLAGS: "-C target-cpu=native -C target-feature=-sve,-sve2 -C force-frame-pointers=yes"
run: |
cargo build --package ${{ inputs.benchmark_id }} --profile release_debug \
--features ${{ inputs.with_lance && 'lance,' || '' }}unstable_encodings
Expand All @@ -75,7 +82,7 @@ jobs:
timeout-minutes: 120
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=bench-dedicated/family=c6id.metal/tag={1}{2}', github.run_id, inputs.benchmark_id, github.event.pull_request.head.repo.fork == false && '/extras=s3-cache' || '')
&& format('runs-on={0}/runner=bench-dedicated/family=c7gd.metal/image=ubuntu24-full-arm64-pre-v2/tag={1}{2}', github.run_id, inputs.benchmark_id, github.event.pull_request.head.repo.fork == false && '/extras=s3-cache' || '')
|| 'ubuntu-latest' }}
steps:
# `extras=s3-cache` points ACTIONS_RESULTS_URL at the RunsOn artifact proxy, but only
Expand Down
23 changes: 19 additions & 4 deletions .github/workflows/sql-bench-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,21 @@ on:
required: true
type: string
description: "Named benchmark matrix to run"
# The three machine inputs must agree on CPU architecture: the build job's binaries
# run on `machine_type`, and `bench-dedicated` defaults to an x64 image, so an arm64
# family needs the arm64 image spelled out.
machine_type:
required: false
type: string
default: c6id.metal
default: c7gd.metal
build_machine_type:
required: false
type: string
default: c7gd.8xlarge
machine_image:
required: false
type: string
default: ubuntu24-full-arm64-pre-v2

jobs:
resolve-matrix:
Expand Down Expand Up @@ -50,7 +61,7 @@ jobs:
FLAT_LAYOUT_INLINE_ARRAY_NODE: "1"
runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=bench-dedicated/family=c6id.8xlarge/tag=build{1}', github.run_id, (inputs.mode != 'pr' || github.event.pull_request.head.repo.fork == false) && '/extras=s3-cache' || '')
&& format('runs-on={0}/runner=bench-dedicated/family={1}/image={2}/tag=build{3}', github.run_id, inputs.build_machine_type, inputs.machine_image, (inputs.mode != 'pr' || github.event.pull_request.head.repo.fork == false) && '/extras=s3-cache' || '')
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
Expand All @@ -66,8 +77,12 @@ jobs:
enable-sccache: ${{ (inputs.mode != 'pr' || github.event.pull_request.head.repo.fork == false) && 'true' || 'false' }}
- name: Build binaries
shell: bash
# `-C target-feature=-sve,-sve2`: on Graviton3, `target-cpu=native` (neoverse-v1) makes rustc
# 1.98 / LLVM 22 miscompile widening `u8 -> usize` sums at 256-bit SVE, which undersizes
# the OnPair and FSST decode buffers for every Vortex file with `u8` string lengths. See
# `benchmarks/string-bench/examples/sve_widening_sum.rs`.
env:
RUSTFLAGS: "-C target-cpu=native -C force-frame-pointers=yes"
RUSTFLAGS: "-C target-cpu=native -C target-feature=-sve,-sve2 -C force-frame-pointers=yes"
run: |
packages=(--bin data-gen --bin datafusion-bench --bin duckdb-bench)
if [ "${{ inputs.mode }}" != "pr" ]; then
Expand Down Expand Up @@ -112,7 +127,7 @@ jobs:

runs-on: >-
${{ github.repository == 'vortex-data/vortex'
&& format('runs-on={0}/runner=bench-dedicated/family={1}/tag={2}{3}', github.run_id, inputs.machine_type, matrix.id, (inputs.mode != 'pr' || github.event.pull_request.head.repo.fork == false) && '/extras=s3-cache' || '')
&& format('runs-on={0}/runner=bench-dedicated/family={1}/image={2}/tag={3}{4}', github.run_id, inputs.machine_type, inputs.machine_image, matrix.id, (inputs.mode != 'pr' || github.event.pull_request.head.repo.fork == false) && '/extras=s3-cache' || '')
|| 'ubuntu-latest' }}
steps:
- uses: runs-on/action@v2
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.

5 changes: 5 additions & 0 deletions benchmarks/string-bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ bytes = { workspace = true }
clap = { workspace = true, features = ["derive"] }
futures = { workspace = true }
indicatif = { workspace = true }
num-traits = { workspace = true }
parquet = { workspace = true }
regex = { workspace = true }
tabled = { workspace = true, features = ["std"] }
Expand All @@ -43,5 +44,9 @@ unstable_encodings = [
name = "string-bench"
required-features = ["unstable_encodings"]

[[example]]
name = "arm64_repro"
required-features = ["unstable_encodings"]

[lints]
workspace = true
Loading
Loading