You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Neville Dipale (Jira)" <ji...@apache.org> on 2021/01/10 06:48:00 UTC

[jira] [Resolved] (ARROW-9269) [Rust] Cargo.toml flag to disable SIMD for targeting stable Rust

     [ https://issues.apache.org/jira/browse/ARROW-9269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Neville Dipale resolved ARROW-9269.
-----------------------------------
    Resolution: Implemented

> [Rust] Cargo.toml flag to disable SIMD for targeting stable Rust
> ----------------------------------------------------------------
>
>                 Key: ARROW-9269
>                 URL: https://issues.apache.org/jira/browse/ARROW-9269
>             Project: Apache Arrow
>          Issue Type: New Feature
>          Components: Rust
>    Affects Versions: 0.16.0, 0.17.0
>         Environment: WSL2 w/Ubuntu 18.0.4, rustc 1.44.1 stable
>            Reporter: Adam Shirey
>            Priority: Minor
>
> The Parquet Rust crate requires nightly Rust, apparently due to the use of packed_simd, which [is using some nightly features.|https://github.com/rust-lang/packed_simd/blob/54b19fb5905b9a6dcdcad7019e72c9067f0af2a4/src/lib.rs#L202].
> After some digging around, I found that [PR 5269|https://github.com/apache/arrow/pull/5269/commits] / ARROW-6303 specifically calls for making SIMD optional, and it looks like this should be possible to use this crate in stable. According to [the changelog for the Cargo.toml|https://github.com/apache/arrow/pull/5269/commits/2d617e7358e2d18879a58037bfd41692392e0ce9], and based on the README for [Native Rust implementation of Apache Arrow|https://github.com/apache/arrow/blob/6299c25ffd579ba4773d7b7b4cbab9b86e0847f4/rust/arrow/README.md#simd-single-instruction-multiple-data], it looks like one can disable SIMD for Arrow.
> However, this doesn't apply to the Parquet crate. (I must admit that I'm not terribly familiar with the distinction between Arrow and Parquet - memory format vs disk format?) I tried disabling the feature in my Cargo.toml:
> {{[dependencies.parquet]}}
>  {{version = "0.17"}}
>  {{default-features = false}}
> And I also tried {{cargo build --no-default-features}}, but the Parquet crate seems to still require nightly. Maybe a similar change needs to be applied to the Parquet code?
> Is it possible to use the Parquet crate on stable Rust? If so, how? And by disabling SIMD, what are the (approximate) performance implications?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)