-
Notifications
You must be signed in to change notification settings - Fork 704
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
Python @ GCCcore #7463
Comments
Thanks a lot for summarizing this so nicely @Micket! W.r.t. suggestion 1:
|
|
We do this now. |
Background
Compiling python together with the scipy bundle at the toolchain level has disadvantages:
This primarily
Having a runtime dependency libpython at GCCcore will significantly reduce number of modules, as well as ensuring that all GCCcore based toolchains have access to a wider base of modules automatically.
Some affected configs that are currently at toolchain levels (due to Python) are:
(above list is just from browsing modules from past toolchains, some may be applicable for moving to GCCcore, nor is the list exhaustive)
Limitations
Some discussions have been going on about we handle PYTHONPATH in EB. That is a completely seperate issue which can be applied here regardless.
The list of packages in the Python easyconfigs that can't/shouldn't move to GCCcore are:
Anything that in turn depends on these packages specifically, would stay at the toolchain level.
Suggestion 1: Just split existing package bundle
Keeping Scipy and friends seperately would let the current Python config, and related dependees, be moved to GCCcore.
Python-x.x.x-GCCcore-x.x.x.eb
.The scipy, numpy, pandas, mpi4py, deap packages can either be partially packaged as a bundle "SciPy", or as individual packages.
There are (old) invidual packages for pandas, numpy, so it might be consistent to just have them invidual?
Invidual packages are also easier to debug then bundles, when something goes wrong in the install.
Suggestion 2: Introduce a Python-core config
Ref: #6537
Similar to suggestion 1, but by introducing a new name, Python-core, we can keep toolchain level Python
Suggestion 3: Shadowing libpython
Suggested by Jack Perdue
Building Python(base) as GCCcore as well as building Python at toolchain level.
Suggestion 4: Using MKL with GCCcore without toolchain
This approach, as done locally by Damian(?) makes very significant changes to the whole toolchain level.
Suggestion 5: Only as a build dep
Ref: #5072
Suggestion 6: Use a hidden python module and shadow it
Ref: #4962 #5075
Known ABI difference between intel and gcc compiled versions:
Performance
A single performance issue has been identified yet; libimf from intel has faster exp, log, sin and cos functions. As libimf only shadows libm, this also affects numpy. Only noticeable in arrays > len 10. Other math functions didn't show much difference.
Possible fixes:
Note: I have gotten much better performance from numexpr, using VML.
Conclusion:
I prefer suggestion 1. I don't think the changes for users is going to be that problematic. I don't think the libimf function issue is likely to affect much real code. Suggestion 2 was tried in production, and, while doable, is a hassle with no benefit.
The text was updated successfully, but these errors were encountered: