Repository navigation
Widen list take piece bounds to u64 before dispatch - #10738
Conversation
eb7a1f1 to
5d7e3b8
Compare
Merging this PR will degrade performance by 17.76%4 warnings, 1 note
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing Footnotes
|
|
This is really only a slow down if average list size is 1-4, otherwise it's noise |
5d7e3b8 to
2777b51
Compare
The piecewise list take compiled its gather kernels for every combination of piece start, piece length, list offset and output offset type (4 x 4 x 4 x 4). The kernels read each piece start and length only once per piece, so the take now widens them to u64 and dispatches only on the offset types. The widening does not copy when the pieces are already u64, which is the type that the list take produces. vortex-array release __text: 14,012,988 -> 12,798,204 bytes (-1.21 MB). Signed-off-by: Robert Kruszewski <github@robertk.io> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2777b51 to
699ffe0
Compare
The list take by
PiecewiseSequencecompiled its gather kernels for every combination of piece start, piece length, list offset and output offset type (4 x 4 x 4 x 4). The kernels read each piece start and length only once per piece. The inner loop over list offsets depends only on the offset types. The take now widens the starts and lengths tou64and dispatches only on the offset types.The widening does not copy when the pieces are already
u64, which is the type that the list take itself produces. For other widths it copies the piece arrays once. That copy is proportional to the number of pieces, not to the number of elements.vortex-arrayrelease__text(macOS arm64)