Repository navigation
Conversation
…benchmark bot Temporary. Adds experiment types and benchmark groups so the bot can compare figure 4.1 and 5.1 with Up, Down and devanbenz's remainder in one run. The next commit removes them.
…benchmark bot Temporary. Adds experiment types and benchmark groups so the bot can compare figure 4.1 and 5.1 with Up, Down and devanbenz's remainder in one run. The next commit removes them.
… fix divisor docs
…ivisors of 2^N - 1
|
run benchmark divisor baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: "-C target-cpu=x86-64"
resources:
arch: amd64 |
|
run benchmark divisor baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: "-C target-cpu=x86-64-v2"
resources:
arch: amd64 |
|
run benchmark divisor baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: "-C target-cpu=x86-64-v3"
resources:
arch: amd64 |
|
run benchmark divisor baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: "-C target-cpu=x86-64-v4"
resources:
arch: amd64 |
|
run benchmark divisor baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: "-C target-cpu=native"
resources:
arch: amd64 |
|
🤖 Benchmark starting (GKE) | trigger Target: divisor Sharding factor: 1 (1 workers). Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=x86-64-v2
resources:
arch: amd64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
run benchmark divisor baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
resources:
arch: arm64 |
|
🤖 Benchmark starting (GKE) | trigger Target: divisor Sharding factor: 1 (1 workers). Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=x86-64
resources:
arch: amd64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: divisor Sharding factor: 1 (1 workers). Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
resources:
arch: arm64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: divisor Sharding factor: 1 (1 workers). Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=native
resources:
arch: amd64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: divisor Sharding factor: 1 (1 workers). Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=x86-64-v4
resources:
arch: amd64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: divisor Sharding factor: 1 (1 workers). Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=x86-64-v3
resources:
arch: amd64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: divisor Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
resources:
arch: arm64
shards: 1
DetailsPer-runner informationdivisor — shard 1/1Node: gk3-benchmark-cluster-nap-fyxnz5ju-5cccd408-jnjp Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisorCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: divisor Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=x86-64-v2
resources:
arch: amd64
shards: 1
DetailsPer-runner informationdivisor — shard 1/1Node: gk3-benchmark-cluster-nap-k33w7onn-e576f1d7-jww2 Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisorCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: divisor Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=x86-64-v3
resources:
arch: amd64
shards: 1
DetailsPer-runner informationdivisor — shard 1/1Node: gk3-benchmark-cluster-nap-k33w7onn-e576f1d7-mqdc Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisorCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: divisor Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=x86-64-v4
resources:
arch: amd64
shards: 1
DetailsPer-runner informationdivisor — shard 1/1Node: gk3-benchmark-cluster-nap-k33w7onn-9caddbb8-bsbv Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisorCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: divisor Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=x86-64
resources:
arch: amd64
shards: 1
DetailsPer-runner informationdivisor — shard 1/1Node: gk3-benchmark-cluster-nap-k33w7onn-56f094e3-r4wz Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisorCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: divisor Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=native
resources:
arch: amd64
shards: 1
DetailsPer-runner informationdivisor — shard 1/1Node: gk3-benchmark-cluster-nap-k33w7onn-7bca84a4-mhsn Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisorCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
run benchmark divisor baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: "-C target-feature=+sve"
resources:
arch: arm64 |
|
run benchmark divisor baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: "-C target-feature=+sve2"
resources:
arch: arm64 |
|
run benchmark divisor baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: "-C target-cpu=neoverse-v2"
resources:
arch: arm64 |
|
🤖 Benchmark starting (GKE) | trigger Target: divisor Sharding factor: 1 (1 workers). Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-feature=+sve2
resources:
arch: arm64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: divisor Sharding factor: 1 (1 workers). Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-feature=+sve
resources:
arch: arm64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: divisor Sharding factor: 1 (1 workers). Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=neoverse-v2
resources:
arch: arm64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: divisor Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-cpu=neoverse-v2
resources:
arch: arm64
shards: 1
DetailsPer-runner informationdivisor — shard 1/1Node: gk3-benchmark-cluster-nap-12q2mp2q-cbfb8ed3-jvsm Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisorCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: divisor Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-feature=+sve2
resources:
arch: arm64
shards: 1
DetailsPer-runner informationdivisor — shard 1/1Node: gk3-benchmark-cluster-nap-fyxnz5ju-5cccd408-ms5g Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisorCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: divisor Comparing 4641eda (4641eda) to 46ab603 diff Run configurationrun benchmark divisor
baseline:
ref: 46ab603e26b22d444203d660602605e53a2a8733
changed:
ref: 4641eda8ce81922fa2ce9ebf5143700a994b73c0
env:
RUSTFLAGS: -C target-feature=+sve
resources:
arch: arm64
shards: 1
DetailsPer-runner informationdivisor — shard 1/1Node: gk3-benchmark-cluster-nap-fyxnz5ju-5cccd408-6k77 Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench divisorCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 💬 : All nine bot comparisons have completed, including the additional SVE, SVE2, and Neoverse-V2 runs. The rewrite has substantial x86 wins, but the ARM results remain mixed.
|
Draft benchmarking follow-up to #11467 and this discussion. This branch is stacked on its head,
46ab603e26b22d444203d660602605e53a2a8733. Until the parent is merged and this branch is rebased, the main-relative PR diff includes the parent changes; the incremental diff is just the signed-arithmetic rewrite.Which issue does this PR close?
Relates to #11421; depends on #11467.
Rationale for this change
The signed high-product expression can generate expensive scalar or vector multiplication sequences. This draft tries an equivalent unsigned high product with explicit sign correction for both
i32andi64, and requests measurements against #11467's exact head before deciding whether the tradeoffs are worthwhile.What changes are included in this PR?
For the always-negative multiplier
m, replacen + signed_high(m * n)withunsigned_high(bits(m) * bits(n)) - ((n >> (BITS - 1)) & m), using wrapping subtraction. The signed macro gains matching unsigned narrow/wide types. Constructors, quotient rounding, remainder calculation, public APIs and the benchmark source are unchanged relative to #11467.The correction follows libdivide's signed high-product implementation, specialized so its
-ncancels the existing+n. This follows devanbenz and mbutrovich's codegen discussion; mightsleep's absolute-dividend approach is a related, different alternative.Are these changes tested?
The existing 376
arrow-bufferunit tests pass. An external Hegel harness compared all four divisor types with Rust's integer operations, including negative divisors, boundary values, overflow behavior, const evaluation, and batches, with overflow checks on/off across five x86-64 target settings. No new test dependency or benchmark cases are added here. Scoped Clippy, formatting and spelling checks pass; the full workspace suite was not run locally.All 48 unchanged
divisorbenchmark cases were run on an AMD Ryzen AI 9 HX PRO 470 with Rust 1.99.1 / LLVM 23.1.1 and thin LTO. Below are original/rewrite time ratios for divisors 7 and 13; above 1 is faster:These are exploratory measurements: four interleaved processes per case, 0.25 s warmup / 0.75 s measurement, with some substantial repeat noise. Unchanged controls also regressed (for example AVX2
u32 % 7by about 27%); those effects are unresolved. The draft is for independent bot measurements, not a claim of a universal improvement. Bot requests pin both commits and apply identical flags to both sides.Are there any significant user-facing changes?
No additional public API or intended behavior changes relative to #11467.
AI assistance was used to develop and test this experiment.