|
4 | 4 | [](https://github.com/IntelPython/mkl_fft/actions/workflows/conda-package-cf.yml)
|
5 | 5 | [](https://securityscorecards.dev/viewer/?uri=github.com/IntelPython/mkl_fft)
|
6 | 6 |
|
| 7 | +# Introduction |
7 | 8 | `mkl_fft` started as a part of Intel® Distribution for Python* optimizations to NumPy, and is now being released
|
8 |
| -as a stand-alone package. It can be installed into conda environment from Intel's channel using: |
| 9 | +as a stand-alone package. It offers a thin layered interface for the Intel® oneAPI Math Kernel Library (OneMKL) FFT functionality that allows efficient access to native FFT optimizations from a range of NumPy and SciPy functions. As a result, its performance is close to the performance of native C/Intel® OneMKL. The optimizations are provided for real and complex data types in both single and double precisions for in-place and out-of-place modes of operation. For analyzing the performance use [FFT benchmarks](https://github.com/intelpython/fft_benchmark). |
| 10 | + |
| 11 | +Thanks to Intel® OneMKL’s flexibility in its supports for arbitrarily strided input and output arrays both one-dimensional and multi-dimensional Fast Fourier Transforms along distinct axes can be performed directly, without the need to copy the input into a contiguous array first. Furthermore, input strides can be arbitrary, including negative or zero, as long as strides remain an integer multiple of array’s item size, otherwise a copy will be made. |
| 12 | + |
| 13 | +More details can be found in ["Accelerating Scientific Python with Intel Optimizations"](https://proceedings.scipy.org/articles/shinma-7f4c6e7-00f) from Proceedings of the 16th Python in Science Conference (SciPy 2017). |
| 14 | + |
| 15 | +--- |
| 16 | +# Installation |
| 17 | +`mkl_fft` can be installed into conda environment from Intel's channel using: |
9 | 18 |
|
10 | 19 | ```
|
11 | 20 | conda install -c https://software.repos.intel.com/python/conda mkl_fft
|
@@ -34,22 +43,12 @@ If command above installs NumPy package from the PyPI, please use following comm
|
34 | 43 | Where `<numpy_version>` should be the latest version from https://software.repos.intel.com/python/conda/
|
35 | 44 |
|
36 | 45 | ---
|
| 46 | +# How to use? |
| 47 | +## `mkl_fft.interfaces` module |
| 48 | +The recommended way to use `mkl_fft` package is through `mkl_fft.interfaces` module. These interfaces act as drop-in replacements for equivalent functions in NumPy and SciPy. Learn more about these interfaces [here](https://github.com/IntelPython/mkl_fft/blob/master/mkl_fft/interfaces/README.md). |
37 | 49 |
|
38 |
| -Since MKL FFT supports performing discrete Fourier transforms over non-contiguously laid out arrays, OneMKL can be directly |
39 |
| -used on any well-behaved floating point array with no internal overlaps for both in-place and not in-place transforms of |
40 |
| -arrays in single and double floating point precision. |
41 |
| - |
42 |
| -This eliminates the need to copy input array contiguously into an intermediate buffer. |
43 |
| - |
44 |
| -`mkl_fft` directly supports N-dimensional Fourier transforms. |
45 |
| - |
46 |
| -More details can be found in [SciPy 2017 conference proceedings](https://github.com/scipy-conference/scipy_proceedings/tree/2017/papers/oleksandr_pavlyk). |
47 |
| - |
48 |
| ---- |
49 |
| - |
50 |
| -The `mkl_fft` package offers interfaces that act as drop-in replacements for equivalent functions in NumPy and SciPy. Learn more about these interfaces [here](https://github.com/IntelPython/mkl_fft/blob/master/mkl_fft/interfaces/README.md). |
51 |
| - |
52 |
| -While using these interfaces is the easiest way to leverage `mk_fft`, one can also use `mkl_fft` directly with the following FFT functions: |
| 50 | +## `mkl_fft` package |
| 51 | +While using the interfaces module is the recommended way to leverage `mk_fft`, one can also use `mkl_fft` directly with the following FFT functions: |
53 | 52 |
|
54 | 53 | ### complex-to-complex (c2c) transforms:
|
55 | 54 |
|
@@ -84,6 +83,7 @@ numpy.allclose(mkl_res, np_res)
|
84 | 83 | ```
|
85 | 84 |
|
86 | 85 | ---
|
| 86 | +# Building from source |
87 | 87 |
|
88 | 88 | To build `mkl_fft` from sources on Linux with Intel® OneMKL:
|
89 | 89 | - create a virtual environment: `python3 -m venv fft_env`
|
|
0 commit comments