-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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-15678: [C++][CI] a crossbow job with MinRelSize enabled #12928
Conversation
|
@github-actions crossbow submit test-r-minsizerel This should fail, it is before the fix is added |
Revision: 44bfc59 Submitted crossbow builds: ursacomputing/crossbow @ actions-1876
|
@github-actions crossbow submit test-r-minsizerel After @westonpace 's patch |
Revision: eb91ce0 Submitted crossbow builds: ursacomputing/crossbow @ actions-1877
|
cpp/src/arrow/util/bitmap_writer.h
Outdated
@@ -78,96 +79,24 @@ class BitmapWriter { | |||
int64_t byte_offset_; | |||
}; | |||
|
|||
class FirstTimeBitmapWriter { | |||
class ARROW_EXPORT FirstTimeBitmapWriter { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This resolved the windows CI failures, though not sure if I should include ARROW_EXPORT
for other classes as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since the other classes are fully defined in the header you should not have to. Technically it wouldn't hurt either but best to be minimal with changes probably.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct.
@jonkeane Can you point to the Windows CI failures? |
Well, un-inlining the |
@ursabot please benchmark lang=C++ |
Benchmark runs are scheduled for baseline = 4544f95 and contender = 24a1764. Results will be available as each benchmark for each run completes. |
There definitely are regressions in throughput on those C++ benchmarks. Interestingly, it looks like there was a pretty big regression (larger than here, even!) in some of these already around #12634 which is odd since that's a java + documentation only ticket. Though it does look like our compiler version on the benchmarking machine went from 9.4.0 to 10.3.0 coincidentally at that commit, which might be the real source of that regression. |
Yes, you can see there are regressions in kernels that write an output bitmap (such as is_in or substring matching), which definitely relates to |
Can we use We can use |
…ng implemented in level_conversion_bmi2.cc.o which is always compiled with avx2
I started a Crossbow job here: https://github.com/ursacomputing/crossbow/actions/runs/2203242917 |
I played around with this a bit more. I can reproduce it locally by building with SSE4_2:
From there it's easiest to verify by just manually checking to see which version ends up in
If the output contains
If you really want to reproduce the issue, I found a tool sde64 which will work if you have an Intel processor. It allows you to simulate older Intel processors and so you can pretend to have an Ivy Bridge processor (which does not have AVX2/BMI2 support):
@pitrou has also posted a suggestion on the Jira using pragmas. I had to include the arch specifier so it generated |
Thanks @westonpace for digging deeper! Since the release is approaching we should choose one solution to unblock the release. |
IMHO the temporary solution should simply be to disallow dynamic dispatch on Homebrew builds. This should be doable by passing |
If we're going to leave this as is, we should also document somewhere that compiling with |
This is not due to |
I agree with @pitrou that it doesn't make sense to rush this while we investigate a longer term fix for dynamic dispatch. The forced inline is more of a band-aid and there is no real guarantee it would work in all situations. Agreed this isn't related to MinSizeRel. That configuration triggers this bug on this particular system. However, it is entirely possible some other build on some other system runs into this exact same bug without using MinSizeRel. As far as the compiler's are concerned we are in the domain of "undefined behavior" so any change to compilation flags or compiler versions could change what results we get. |
Ok, if we want to test this in our CI before we upstream the change to homebrew, I would remove this line arrow/dev/tasks/homebrew-formulae/apache-arrow.rb Lines 66 to 68 in d85e902
|
@jonkeane @nealrichardson what's the status of it? Do we need this for the next homebrew release? |
What's here only adds the CI that will replicate the failure long-discussed in ARROW-15678. I'm inclined to close it until we have a champion who can resolve the issue — the code is here if they need it (or we could merge it and have a crossbow job that always fails until we have someone who can champion the fix...). |
In addition to the CI job that tests this, it includes for the wrong SIMD instructions on some platforms