-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Move FFTW to a package #18389
Comments
Are you saying that there should be no FFT in Base? Removing FFT from Base, would be "Batteries Not Included". On the other hand it would be a move towards "Small Standard Library, Big Ecosystem" |
The most simple thing would be moving FFTW into a package and integration of #6193 into Base. The question about the standard library is a little bit independent. Of course #6193 would fit very well into a package of the standard library but as long as there is not infrastructure for that Base is the correct location. The issue that I see are:
If these are critical is of course up to discussion. |
IMO we shouldn't have an fft in base any more. fft's should not be a dependency of all other code written in the language. We're building out the infrastructure for shipping distributions of Julia that include default packages, which this could be if you don't mind the license (or a pure Julia FFT could be if you do). |
@oxinabox, Julia is evolving from "technical computing language" to "general purpose language which has awesome support for technical computing." In this long run, this will considerably broaden Julia's appeal. Moving this out follows the Python model---numpy is not part of Python, either. I agree with @tkelman, I don't see any reason that |
I am in principle with @tkelman here but we would seriously need a way that newcomers know how to get the fft. A workaround could be |
Before repeating a discussion regarding moving feature to separate packages which has happened elsewhere, see #5155. Let's keep this issue focused on the case of FFTW. |
Ok, sorry that I pointed to the more general issue. Then I might ask more directly: How should the deprecation policy should work for the FFTW functions in base? Deprecate in 0.6, remove in 0.7? |
@tkelman I agree. (I also agree with the reverse, see my posting both.). |
This may be a bit premature; I think we need to implement a robust way to ship and test "batteries included" Julia distros before we start pushing a lot of things out of Base. |
The license issue needs fixing now, it's a major impediment to Julia usage in a number of areas. "Batteries included" Julia distributions exist already, that work is not happening in this repository yet but it's well underway. |
Other pieces of code have been moved out of base to packages with a "this function has been moved to package xyz" error. This will be very much in line with that, although the package will be a bit larger and more complicated than past examples. |
I really hope this movement to make tones of tiny packages for, what I consider, basic science stuff doesn't fracture the package ecosystem. If we have lots of little fft packages, with lets say different licenses, api, etc, and then some packages begin to build on it is going to make using julia as an end user suck. If this ships before we can just do something like |
(At least for FFT functions, the |
See this discussion: https://groups.google.com/forum/#!topic/julia-users/ug5Jh6y5biA. I think a good way to go forward is to start making some metapackages held by the Julia orgs. For example, FFT could move out of Base into JuliaMath, and there can be a standard Math.jl which simply re-exports the "Julia standard math library" using Reexport.jl. This would have agreed on packages (with version requirements?) for a specific domain. JuliaMath could have Math.jl metapackage, JuliaStats could have a Stats.jl metapackage, etc. I think this is better than just lumping them all together into a Does anyone see any design issues that may arise due to using Reexport here (other than the fact that it's a personal repo)? Or does anyone else have a good design? |
@ChrisRackauckas: this is actually the purpose of #5155. One just has to find a clever grouping scheme which isn't that easy. I would directly say that |
I get the feeling this isn't going to happen in the 0.6 release time frame? |
I don't think this is going to be as difficult as Rmath, but someone needs to own it. |
I think support for basic numerical routines is important in It seems a little bizarre to have the kind of linear algebra and special function support we have in |
Yes, as long as we can. We'd like to put them into package but make sure they can be loaded easily/loaded by default so it's still easy to use. |
Ah ok, fair enough. |
We've also already moved special functions out of Base and would also like to move much of the linear algebra code out. |
In response to a question from @jongwook at #17000 (comment) (I'd really like to keep that issue focused specifically on its title, of FFTW threading - if this issue gets resolved before that one does, then we'll move issue #17000 to the package)
Yes. The goal is to have a default Julia distribution that doesn't contain any GPL components (aside from libgit2 and gcc runtimes which have linking exceptions, and possibly a few "mere aggregation" programs that aren't linked into the same address space), as soon as 0.6 if we can come up with a minimally-disruptive way of moving FFTW and SuiteSparse out to packages.
Hard to say. I believe MKL has a mostly-FFTW-compatible FFT API, but it's not exactly equivalent so might not be a complete drop-in replacement in all respects. Either we make an FFTW.jl package that is capable of handling either the GPL FFTW library or the MKL version based on user choice (or whether the version of Julia being used is detected to already be using MKL for BLAS), or we separate the bindings for the GPL FFTW and the MKL FFT API into independent packages.
A pure-Julia MIT-licensed FFT was implemented in #6193 but never merged. I personally think that code should have been published as a Julia package from the start, so it could have been used for the past 2 years rather than sitting as a closed PR. I believe @yuyichao occasionally rebases a branch up to recent master but I'm not sure when he last did so.
The text was updated successfully, but these errors were encountered: