-
Notifications
You must be signed in to change notification settings - Fork 2
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
Split anomalous dimensions into a Rust crate #185
Comments
The template works, as soon as we close the current main refactoring (i.e. #172) I will provide a PR with a working layout, but almost nothing in. The proposal is to move the In principle, we can also move the integration on the Rust side (such that all the heavy lift will happen there, and we do not cross the Rust-Python boundary during intensive operations). This I would do in the bindings crate, or a separate one, keeping To integrate in Rust we can use bindings to the GSL: https://docs.rs/GSL/latest/rgsl/integration/index.html (i.e. essentially the same as SciPy, but we have to install GSL ourselves). |
Compiling just took me about half an hour (!)
I think we need to do something ... |
Agreed, and the first step is already in #189. But it is lower priority than other businesses, in particular FONLL. However, if @giacomomagni wants to start having a look we can discuss. But for me and you it is out of limits, until everything else is working smoothly. |
Rust supports incremental compilation (by default only for debug, opt-in for production, reasonably): |
@scarlehoff said in NNPDF/pineko#105 :
and also discussing with @giacomomagni last week, we found the same conclusion: we should do something on the compilation front ... |
To be more precise, my problem is that I have many cores but not so much memory so my scratch got completely filled (quite rapidly). |
You're not alone, it happened the same to me...
Yes, we should do something. But it won't be quick. The current workaround is to limit Numba processors for compilation, but it is taking a lot... |
And it happened again! This time while computing an eko for the evolution of a PDF. Not sure if it has gotten way worse lately (i.e., in one of the latest point releases) or whether I just didn't notice it. |
I think you should set the default to 1 (instead of 8)
the strategy and settings should not have changed ... (not since 0.13) |
It could've been that I just happen not to have used the relevant computers while they were in swap so I didn't notice. 8 seems to be safe (at least for now for me). I was going higher :P |
This instead should be quick to solve. An EKO has many dimensions, in particular
At the beginning, only 1. and 4. were available, and 4. was needed by Giacomo (who implemented it). Unfortunately, this parallelization is handled by Python, with an enormous overhead in memory (essentially, copying the involved objects once per thread spawned, since they are bound to new interpreters instances). Now that 2. is available, I would deprecate 4., setting the number of threads by default to a single one, and eventually drop to avoid similar issues again. |
I agree let's set it to 1. In the end now you want to parallelise only if you really need it. |
The motivations for this issue are mainly:
I'm currently trying to outline a suitable layout for the new Rust module, I'm doing some attempts in this repo:
https://github.com/AleCandido/atuin
I already asked for
maturin
authors support, but a minimal skeleton (no further crates for bindings) is almost working:PyO3/maturin#1372
The text was updated successfully, but these errors were encountered: