Neville Dipale created ARROW-5303:
-------------------------------------

             Summary: [Rust] Add SIMD vectorization of numeric casts
                 Key: ARROW-5303
                 URL: https://issues.apache.org/jira/browse/ARROW-5303
             Project: Apache Arrow
          Issue Type: Improvement
          Components: Rust
    Affects Versions: 0.13.0
            Reporter: Neville Dipale


To improve the performance of cast kernels, we need SIMD support in numeric 
casts.

An initial exploration shows that we can't trivially add SIMD casts between our 
Arrow T::Simd types, because `packed_simd` only supports a cast between T::Simd 
types that have the same number of lanes.

This means that adding casts from f64 to i64 (same lane length) satisfies the 
bound trait `where TO::Simd : packed_simd::FromCast<FROM::Simd>`, but f64 to 
i32 (different lane length) doesn't.

We would benefit from investigating work-arounds to this limitation. Please see 
[github::nevi_me::arrow/\{branch:simd-cast}/../kernels/cast.rs|[https://github.com/nevi-me/arrow/blob/simd-cast/rust/arrow/src/compute/kernels/cast.rs#L601]]
 for an example implementation that's limited by the differences in lane length.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to