All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added
mkl_fftpatching for NumPy, withmkl_fftcontext manager,is_patchedquery, andpatch_numpy_fftandrestore_numpy_fftcalls to replacenumpy.fftcalls with calls frommkl_fft.interfaces.numpy_fftgh-224
- In
mkl_fft.fftnandmkl_fft.ifftn, improved checking of the shape argumentsto use faster direct transforms more often. This makes performance more consistent betweenmkl_fft.fftn/ifftnandmkl.interfaces. gh-283
- Dropped support for Python 3.9 gh-243
- Enabled support of Python 3.14 gh-234
- Removed test for importing
mkl_fft.interfaces.numpy_fftandmkl_fft.interfaces.scipy_fftfrom Conda recipe gh-241
- Fix a circular dependency in Intel NumPy: revert vendoring of
scipy.fftfunctions, instead using thin wrappers to call fromscipydirectly gh-233
- Enabled support of Python 3.13 gh-164
- Dropped support for
scipy.fftpackinterface gh-185 - Dropped support for
overwrite_xparameter inmkl_fftgh-185 - Replaced
fwd_scaleparameter withnorminmkl_fftgh-189 - Conditionally import
scipy_fftonly ifscipyis installed gh-195 - Vendor
fftfreq,rfftfreq,fftshift, andifftshifttoscipy_fftandnumpy_fftinterfaces gh-226, gh=229
- Fixed a bug for N-D FFTs when both
sandoutare given gh-185
- Added Hermitian FFT functions to SciPy interface
mkl_fft.interfaces.scipy_fft:hfft,ihfft,hfftn,ihfftn,hfft2, andihfft2gh-161 - Added support for
outkwarg to all FFT functions inmkl_fftandmkl_fft.interfaces.numpy_fftgh-157 - Added
fftfreq,fftshift,ifftshift, andrfftfreqto both NumPy and SciPy interfaces gh-179
- NumPy interface
mkl_fft.interfaces.numpy_fftis aligned with numpy-2.x.x gh-139, gh-157 - To set
mkl_fftas the backend for SciPy is only possible throughmkl_fft.interfaces.scipy_fftgh-179 - SciPy interface
mkl_fft.interfaces.scipy_fftuses the same function from SciPy for handlingsandaxesfor N-D FFTs gh-181
- Fixed a bug in
mkl_fft.interfaces.numpy.fftnwhen an empty tuple is passed foraxesgh-139 - Fixed a bug for a case when a zero-size array is passed to
mkl_fft.interfaces.numpy.fftngh-139 - Fixed inconsistency of input and output arrays dtype for
irfftfunction gh-180 - Fixed issues with
set_workersfunction in SciPy interfacemkl_fft.interfaces.scipy_fftgh-183
resolves gh-152 by adding an explicit mkl-service dependency to mkl-fft when building the wheel
to ensure the mkl Python module is always available at runtime
resolves gh-115, gh-116, gh-119, gh-135
Supported python versions are 3.9, 3.10, 3.11, 3.12
migrate from setup.py to pyproject.toml
includes support in virtual environment out of the box
the original mkl_fft.rfft and mkl_fft.irfft are renamed to mkl_fft.rfftpack and mkl_fft.irfftpack,
since they replicate the behavior from the deprecated scipy.fftpack module.
mkl_fft.rfft_numpy, mkl_fft.irfft_numpy, mkl_fft.rfft2_numpy, mkl_fft.irfft2_numpy,
mkl_fft.rfftn_numpy, and mkl_fft.irfftn_numpy are renamed to mkl_fft.rfft, mkl_fft.irfft,
mkl_fft.rfft2, mkl_fft.irfft2, mkl_fft.rfftn, and mkl_fft.irfftn, respectively.
(consistent with numpy.fft and scipy.fft modules)
file _scipy_fft_backend.py is renamed to _scipy_fft.py since it replicates scipy.fft module
(similar to file _numpy_fft.py which replicates numpy.fft module)
Bugfix release, resolving gh-109 and updating installation instructions
Bugfix release, resolving leftover uses of NumPy attributes removed in NumPy 2.0 that break test suite run on Windows.
Updated code and build system to support NumPy 2.0
Added vendored conv_template.py from NumPy's distutils submodule to enable building of mkl_fft with
NumPy >=1.25 and Python 3.12
Updated build system away from removed in NumPy 1.25 numpy.distutils module.
Transitioned to Cython 3.0.
Updated numpy interface to support new in NumPy 1.20 supported values of norm keyword, such as "forward" and "backward".
To enable this, mkl_fft functions now support forward_scale parameter that defaults to 1.
Fixed issue #48.
Includes bug fix #54
Due to removal of deprecated real-to-real FFT with DFTI_CONJUGATE_EVEN_STORAGE=DFTI_COMPLEX_REAL and
DFTI_PACKED_FORMAT=DFTI_PACK from Intel(R) Math Kernel Library, reimplemented mkl_fft.rfft and
mkl_fft.irfft to use real-to-complex functionality with subsequent copying to rearange the transform as expected
of mkl_fft.rfft, with the associated performance penalty. The use of the real-to-complex
transform improves multi-core utilization which may offset the performance loss incurred due to copying.
Added scipy.fft backend, see #42. Fixed #46.
Changed tests to not compare against numpy fft, as this broke due to renaming of np.fft.pocketfft to
np.fft._pocketfft. Instead compare against naive realization of 1D FFT as a sum.
Setup script is now aware of MKLROOT environment variable. If unset, NumPy's mkl_info will be queried.
Fixed unreferenced bug in irfftn_numpy, and adjusted NumPy interfaces to change to pocketfft in NumPy 1.17
Issue #39 fixed (memory leak with complex FFT on real arrays)
Issue #37 fixed.
Inhibited vectorization of short loops computing pointer to memory referenced by a multi-iterator by Intel (R) C Compiler,
improving performance of ND fft and ifft on real input arrays.
Improvement for performance of ND fft on real input arrays by inlining multi-iterators.
This particularly benefits performance of mkl_fft built with Intel (R) C Compiler.
Fix for issue #29.
Improved exception message raised if MKL is signalling an error. The message now includes MKL's own description of the exception. This partially improves #24.
Improved argument validation for ND transforms aligning with scipy 1.2.0
Fixed issues #21, and addressed NumPy 1.15 deprecation warnings from using lists instead of tuples to specify multiple slices.
Fixed issues #7, #17, #18.
Consolidated version specification into a single file mkl_fft/_version.py.
Added CHANGES.rst. Fixed issue #11 by using lock around calls to 1D FFT routines.
This is a bug fix release.
It fixes issues #9, and #13.
As part of fixing issue #13, out-of-place 1D FFT calls such as fft, ifft, rfft_numpy
and irfftn_numpy will allocate Fortran layout array for the output is the input is a Fotran array.
Minor update of mkl_fft, reflecting renaming of numpy.core.multiarray_tests module to
numpy.core._multiarray_tests as well as fixing #4.
Bug fix release.
Initial release of mkl_fft.