-
Notifications
You must be signed in to change notification settings - Fork 271
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
Add -Denable_marchnative=true option #6029
Conversation
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 PR is a mixture of at least four different things.
- Adding the titular option related to native architecture optimisations. This mostly looks ok although I'd like to see some more details on the data/improvement on more than one run on one system.
- There are changes to flag passing (for CaDiCaL) which seems like a bugfix? Can this also be checked to see if this is only
cmake
, or also amake
issue? - Improvements to output during cmake build.
- A modification related to location and changes to
version.cpp
that is not clear needs to be fixed. Can this be explained/justified?
There may also be some changes to formatting that are cosmetic and unrelated?
I would like these to at least be clearly explained and separated, if not split into different PRs.
152c723
to
2e76918
Compare
I did several runs, compared to -O3. Before I only benchmarked private code, now I've benchmarked against cbmc-CORE.
We needed to pass extra compiler options to all extra compiled backends, such as cudd or CaDiCaL. cudd already has -O3, but for -march=native we'd need to add these lines. More so for -flto later. You won't get any SIMD vectorization without.
Only for this feature.
Sorry, I've split the version fix into a seperate branch. I forgot if I already submitted that as extra PR already, if not will do. There was some denial, that it is not broken. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## develop #6029 +/- ##
===========================================
- Coverage 79.08% 74.11% -4.98%
===========================================
Files 1696 1444 -252
Lines 196505 157389 -39116
===========================================
- Hits 155408 116646 -38762
+ Misses 41097 40743 -354 ☔ View full report in Codecov by Sentry. |
8022c13
to
b567533
Compare
086aa46
to
cb5abcf
Compare
a263011
to
a58921d
Compare
1cdcb65
to
a30e6d8
Compare
6cb69cb
to
6870815
Compare
769c438
to
fa2a35b
Compare
70b918c
to
f220ef0
Compare
94fc848
to
cb73fbc
Compare
LTO and -O3 give a good performance improvement. I would not recommend -O3 with bad compiler versions though, such as gcc-9. WIP: GLOBAL properties are not enough, add the IPO property to all targets. Which leads to various problems still. See the next commit to fix yyalloc name collisions.
This is for CMake only as we haven't currently got an LTO set-up for Makefile builds.
to avoid -Wodr warnings
not valid on arm or other archs. Only for gcc-compatible compilers. 30% faster on small samples than -flto
Will change lto fixes only |
Valid for gcc-compat on Intel. Not valid on arm or other archs.
And pass CFLAGS and CXXFLAGS to cudd configure.
Don't use that on releases, just privately or on known CPU HW.
Added a doc section Maximum Performance in compilation-and-development
10% faster than -O3.
make test cbmc-CORE went from 84.02.sec with -O3 to 75.92 sec with -O2 -march=native
See #6028