GH-50503: [Parquet] Remove SVE128 unpack#50611
Conversation
|
|
|
@github-actions crossbow submit wheel-manylinux-2-28-cp313-cp313-arm64 |
|
Revision: 84f8209 Submitted crossbow builds: ursacomputing/crossbow @ actions-8af012a39a
|
|
@github-actions crossbow submit wheel-manylinux-2-28-cp313-cp313-arm64 |
|
Revision: 3458a70 Submitted crossbow builds: ursacomputing/crossbow @ actions-b71ab30610
|
|
The wheel can be downloaded from the summary page artifacts on the job: |
|
Can we try to understand what happens? For example look for symbols with |
|
The best hypothesis I have goes as follows (this was heavily AI assisted): We had a similar problem with the ODR violation, but the cause is different here (latest xsimd has the ODR fix). While there is some uncertainty in this diagnosis, the presence of both |
There was a problem hiding this comment.
Pull request overview
Removes the SVE128-specific bit-unpacking implementation and associated runtime-dispatch hooks in Arrow C++’s bpacking utility to avoid conflicts with SVE256 (ODR/LTO concerns) and to simplify the SIMD surface area for Parquet decode-related paths.
Changes:
- Removed SVE128 from
bpackingdynamic dispatch target list. - Deleted the SVE128 “128_alt” implementation and removed its build wiring.
- Dropped SVE128-specific unit test and benchmark coverage.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| cpp/src/arrow/util/bpacking.cc | Removes SVE128 from runtime dispatch targets for unpack. |
| cpp/src/arrow/util/bpacking_test.cc | Removes the SVE128-specific unpack test. |
| cpp/src/arrow/util/bpacking_simd_internal.h | Removes SVE128 “ALT” unpack declarations/exports. |
| cpp/src/arrow/util/bpacking_simd_128_alt.cc | Deletes the SVE128 unpack implementation translation unit. |
| cpp/src/arrow/util/bpacking_benchmark.cc | Removes the SVE128 unpack benchmark. |
| cpp/src/arrow/CMakeLists.txt | Stops building the SVE128 unpack source file for Arrow util sources. |
|
should we try building a wheel without LTO and validate? |
We can, though it would be a worse fix IMHO. |
We should find out why. Can we enable |
|
Looking at the original build logs, Edit: my bad, it's for NEON. |
|
Ok, I think the issue is https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121412 . And specifically:
|
|
@ursabot please benchmark |
|
Benchmark runs are scheduled for commit 3458a70. Watch https://buildkite.com/apache-arrow and https://conbench.arrow-dev.org for updates. A comment will be posted here when the runs are complete. |
|
Do we have SVE benchmarks? |
|
Everything that relies on bit-unpacking, i.e. some Parquet reading benchmarks. |
|
Thanks for your patience. Conbench analyzed the 4 benchmarking runs that have been run so far on PR commit 3458a70. There were 4 benchmark results indicating a performance regression:
The full Conbench report has more details. |
|
The regression for mac-arm seems to be quite significant. |
It appears similar regression occurs occasionally. I'll restart the benchmark. |
|
@ursabot please benchmark |
|
Commit 3458a70 already has scheduled benchmark runs. |
|
@AntoinePrv could you push an empty commit so conbench can be started again? (It allows only one benchmark run per commit). |
|
@ursabot please benchmark |
|
Benchmark runs are scheduled for commit e84d38f. Watch https://buildkite.com/apache-arrow and https://conbench.arrow-dev.org for updates. A comment will be posted here when the runs are complete. |
Yes, MacOS has no reason to be affected by this (it cannot even run the code we removed), so this one is definitely spurious. |
|
Thanks for your patience. Conbench analyzed the 4 benchmarking runs that have been run so far on PR commit e84d38f. There was 1 benchmark result indicating a performance regression:
The full Conbench report has more details. |
|
No more macOS regressions, I think it's just noisy and TouchArea similarly so. |
Rationale for this change
The SVE128 code path has conflict with the SVE256 that we do not yet manage properly.
Anyhow, after we fixed the inlining issue in Neon, the SVE128 had no clear advantages over Neon as expected, os this was due to be removed anyways.
What changes are included in this PR?
Remove SVE128 unpack
Are these changes tested?
In CI.
Are there any user-facing changes?
No