Adam Shirey created ARROW-9269:
----------------------------------
Summary: [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.17.0, 0.16.0
Environment: WSL2 w/Ubuntu 18.0.4, rustc 1.44.1 stable
Reporter: Adam Shirey
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)