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
Install the library using the corresponding JLL package #21
Conversation
Tests passing on all operating systems (including FreeBSD and Windows, never tested before) without having to install Conda nor any compiler 🙂 |
Nice! I'm away from computer for a while, but will merge once I'm back and have tried it myself. One question though, do we have to disable OpenMP, or could we maybe build FFTW with threading ourselves and ship it in the JLL? |
I'm a bit confused by this: FFTW does have threading enabled, and it's used by FFTW.jl. Isn't it sufficient? |
I'm referring to the comment by @jonas-kr in #19, but maybe I should have a look at the code before I open my mouth. |
Can't we simply enable OpenMP in finufft? I don't understand how FFTW is relevant |
Actually, I have already created a custom build of the jll with openMP enabled! I do not have much time today, so I will provide an update tomorrow. |
Pull request for updated finufft_jll is open and builds successfully on all platforms. The main disadvantage of enabled threading is that finufft uses all available threads by default (despite most x86 CPUs featuring SMT) by default, which can lead to worse performance than the single-threaded scenario. I hope that the new guruInterface_v2 branch is ready for release soon such that it becomes possible to configure the number of threads. |
I think you can get around the performance loss of hyper-threading by initializing the library with half the |
Thanks for the work @giordano and @jonas-kr , it's pretty great to finally have this package dragged into the modern world of jll-packaging =) @MikaelSlevinsky @jonas-kr regarding the threading, I think that's mainly due to FINUFFT having been developed for large datasets, and I think/hope that we'll develop some better heuristics for choosing # of threads. Anyway, tinkering with Sys.CPU_THREADS in the interface would risk messing with any such heuristics developed upstream. |
Close #19