-
Notifications
You must be signed in to change notification settings - Fork 78
-
Notifications
You must be signed in to change notification settings - Fork 78
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
gcc target_clones for math-heavy packages #522
Comments
This is very good information indeed, even better if we could make out a plan with specific changes. Currently I don't quite have the chance (time allowance) to participate in this change - would you be so kind to go ahead and implement some of the changes so I could help testing (glibc would be a very good place to start)? |
According to the LWN article, glibc already manually uses similar dispatch techniques for things like |
Also for the record, Clear Linux and Solus only used My plan is to use |
Hmm. I will try glibc first then. So far I need a gcc wrapper that collects |
Hmm, but that's probably the only package Solus and Intel did the trick on, but they have included a patch specifically for AVX2-enabled processors.
But this could be a very good place to start as well. |
Randomly came across this on Google, so I'll chip in. The In terms of build system integration, it's a case of doing the build first with AVX2 enabled ( While it might sound convoluted, you could perhaps look at how I integrated it into https://github.com/solus-project/ypkg/blob/master/ypkg2/main.py#L225 |
Package manager based optimization overlay system will be introduced with Core 5, this is now scrapped. See the discussions list for more. |
Modern instruction sets often provide significant boosts to math performance. Some time ago I proposed some
/usr/lib/<march>/
structure withld.conf
; and recently Bai proposed/usr/<march>/
prefixes as seen on Clear Linux and Solus on Core 5. Both of these solutions make shipping and handling as packages harder. Is there an easier solution? Look, we can't use ICC.Back then I have looked into GCC 4.8+'s function multi-versioning, but it requires duplicating the functions manually, and only works for C++. With GCC 6 it turns out that it not only can make clones and dispatch automatically, but also works for C. And gcc even has a flag that gives suggestions for automatically tagging functions with FMV. With everything easier now, we should make an attempt at getting all the performance bonus.
target_clones("default", "arch=ivybridge")
path:funcname
form for predetermined patching.-O3
for mathy packages.The text was updated successfully, but these errors were encountered: