-
Notifications
You must be signed in to change notification settings - Fork 89
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
Refactor pyawkward.cpp both for compilation speed and so that arrays can be dynamically loaded by dependent Python modules. #116
Conversation
…rrays can be dynamically loaded by dependent Python modules.
Compilation of all sources from scratch (12 core machine):
Linking only (no files touched):
1/3 of the compilation time is spent only making the Also, calling types, fillables, etc. "layouts" is an abuse of terminology. Only the |
I'm away from my big computer right now, but I don't think this solved the compilation speed issue. Nevertheless, it was a necessary refactoring. |
@glass-ships and @lukasheinrich: You both want to create projects that depend on Awkward. While I understand that @lukasheinrich isn't currently considering round-tripping the data through Python, you should both be aware that I've tested compiling a dependent Python module against Awkward, and it works in MacOS and Linux. (I haven't figured out a CMake issue in Windows, yet.) Here's an example, which I should also link from the README. https://github.com/scikit-hep/awkward-1.0/tree/feature/PR116-refactor-pyawkward/dependent-project The dependent project has either the static or dynamic libraries as a compile-time dependency. (The example shows it for static: just remove the Some caveats:
Can the linking be purely dynamic? I'm not sure. I would consider that a valuable goal, but I don't know if it can be achieved. @henryiii may also have some good ideas about this. |
… name I liked better (because it's like Numba's 'types', and it's qualified so not to be confused with the standard library module).
To confirm that this refactoring didn't do a thing for compilation time, here's compilation of all sources from scratch (same 12 core machine).
It's about 10 seconds longer. Linking only (no files touched):
It's about 2 seconds longer. |
No description provided.