Commits


Paddy Horan authored and Andy Grove committed a374c3c3af0
ARROW-4490: [Rust] Add explicit SIMD vectorization for boolean ops in "array_ops" This PR adds explicit SIMD for boolean ops, `and`, `or` and `not`. I moved `array_ops` into the new `compute` module. From the outside this module serves the same purpose as the previous `array_ops` module (all kernels will be accessible from this namespace) and the remaining `array_ops` implementations are exposed via the `compute` module currently. As I add explicit SIMD for more kernels they will migrate from `array_ops` into their own modules under `compute`. I am keeping sub-modules under `compute` (as apposed to compute.rs) as SIMD can get rather verbose and it seems that `compute` may expand in the future. I have included benchmarks where I re-create the old default implementations for others to take a look at the speed improvement. It's not clear whether we need the non-SIMD versions in the benchmarks long term but I left them in for now to make the non-SIMD/SIMD comparison. There are likely more optimizations possible (processing the values and null bit buffers in a single loop for instance) but I wanted to get the cleanest impl first and add further optimizations later if needed. Author: Paddy Horan <paddyhoran@hotmail.com> Closes #3641 from paddyhoran/boolean-kernels and squashes the following commits: 89588e6 <Paddy Horan> Removed `compute` from `mod.rs` f9ae58a <Paddy Horan> Updated benchmarks e321cec <Paddy Horan> Updated `not` to use trait impls da16486 <Paddy Horan> Implemented `Not` for `Buffer` f21253d <Paddy Horan> Updated datafusion and comments a3c01c8 <Paddy Horan> Added SIMD binary boolean kernels