-
Notifications
You must be signed in to change notification settings - Fork 56
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
Eliminate build step, use Preferences #188
Comments
59 tasks
Fine with me. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Now that 1.6 is released, I would like to eliminate the
Pkg.build()
step within FFTW entirely, instead changing it to use Preferences to manage which backend its using. I'd also like to explore ways that it can make optional use of MKL and not unconditionally install it as a dependency.My proposed plan is to use
Preferences
to perform a lookup (at compile time) for theprovider
key and use that, instead of looking at the value oflibfftw3
. So e.g. this line would instead become something like:The
@load_preference
macro will record in the.ji
file that it accessed theprovider
key at compile-time, and so Julia, when loading the.ji
file, will check to see if the currentprovider
key matches the one recorded in the.ji
file and if they do not match, it will reject the.ji
file and possibly recompile FFTW. This allows for FFTW to use MKL in some projects, and to use FFTW_jll in others.More importantly for me, it removes the need to write out state into the depot and eliminates the
Pkg.build()
step, which should help in some of our caching efforts in large-scale deployments (where we want to make the depot read-only, we want to transfer around only content-addressed chunks of data from machine to machine, etc... and FFTW needing to rebuild itself because of theprefs/FFTW
file causes a cascade of recompilation).This capability is, of course, 1.6+. @stevengj how do you feel about branching and creating a 1.6+ release?
The text was updated successfully, but these errors were encountered: