Repository navigation
perf(compute): tile checked lane kernels consistently - #10299
connortsui20 wants to merge 1 commit into
Conversation
Merging this PR will degrade performance by 1.27%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | WallTime | mul_u16_nonnull_avx2 |
11.1 µs | 21 µs | -46.88% |
| ❌ | WallTime | mul_u16_nonnull_avx512 |
11.1 µs | 19.1 µs | -41.7% |
| ❌ | WallTime | threshold_neon[8] |
1.4 µs | 2.3 µs | -40.25% |
| ❌ | WallTime | filter_neon[8] |
900 ns | 1,394 ns | -35.44% |
| ❌ | WallTime | mul_u8_nonnull_avx2 |
20.3 µs | 27.8 µs | -26.98% |
| ❌ | WallTime | mul_u8_nonnull_avx512 |
22.3 µs | 29.4 µs | -24.07% |
| ❌ | WallTime | mul_u32_nonnull_avx2 |
12.7 µs | 16.6 µs | -23.73% |
| ❌ | WallTime | threshold_neon[64] |
2.5 µs | 3.3 µs | -23.31% |
| ❌ | WallTime | filter_neon[80] |
2.5 µs | 3.2 µs | -22.31% |
| ❌ |
Simulation | random_i128[0.01] |
3.8 µs | 4.8 µs | -20.62% |
| ❌ | WallTime | filter_neon[64] |
1.8 µs | 2.2 µs | -19.24% |
| ❌ |
Simulation | test_scan_filter[int] |
3 ms | 3.8 ms | -19.08% |
| ❌ | WallTime | threshold_neon[80] |
3.6 µs | 4.4 µs | -18.41% |
| ❌ | WallTime | add_u32_nonnull_avx2 |
12.7 µs | 14.9 µs | -14.54% |
| ❌ | Simulation | sum_v2_i64 |
194.2 µs | 224.6 µs | -13.54% |
| ❌ | Simulation | sum_i64 |
194.7 µs | 224.7 µs | -13.36% |
| ❌ | WallTime | scalar_subtract_neon |
10.9 µs | 12.4 µs | -12.68% |
| ❌ | WallTime | mul_u32_nonnull_avx512 |
11.8 µs | 13.5 µs | -12.55% |
| ❌ | WallTime | bitpack_blocked_compress_avx2 |
6.8 µs | 7.7 µs | -11.78% |
| ⚡ | WallTime | mul_u64_nonnull_avx512 |
52.2 µs | 28.9 µs | +80.74% |
| ... | ... | ... | ... | ... | ... |
ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ct/checked-lane-chunks (91e10a8) with develop (18903b1)
Footnotes
-
12 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals Profiling 📖Commits: PR datafusion / vortex-file-compressed / ns (1.000x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb NVMe 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.012x ➖, 0↑ 1↓)
datafusion / parquet / ns (0.994x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.987x ➖, 3↑ 3↓)
duckdb / parquet / ns (1.017x ➖, 0↑ 1↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.005x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.001x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.981x ➖, 1↑ 0↓)
duckdb / parquet / ns (0.997x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb S3 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.092x ➖, 1↑ 2↓)
datafusion / parquet / ns (1.218x ➖, 0↑ 4↓)
duckdb / vortex-file-compressed / ns (1.105x ➖, 0↑ 1↓)
duckdb / parquet / ns (1.145x ➖, 0↑ 1↓)
|
Benchmarks: Clickbench on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.996x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.005x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.010x ➖, 0↑ 2↓)
duckdb / parquet / ns (0.992x ➖, 1↑ 0↓)
No file size changes detected. |
Benchmarks: TPC-DS SF=1 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.997x ➖, 2↑ 0↓)
datafusion / parquet / ns (0.999x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.012x ➖, 1↑ 6↓)
duckdb / parquet / ns (0.994x ➖, 1↑ 1↓)
No file size changes detected. |
Benchmarks: TPC-H SF=10 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.001x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.004x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.997x ➖, 1↑ 1↓)
duckdb / parquet / ns (0.993x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Statistical and Population Genetics 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.002x ➖, 0↑ 0↓)
datafusion / parquet / ns (0.997x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.004x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.003x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on S3 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.124x ➖, 1↑ 5↓)
datafusion / parquet / ns (1.022x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.173x ➖, 1↑ 7↓)
duckdb / parquet / ns (1.068x ➖, 0↑ 0↓)
|
Benchmarks: Clickbench Sorted on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.014x ➖, 0↑ 1↓)
datafusion / parquet / ns (0.991x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.000x ➖, 1↑ 2↓)
duckdb / parquet / ns (1.023x ➖, 0↑ 0↓)
File Size Changes (100 files changed, -0.0% overall, 42↑ 58↓)
Totals:
|
Signed-off-by: Connor Tsui <[email protected]>
83838af to
91e10a8
Compare
|
ok so I've been doing a bunch of LLVM investigation, and really LLVM should be the one dealing with this correctly. I'll have a few LLVM PRs that I will submit. |
Summary
Edit: Once I'm done with other work I am going to go dive into LLVM to see if there is something there that can be updated instead of us doing this hack
Adding Narrow changed LLVM's unrolling of the existing checked 64-bit multiplication loop on Linux ARM, even though the loop's source was unchanged. Chunking
map_checked_intogives LLVM a fixed trip count for the checked loop, as the other unmasked lane kernels already do.Known limitation: chunking also regresses other benchmarks, particularly unsigned multiplication on AVX2 and AVX512. Making the chunk length const generic and removing forced inlining made the regressions worse, so that experiment was reverted.
Changes
Uses the same chunk size as the other unmasked lane kernels, with a runtime count and an
#[inline(always)]helper. Failure evidence combines across full chunks and the remainder.