-
Notifications
You must be signed in to change notification settings - Fork 211
Ban ligomp.so
at GCCcore level
#4951
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
base: develop
Are you sure you want to change the base?
Conversation
@@ -35,6 +35,9 @@ | |||
from easybuild.tools import LooseVersion | |||
from easybuild.tools.toolchain.toolchain import SYSTEM_TOOLCHAIN_NAME | |||
|
|||
# At GCCcore level we do not allow OpenMP | |||
GCCCORE_BANNED_LIBRARIES = ['libgomp.so'] |
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.
Has there been a discussion of what version of GCCcore
we should add this check for? I do not think it is worthwhile to apply this to all GCCcore
versions we have.
Probably start with one of:
14.2.0
(2025a
generation)14.3.0
(2025b
generation)
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.
That's true, I think it only really matters once we introduce modern LLVM (although it was probably also a potential issue for Intel compilers since we introduced GCCcore
)
Works as expected
and switching this up to GCC toolchain
Now to see why the tests are failing... |
For some reason this change now triggers
which is causing the test failures (since the |
This is way to strict. It's perfectly fine for binaries to link to libgomp (it's also fine if they are fortran codes). |
The reason was discussed in #4535 before. I've encountered several cases already where multiple OpenMP runtimes were causing havoc on the performance tool side (though this was with Cray's OpenMP & LLVM OpenMP runtime, LLVM OpenMP + NVHPC OpenMP), e.g. trying to initialize data structures twice. Switching to As more of a general question though: |
Oh, I misread the binary part. |
It's not that I don't agree, but this would require a total rework of how the check is done in general in framework as there is no distinction made (and looks like you need additional requirements to check in python if something is an executable as opposed to a shared lib). |
After scanning through all my libraries and binaries at GCCcore level, use of OMP was actually far less prevalent than thought it would be (though i haven't built everything, and of course, things can change). I'm worried about cascading effects of some small library that happens to be a dependency of something very core, like a compression library or something that would force everything that depends on it to move the entirety of GCCcore -> GCC + intel-compilers + clang + NVHPC, which would be a massive pain. A quick scan of my tree found things we would be banning due to binaries: what really worries me are things like We would of course just fix those cases rather than moving them (like disabling omp or statically link them) if possible to avoid the cascade of dependencies moved. So, maybe in practice this is a non issue.
I don't think there is any hope that we can do something about ABI compatible we don't control ourself. So, as with any commercial, binary install, I think there is just install and hope. When python |
IIRC, UCX only uses OpenMP for a (performance) test. Could be fine to not build that test, or disable OpenMP for that... But like you said earlier, binaries using OpenMP shouldn't necessarily be a blocker for an installation, only shared libraries |
Fixes #4535
Will need work for easyconfigs that exist with GCCcore and use OpenMP (see #4535 (comment))