Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARROW-11839: [C++] Use xsimd for generation of accelerated bit-unpacking #9614

Closed
wants to merge 2 commits into from

Conversation

pitrou
Copy link
Member

@pitrou pitrou commented Mar 2, 2021

The custom per-ISA code generation scripts (AVX2, AVX512) are replaced with a single code generation script that outputs xsimd code for any SIMD bit-width, in an ISA-agnostic way.

Also add a Neon optimized version of bit-unpacking that leverages the generated code for 128-bit SIMD.

@pitrou
Copy link
Member Author

pitrou commented Mar 2, 2021

Merging this is currently blocked by xsimd issues xtensor-stack/xsimd#421 and xtensor-stack/xsimd#422.

@pitrou
Copy link
Member Author

pitrou commented Mar 2, 2021

@jianxind @cyb70289 Feel free to take a look. It would be interesting to get performance numbers on Neon (one affected benchmark should be parquet-encoding-benchmark, perhaps also parquet-column-io-benchmark and parquet-arrow-reader-writer-benchmark).

@pitrou pitrou force-pushed the ARROW-11839-xsimd-bpacking branch from 3ec021f to ad11400 Compare March 2, 2021 16:42
@github-actions
Copy link

github-actions bot commented Mar 2, 2021

@cyb70289
Copy link
Contributor

cyb70289 commented Mar 3, 2021

I tested Neon performance of parquet-encoding-benchmark, parquet-column-io-benchmark and parquet-arrow-reader-writer-benchmark. No obvious difference found against master branch.

Compiler does good optimization for bpacking code. Disassembler shows shift and and operations are vectorized. https://godbolt.org/z/41G8Ta

@pitrou
Copy link
Member Author

pitrou commented Mar 3, 2021

Interesting, thank you.

@pitrou pitrou force-pushed the ARROW-11839-xsimd-bpacking branch 2 times, most recently from c442ff6 to 74b577f Compare April 6, 2021 16:27
@nealrichardson
Copy link
Contributor

Is there anything left to do here (other than perhaps rebase and hope CI is fixed)?

The custom per-ISA code generation scripts (AVX2, AVX512) are replaced with a
single code generation script that outputs xsimd code for any SIMD bit-width,
in an ISA-agnostic way.

Also add a Neon optimized version of bit-unpacking that leverages the generated
code for 128-bit SIMD.
@pitrou pitrou force-pushed the ARROW-11839-xsimd-bpacking branch from 74b577f to 57e0857 Compare April 13, 2021 11:21
@pitrou
Copy link
Member Author

pitrou commented Apr 13, 2021

@nealrichardson We must make sure that compilation works on all C++ builds.

@pitrou
Copy link
Member Author

pitrou commented Apr 13, 2021

@pitrou
Copy link
Member Author

pitrou commented Apr 13, 2021

Will merge now.

@pitrou pitrou closed this in d7558bf Apr 13, 2021
@pitrou pitrou deleted the ARROW-11839-xsimd-bpacking branch April 13, 2021 16:14
Dandandan pushed a commit to Dandandan/arrow that referenced this pull request Apr 14, 2021
The custom per-ISA code generation scripts (AVX2, AVX512) are replaced with a single code generation script that outputs xsimd code for any SIMD bit-width, in an ISA-agnostic way.

Also add a Neon optimized version of bit-unpacking that leverages the generated code for 128-bit SIMD.

Closes apache#9614 from pitrou/ARROW-11839-xsimd-bpacking

Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
GeorgeAp pushed a commit to sirensolutions/arrow that referenced this pull request Jun 7, 2021
The custom per-ISA code generation scripts (AVX2, AVX512) are replaced with a single code generation script that outputs xsimd code for any SIMD bit-width, in an ISA-agnostic way.

Also add a Neon optimized version of bit-unpacking that leverages the generated code for 128-bit SIMD.

Closes apache#9614 from pitrou/ARROW-11839-xsimd-bpacking

Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
michalursa pushed a commit to michalursa/arrow that referenced this pull request Jun 10, 2021
The custom per-ISA code generation scripts (AVX2, AVX512) are replaced with a single code generation script that outputs xsimd code for any SIMD bit-width, in an ISA-agnostic way.

Also add a Neon optimized version of bit-unpacking that leverages the generated code for 128-bit SIMD.

Closes apache#9614 from pitrou/ARROW-11839-xsimd-bpacking

Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
michalursa pushed a commit to michalursa/arrow that referenced this pull request Jun 13, 2021
The custom per-ISA code generation scripts (AVX2, AVX512) are replaced with a single code generation script that outputs xsimd code for any SIMD bit-width, in an ISA-agnostic way.

Also add a Neon optimized version of bit-unpacking that leverages the generated code for 128-bit SIMD.

Closes apache#9614 from pitrou/ARROW-11839-xsimd-bpacking

Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants