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

[Rust] Add SIMD vectorization of numeric casts

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 0.13.0
    • Fix Version/s: None
    • Component/s: Rust
    • Labels:
      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

            • Assignee:
              Unassigned
              Reporter:
              nevi_me Neville Dipale
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: