[ https://issues.apache.org/jira/browse/ARROW-5303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rok Mihevc updated ARROW-5303: ------------------------------ External issue URL: https://github.com/apache/arrow/issues/21767 > [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 > Priority: Minor > > 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 (v8.20.10#820010)