Commits


Jörn Horstmann authored and Jorge C. Leitao committed bc5b74be247
ARROW-10216: [Rust] Simd implementation for primitive min/max kernels This refactors the simd aggregation to a reusable trait and adds implementations for min and max. It also handles NaN values now the same way as the sort kernel, meaning that NaN is considered to be greater than any other non-null value. Some tests were failing with the simd feature active because the different order of additions rounded to a slightly different result. I reused the comparison function that @vertexclique implemented in his recent PR. **Update:** Benchmarks (`aggregate_kernels`) show a 8x improvement with the simd feature: - sum performance stays the same at 37ns without nulls and 95 with nulls - min without nulls improves from 595ns to 75ns - min with nulls improves from 1725ns to 197ns Without simd feature the performance decreased due to the added NaN handling: - min without nulls from 595ns to 1057ns One strange result is that min with nulls improved from 1725ns to 1371ns despite now including NaN handling. Closes #8685 from jhorstmann/ARROW-10216-simd-optimize-min-max-kernel Lead-authored-by: Jörn Horstmann <joern.horstmann@signavio.com> Co-authored-by: Jörn Horstmann <git@jhorstmann.net> Co-authored-by: Mahmut Bulut <vertexclique@gmail.com> Signed-off-by: Jorge C. Leitao <jorgecarleitao@gmail.com>