Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-5303

[Rust] Add SIMD vectorization of numeric casts

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Abandoned
    • 0.13.0
    • None
    • Rust
    • 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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            nevi_me Neville Dipale
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: