Execute tensor product functions with RowFn - #9769
Conversation
Merging this PR will regress 5 benchmarks
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | WallTime | mul_u64_nonnull_neon |
15.4 µs | 20.5 µs | -24.89% |
| ❌ | Simulation | decompress[u64, (4000, 1024)] |
70.5 µs | 86 µs | -18.03% |
| ❌ | WallTime | mul_i64_nonnull_neon |
17.3 µs | 20.1 µs | -13.81% |
| ❌ | WallTime | multiply_shapes_neon[(16384, PerRowPerRow)] |
17.4 µs | 20.1 µs | -13.43% |
| ❌ | WallTime | words_gather_scalar_avx2[65536] |
8.3 µs | 9.4 µs | -11.9% |
| ⚡ | Simulation | column_x_constant[2] |
517.8 µs | 131 µs | ×4 |
| ⚡ | Simulation | column_x_constant[32] |
473.9 µs | 131 µs | ×3.6 |
| ⚡ | WallTime | filtered_owned_i64_avx2[NineNullsInTen] |
36.8 µs | 13.3 µs | ×2.8 |
| ⚡ | WallTime | filtered_owned_i64_avx512[NineNullsInTen] |
36.9 µs | 13.4 µs | ×2.7 |
| ⚡ | WallTime | filtered_owned_i64_avx2[OneNullInEight] |
56.1 µs | 22.2 µs | ×2.5 |
| ⚡ | Simulation | column_x_constant[256] |
742.4 µs | 306 µs | ×2.4 |
| ⚡ | WallTime | filtered_owned_i64_avx512[OneNullInEight] |
62.3 µs | 26.3 µs | ×2.4 |
| ⚡ | WallTime | filtered_sink_i64_avx2[NineNullsInTen] |
36.8 µs | 16.4 µs | ×2.3 |
| ⚡ | WallTime | filtered_sink_i64_avx512[NineNullsInTen] |
36.9 µs | 16.5 µs | ×2.2 |
| ⚡ | Simulation | column_x_extension_constant[256] |
573.8 µs | 274.4 µs | ×2.1 |
| ⚡ | Simulation | column_x_column[2] |
201 µs | 101.8 µs | +97.52% |
| ⚡ | WallTime | filtered_sink_i64_avx512[OneNullInEight] |
62.2 µs | 31.5 µs | +97.47% |
| ⚡ | Simulation | column_x_extension_constant[2] |
274 µs | 147.9 µs | +85.31% |
| ⚡ | Simulation | nullable[2] |
591.4 µs | 323.9 µs | +82.57% |
| ⚡ | Simulation | non_nullable[2] |
593.6 µs | 329 µs | +80.44% |
| ... | ... | ... | ... | ... | ... |
ℹ️ 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/row-fn-tensor-products-v2 (4bd332d) with ct/row-fn-tensor-l2-v2 (929ae6d)2
Footnotes
-
218 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. ↩
-
No successful run was found on
ct/row-fn-tensor-l2-v2(c11ae04) during the generation of this report, so b771900 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩
f280e27 to
9a47353
Compare
9a47353 to
fa4e555
Compare
6e3be68 to
288aec3
Compare
288aec3 to
4f0fa1a
Compare
4f0fa1a to
b37f665
Compare
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
b37f665 to
4bd332d
Compare
Summary
Moves inner product and cosine similarity to RowFn without changing their arithmetic contracts.
Changes
Inner product keeps the existing left-to-right multiply-and-sum order. Cosine computes that dot product followed by both L2 norms and the existing zero-denominator guard, with no encoded reduction, reassociation, or constant-norm shortcut. Tests cover nulls, empty and zero-width rows, IEEE overflow and underflow, and bitwise agreement between constant encodings and materialized rows.