Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Abandoned
-
0.13.0
-
None
-
None
Description
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 for an example implementation that's limited by the differences in lane length.