|
| 1 | +# changelog |
| 2 | +All notable changes to this project will be documented in this file. |
| 3 | + |
| 4 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 5 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 6 | + |
| 7 | +## [dev] (MM/DD/YY) |
| 8 | + |
| 9 | +### Added |
| 10 | +* SciPy interface `mkl_fft.interfaces.scipy_fft` now includes Hermitian FFT functions: `hfft`, `ihfft`, `hfftn`, `ihfftn`, `hfft2`, and `ihfft2` [gh-161](https://github.com/IntelPython/mkl_fft/pull/161) |
| 11 | + |
| 12 | +## [1.3.14] (04/10/2025) |
| 13 | + |
| 14 | +resolves gh-152 by adding an explicit `mkl-service` dependency to `mkl-fft` when building the wheel |
| 15 | +to ensure the `mkl` Python module is always available at runtime |
| 16 | + |
| 17 | +resolves gh-115, gh-116, gh-119, gh-135 |
| 18 | + |
| 19 | +## [1.3.13] (03/25/2025) |
| 20 | + |
| 21 | +Supported python versions are 3.9, 3.10, 3.11, 3.12 |
| 22 | + |
| 23 | +migrate from `setup.py` to `pyproject.toml` |
| 24 | + |
| 25 | +includes support in virtual environment out of the box |
| 26 | + |
| 27 | +the original `mkl_fft.rfft` and `mkl_fft.irfft` are renamed to `mkl_fft.rfftpack` and `mkl_fft.irfftpack`, |
| 28 | +since they replicate the behavior from the deprecated `scipy.fftpack` module. |
| 29 | + |
| 30 | +`mkl_fft.rfft_numpy`, `mkl_fft.irfft_numpy`, `mkl_fft.rfft2_numpy`, `mkl_fft.irfft2_numpy`, |
| 31 | +`mkl_fft.rfftn_numpy`, and `mkl_fft.irfftn_numpy` are renamed to `mkl_fft.rfft`, `mkl_fft.irfft`, |
| 32 | +`mkl_fft.rfft2`, `mkl_fft.irfft2`, `mkl_fft.rfftn`, and `mkl_fft.irfftn`, respectively. |
| 33 | +(consistent with `numpy.fft` and `scipy.fft` modules) |
| 34 | + |
| 35 | +file `_scipy_fft_backend.py` is renamed to `_scipy_fft.py` since it replicates `scipy.fft` module |
| 36 | +(similar to file `_numpy_fft.py` which replicates `numpy.fft` module) |
| 37 | + |
| 38 | +## [1.3.11] |
| 39 | + |
| 40 | +Bugfix release, resolving gh-109 and updating installation instructions |
| 41 | + |
| 42 | +## [1.3.10] |
| 43 | + |
| 44 | +Bugfix release, resolving leftover uses of NumPy attributes removed in NumPy 2.0 that break |
| 45 | +test suite run on Windows. |
| 46 | + |
| 47 | +## [1.3.9] |
| 48 | + |
| 49 | +Updated code and build system to support NumPy 2.0 |
| 50 | + |
| 51 | +## [1.3.8] |
| 52 | + |
| 53 | +Added vendored `conv_template.py` from NumPy's distutils submodule to enable building of `mkl_fft` with |
| 54 | +NumPy >=1.25 and Python 3.12 |
| 55 | + |
| 56 | +## [1.3.7] |
| 57 | + |
| 58 | +Updated build system away from removed in NumPy 1.25 numpy.distutils module. |
| 59 | + |
| 60 | +Transitioned to Cython 3.0. |
| 61 | + |
| 62 | +## [1.3.0] |
| 63 | + |
| 64 | +Updated numpy interface to support new in NumPy 1.20 supported values of norm keyword, such as "forward" and "backward". |
| 65 | +To enable this, `mkl_fft` functions now support `forward_scale` parameter that defaults to 1. |
| 66 | + |
| 67 | +Fixed issue #48. |
| 68 | + |
| 69 | +## [1.2.1] |
| 70 | + |
| 71 | +Includes bug fix #54 |
| 72 | + |
| 73 | +## [1.2.0] |
| 74 | + |
| 75 | +Due to removal of deprecated real-to-real FFT with `DFTI_CONJUGATE_EVEN_STORAGE=DFTI_COMPLEX_REAL` and |
| 76 | +`DFTI_PACKED_FORMAT=DFTI_PACK` from Intel(R) Math Kernel Library, reimplemented `mkl_fft.rfft` and |
| 77 | +`mkl_fft.irfft` to use real-to-complex functionality with subsequent copying to rearange the transform as expected |
| 78 | +of `mkl_fft.rfft`, with the associated performance penalty. The use of the real-to-complex |
| 79 | +transform improves multi-core utilization which may offset the performance loss incurred due to copying. |
| 80 | + |
| 81 | +## [1.1.0] |
| 82 | + |
| 83 | +Added `scipy.fft` backend, see #42. Fixed #46. |
| 84 | + |
| 85 | + |
| 86 | +```python |
| 87 | +>>> import numpy as np, mkl_fft, mkl_fft._scipy_fft as mkl_be, scipy, scipy.fft, mkl |
| 88 | + |
| 89 | +>>> mkl.verbose(1) |
| 90 | +# True |
| 91 | + |
| 92 | +>>> x = np.random.randn(8*7).reshape((7, 8)) |
| 93 | +>>> with scipy.fft.set_backend(mkl_be, only=True): |
| 94 | +>>> ff = scipy.fft.fft2(x, workers=4) |
| 95 | +>>> ff2 = scipy.fft.fft2(x) |
| 96 | +# MKL_VERBOSE Intel(R) MKL 2020.0 Product build 20191102 for Intel(R) 64 architecture Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) enabled processors, Lnx 2.40GHz intel_thread |
| 97 | +# MKL_VERBOSE FFT(drfo7:8:8x8:1:1,bScale:0.0178571,tLim:1,desc:0x5629ad31b800) 24.85ms CNR:OFF Dyn:1 FastMM:1 TID:0 NThr:16,FFT:4 |
| 98 | + |
| 99 | +>>> np.allclose(ff, ff2) |
| 100 | +# True |
| 101 | +``` |
| 102 | + |
| 103 | +## [1.0.15] |
| 104 | + |
| 105 | +Changed tests to not compare against numpy fft, as this broke due to renaming of `np.fft.pocketfft` to |
| 106 | +`np.fft._pocketfft`. Instead compare against naive realization of 1D FFT as a sum. |
| 107 | + |
| 108 | +Setup script is now aware of `MKLROOT` environment variable. If unset, NumPy's mkl_info will be queried. |
| 109 | + |
| 110 | +## [1.0.14] |
| 111 | + |
| 112 | +Fixed unreferenced bug in `irfftn_numpy`, and adjusted NumPy interfaces to change to pocketfft in NumPy 1.17 |
| 113 | + |
| 114 | +## [1.0.13] |
| 115 | + |
| 116 | +Issue #39 fixed (memory leak with complex FFT on real arrays) |
| 117 | + |
| 118 | +## [1.0.12] |
| 119 | + |
| 120 | +Issue #37 fixed. |
| 121 | + |
| 122 | +Inhibited vectorization of short loops computing pointer to memory referenced by a multi-iterator by Intel (R) C Compiler, |
| 123 | +improving performance of ND `fft` and `ifft` on real input arrays. |
| 124 | + |
| 125 | +## [1.0.11] |
| 126 | + |
| 127 | +Improvement for performance of ND `fft` on real input arrays by inlining multi-iterators. |
| 128 | +This particularly benefits performance of mkl_fft built with Intel (R) C Compiler. |
| 129 | + |
| 130 | +## [1.0.10] |
| 131 | + |
| 132 | +Fix for issue #29. |
| 133 | + |
| 134 | +## [1.0.7] |
| 135 | + |
| 136 | +Improved exception message raised if MKL is signalling an error. The message now includes MKL's own description of the exception. |
| 137 | +This partially improves #24. |
| 138 | + |
| 139 | +Improved argument validation for ND transforms aligning with scipy 1.2.0 |
| 140 | + |
| 141 | +## [1.0.6] |
| 142 | + |
| 143 | +Fixed issues #21, and addressed NumPy 1.15 deprecation warnings from using lists instead of tuples to specify multiple slices. |
| 144 | + |
| 145 | +## [1.0.5] |
| 146 | + |
| 147 | +Fixed issues #7, #17, #18. |
| 148 | +Consolidated version specification into a single file `mkl_fft/_version.py`. |
| 149 | + |
| 150 | +## [1.0.4] |
| 151 | + |
| 152 | +Added CHANGES.rst. Fixed issue #11 by using lock around calls to 1D FFT routines. |
| 153 | + |
| 154 | +## [1.0.3] |
| 155 | + |
| 156 | +This is a bug fix release. |
| 157 | + |
| 158 | +It fixes issues #9, and #13. |
| 159 | + |
| 160 | +As part of fixing issue #13, out-of-place 1D FFT calls such as `fft`, `ifft`, `rfft_numpy` |
| 161 | +and `irfftn_numpy` will allocate Fortran layout array for the output is the input is a Fotran array. |
| 162 | + |
| 163 | +## [1.0.2] |
| 164 | + |
| 165 | +Minor update of `mkl_fft`, reflecting renaming of `numpy.core.multiarray_tests` module to |
| 166 | +`numpy.core._multiarray_tests` as well as fixing #4. |
| 167 | + |
| 168 | +## [1.0.1] |
| 169 | + |
| 170 | +Bug fix release. |
| 171 | + |
| 172 | +## [1.0.0] |
| 173 | + |
| 174 | +Initial release of `mkl_fft`. |
0 commit comments