Repository navigation
perf(arrow-arith): vectorize checked decimal add, sub and mul - #12062
mbutrovich wants to merge 6 commits into
Conversation
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
run benchmark arithmetic_kernels |
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
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: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
arch: amd64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
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 |
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-oclc6q2e-df121e2a-ln85 Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C target-cpu=x86-64-v3 -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
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: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-oclc6q2e-64c98ba8-w28v Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C target-cpu=x86-64-v3
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-11j2ashw-1b098063-44mm Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-11j2ashw-5b2a8cd0-98fd Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-11j2ashw-69d831de-tpgp Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (c5774ac) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C target-cpu=x86-64-v3 -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-11j2ashw-4803721b-kr8v Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
run benchmark arithmetic_kernels |
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (cffdb05) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (cffdb05) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (cffdb05) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
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: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (cffdb05) to 5cf1987 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 5cf1987a91
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
arch: amd64
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (41647fd) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C target-cpu=x86-64-v3 -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
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: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (41647fd) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-ez8gwx9u-a9459978-96wb Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (41647fd) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1x7drz99-ecac925a-lwl9 Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (41647fd) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1x7drz99-ecac925a-cdz2 Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (41647fd) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C target-cpu=x86-64-v3
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1x7drz99-4b7c01e4-6sl9 Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (41647fd) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal
RUSTFLAGS: -C target-cpu=x86-64-v3 -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1x7drz99-ecac925a-k54z Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
run benchmark arithmetic_kernels |
|
run benchmark arithmetic_kernels |
|
run benchmark arithmetic_kernels |
|
run benchmark arithmetic_kernels |
|
run benchmark arithmetic_kernels |
|
run benchmark arithmetic_kernels |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
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: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
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: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1w1y66a2-83be8f18-trzm Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1w1y66a2-83be8f18-tdfb Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
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 starting (GKE) | trigger Target: arithmetic_kernels Sharding factor: 1 (1 workers). Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
RUSTFLAGS: -C target-cpu=x86-64-v3 -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
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: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1jwtivje-76dcaf12-5hrm Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1jwtivje-ad4e1533-frd7 Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
RUSTFLAGS: -C target-cpu=x86-64-v3
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1jwtivje-76dcaf12-2tws Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: arithmetic_kernels Comparing vectorize-checked-decimal-arithmetic (f933cfa) to 362eb22 diff Run configurationrun benchmark arithmetic_kernels
baseline:
ref: 362eb2294d
env:
BENCH_FILTER: ^decimal(64_multiply|128_divide)
RUSTFLAGS: -C target-cpu=x86-64-v3 -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
arch: amd64
shards: 1
DetailsPer-runner informationarithmetic_kernels — shard 1/1Node: gk3-benchmark-cluster-nap-1jwtivje-ad4e1533-dcrz Instance: c4-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench arithmetic_kernelsCPU Details (lscpu)Resource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
|
|
andygrove
left a comment
There was a problem hiding this comment.
Thanks @mbutrovich, this looks good to me. I checked the sign-bit overflow logic for add/sub, the widening multiplies, the masking of overflow in null slots (including offsets), and the fallback to the checked kernel, and they all look correct. I left a few non-blocking nits.
| c.bench_function(&format!("decimal64_add({null_density})"), |bench| { | ||
| bench.iter(|| hint::black_box(add(&a64, &b64).unwrap())) | ||
| }); | ||
| c.bench_function(&format!("decimal64_multiply({null_density})"), |bench| { |
There was a problem hiding this comment.
nit: The description says Decimal32 and Decimal64 add/sub now vectorize, but there's no Decimal32 benchmark and no decimal64_subtract. Could you add them? The Decimal32 path in particular (widening i32 to i64 for mul, sign-bit add/sub) has no coverage, so a slowdown there like the one you saw for i256 would go unnoticed.
| /// through a pointer. The checked `add` cases of the `arithmetic_kernels` | ||
| /// benchmark measure this. | ||
| #[inline(never)] | ||
| fn collect_overflowing<N>( |
There was a problem hiding this comment.
nit: Could you add numbers to the PR description comparing this to a safe version (e.g. Vec::with_capacity + push/extend with the same #[inline(never)] boundary)? Since the gain depends on LLVM's inlining choices for a given target, it would be good to have a record that the unsafe is what produces the gain.
| overflow |= overflowed; | ||
| written += 1; | ||
| } | ||
| debug_assert!(written <= values.capacity()); |
There was a problem hiding this comment.
nit: written <= values.capacity() can't fail, because the zip is bounded by spare_capacity_mut(). It doesn't check the set_len precondition either. Maybe drop it, or capture iter.len() up front and debug_assert_eq!(written, len), which at least catches an iterator that reports the wrong length.
Which issue does this PR close?
N/A.
Rationale for this change
decimal_opruns decimaladd,subandmul, includingadd_wrapping,sub_wrappingandmul_wrapping, throughtry_op!with the checked operations, which return at the first overflow. DataFusion callsadd_wrappingfor+(binary.rs), so its default decimal arithmetic runs one row at a time. #12058 does the same change for integers.What changes are included in this PR?
add,subandmulcompute the wrapping result and an overflow flag for every slot in one pass, with equal scales and when one side is rescaled.Decimal32andDecimal64addandsubvectorize.Decimal128stays scalar and loses the per-row branch and the operand spills of the error path.i128mulmultiplies ini64when both operands fit.Decimal64mulusesoverflowing_mul, as in perf(arrow-arith): vectorize checked integeradd,subandmul#12058.Decimal256keeps the checked kernel. With-C target-cpu=x86-64-v3, LLVM vectorizes the one-passi256add loop two rows at a time, packing the carries into vector registers with about 20 stack spills per iteration, and it measured 0.75x (perf(arrow-arith): vectorize checked decimaladd,subandmul#12062 (comment)).OverflowingOp,overflowing_opandcollect_overflowingare the same as in perf(arrow-arith): vectorize checked integeradd,subandmul#12058, so whichever PR lands second drops its copy.collect_overflowingwrites into theVec's spare capacity and callsset_lenwith the number of slots it wrote. Withcollect, LLVM sometimes left the loop insidecollectout of line, where it loaded and stored the overflow flag on every row. Which instances it left out of line changed with the closure and the target: on generic aarch64 andneoverse-n1it was rescaledDecimal128add, which the bot measured at 0.83x on Neoverse-V2. Writing the values in our own loop withoutunsafecost 30% to 40% with a zero-filledVec, lost vectorization withpush, and was slower in a two-pass,unzipor chunked form.Vec::try_reserve_exact, so an allocation failure returnsArrowError::MemoryError.add_wrapping.Are these changes tested?
New tests in
arrow-arith/src/numeric.rscompare the kernels with the scalar checked operations at the edge values of every decimal type, with equal scales and with either side rescaled, as arrays, as one-row slices, and with a scalar on either side. They also coverDecimal128mulon both sides of thei64bounds. Another test moves one overflowing row through a 100-row batch of every decimal type, including rows where only the rescale overflows. A third checks a rescaled scalar, including one whose rescale overflows, against valid, all-null, and empty arrays. Miri passes these tests, except the position test, which checks vectorized code that Miri doesn't run.The overflow cases are expected to be slower, because they pay for the new pass, the null-slot check, and then the checked kernel. With
fail_on_overflowor ANSI mode, an overflow fails the query, so that cost is paid at most once per partition. A batch that overflows only in null slots pays for the pass and the null-slot check:decimal128_add_null_slot_overflowmeasured 0.88x on Neoverse-V2 and 0.86x on Xeon 8581C, becauseDecimal128doesn't vectorize, and 1.45x withx86-64-v3.The extra pass also costs code size: 166 KiB for
decimal_opand the new helpers across the four decimal types, against 30 KiB before, in the thin-LTO bench binary on aarch64. The checked kernels that the fallback calls are unchanged.decimal128_multiply_wide(0.1), where half the values don't fit ini64, measured 0.89x on Neoverse-V2. On that input thei64branch ini128mulgoes either way at random, and the one pass also multiplies the null slots that the checked kernel skips.Bot runs: Neoverse-V2 default and aligned, Xeon 8581C default and aligned, and Xeon 8581C with
-C target-cpu=x86-64-v3default and aligned. Those runs measured 41647fd. f933cfa changes only thei64multiply, and itsDecimal64mulruns are: Neoverse-V2 default and aligned, Xeon 8581C default and aligned, andx86-64-v3default and aligned.Are there any significant user-facing changes?
No.
AI Disclosure
I wrote this PR with help from Claude but understand and support the core approach, implementation, and test coverage.