Skip to content
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

Separate MKL's FFT from FFTW? #233

Closed
ChrisRackauckas opened this issue Mar 22, 2022 · 2 comments
Closed

Separate MKL's FFT from FFTW? #233

ChrisRackauckas opened this issue Mar 22, 2022 · 2 comments

Comments

@ChrisRackauckas
Copy link
Member

MKL is a rather large dependency and it would be nice to not ship it to the half of the ecosystem that pulls in FFTW in some form (okay, half is an overstatement but it's a pretty large amount). It's not even a default:

Alternatively, the FFTs in Intel's Math Kernel Library (MKL) can be used by running FFTW.set_provider!("mkl"). MKL will be provided through MKL_jll. This change of provider is persistent and has to be done only once, i.e., the package will use MKL when building and updating. Note however that MKL provides only a subset of the functionality provided by FFTW. See Intel's documentation for more information about potential differences or gaps in functionality. In case MKL does not fit the needs (anymore), FFTW.set_provider!("fftw") allows to revert the change of provider.

So why is it shipped by default? I think it really should be a separate package, MKLFFT.jl or something of the sort, so that those who want to use the MKL FFT can add the MKL FFT, and those who want the FFTW one (with a substantially smaller artifact and less issues, i.e. #227) can just use that.

If it makes sense to have the developmental locality, then I would propose using a subpackage like how https://github.com/JuliaGPU/KernelAbstractions.jl has subpackages for its CUDAKernels, AMDGPUKernels, etc. https://github.com/JuliaGPU/KernelAbstractions.jl/tree/master/lib. That makes it 4 packages in one git repo, easy to maintain, but you don't have everyone install the Intel GPU drivers by virtue of having KernelAbstractions.jl

@giordano
Copy link
Member

So why is it shipped by default?

It isn't. Pkg doesn't have optional packages, so we can't optionally depend on MKL_jll (unless you want to use Requires.jl), but the artifact isn't actually installed unless you opt into using MKL as provider.

@ChrisRackauckas
Copy link
Member Author

Okay interesting, it must've installed on my machine from some experiment long ago and never uninstalled with a ]gc --all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants