Skip to main content

Efficient and easy Fast Fourier Transform (FFT) for Python.

Project description

FluidFFT

Efficient and easy Fast Fourier Transform for Python

Latest version Supported Python versions Documentation status Code coverage Heptapod CI Github Actions Linux Github Actions Pixi

Fluidfft provides C++ classes and their Python wrapper classes written in Cython useful to perform Fast Fourier Transform (FFT) with different libraries, in particular

pfft, p3dfft and mpi4py-fft are specialized in computing FFT efficiently on several cores of big clusters. The data can be split in pencils and can be distributed on several processes.

Documentation: https://fluidfft.readthedocs.io

Getting started

To try fluidfft without installation: Binder notebook

For a basic installation which relies only on a pyFFTW interface; or provided you have the optional FFT libaries, that you need, installed and discoverable in your path (see environment variables LIBRARY_PATH, LD_LIBRARY_PATH, CPATH) it should be sufficient to run:

pip install fluidfft [--user]

Add --user flag if you are installing without setting up a virtual environment.

Installation

To take full advantage of fluidfft, consider installing the following (optional) dependencies and configurations before installing fluidfft. Click on the links to know more:

  1. OpenMPI or equivalent
  2. FFT libraries such as MPI-enabled FFTW (for 2D and 3D solvers) and P3DFFT, PFFT (for 3D solvers) either using a package manager or from source
  3. Python packages fluiddyn cython pyfftw pythran mpi4py
  4. A C++11 compiler and BLAS libraries and configure ~/.pythranrc to customize compilation of Pythran extensions
  5. Configure ~/.fluidfft-site.cfg to detect the FFT libraries and install fluidfft

Note: Detailed instructions to install the above dependencies using Anaconda / Miniconda or in a specific operating system such as Ubuntu, macOS etc. can be found here.

C++ API

See a working minimal example with Makefile which illustrates how to use the C++ API.

Tests

From the root directory:

make tests
make tests_mpi

Or, from the root directory or any of the "test" directories:

pytest -s
mpirun -np 2 pytest -s

How does it work?

Fluidfft provides classes to use in a transparent way all these libraries with an unified API. These classes are not limited to just performing Fourier transforms. They are also an elegant solution to efficiently perform operations on data in real and spectral spaces (gradient, divergence, rotational, sum over wavenumbers, computation of spectra, etc.) and easily deal with the data distribution (gather the data on one process, scatter the data to many processes) without having to know the internal organization of every FFT library.

Fluidfft hides the internal complication of (distributed) FFT libraries and allows the user to find (by benchmarking) and to choose the most efficient solution for a particular case. Fluidfft is therefore a very useful tool to write HPC applications using FFT, as for example pseudo-spectral simulation codes. In particular, fluidfft is used in the Computational Fluid Dynamics (CFD) framework fluidsim.

License

Fluidfft is distributed under the CeCILL License, a GPL compatible french license.

Metapapers and citations

If you use FluidFFT to produce scientific articles, please cite our metapapers presenting the FluidDyn project and Fluidfft:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fluidfft-0.4.2.tar.gz (436.2 kB view details)

Uploaded Source

Built Distributions

fluidfft-0.4.2-cp312-cp312-win_amd64.whl (243.7 kB view details)

Uploaded CPython 3.12 Windows x86-64

fluidfft-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (220.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.2-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (241.1 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.17+ x86-64

fluidfft-0.4.2-cp312-cp312-macosx_11_0_arm64.whl (211.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

fluidfft-0.4.2-cp312-cp312-macosx_10_9_x86_64.whl (262.5 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

fluidfft-0.4.2-cp311-cp311-win_amd64.whl (242.8 kB view details)

Uploaded CPython 3.11 Windows x86-64

fluidfft-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.2-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (239.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.17+ x86-64

fluidfft-0.4.2-cp311-cp311-macosx_11_0_arm64.whl (210.9 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fluidfft-0.4.2-cp311-cp311-macosx_10_9_x86_64.whl (263.0 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

fluidfft-0.4.2-cp310-cp310-win_amd64.whl (242.8 kB view details)

Uploaded CPython 3.10 Windows x86-64

fluidfft-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (240.7 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.17+ x86-64

fluidfft-0.4.2-cp310-cp310-macosx_11_0_arm64.whl (210.9 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fluidfft-0.4.2-cp310-cp310-macosx_10_9_x86_64.whl (263.0 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

fluidfft-0.4.2-cp39-cp39-win_amd64.whl (242.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

fluidfft-0.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (241.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.17+ x86-64

fluidfft-0.4.2-cp39-cp39-macosx_11_0_arm64.whl (210.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

fluidfft-0.4.2-cp39-cp39-macosx_10_9_x86_64.whl (263.0 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

File details

Details for the file fluidfft-0.4.2.tar.gz.

File metadata

  • Download URL: fluidfft-0.4.2.tar.gz
  • Upload date:
  • Size: 436.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fluidfft-0.4.2.tar.gz
Algorithm Hash digest
SHA256 5e35f1fb647da2fa65c116bb0d598fc9cb975cd95c41022644c27dc726c36073
MD5 d3a117d2cad3e8ebcd438510ed21d761
BLAKE2b-256 f494d01bdb6bfe0f6950596b3521701cd39d5e9230ef4b62c9d2032b369e186d

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: fluidfft-0.4.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 243.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fluidfft-0.4.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 91479a5b9d330c7be14667fe4cf9a538e57e431da96a0b9da0a11d5815641a04
MD5 4465a63d642478f31b3853adb2085046
BLAKE2b-256 78c0efee9e0b47353a2e809458be3b2253c41e86177c49d2aebc0db955e78ab2

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 21c7dae2a65ed452ba2e9a06f633c59cda85d4c0d6f83768cdff1a8dd829e76b
MD5 b8a22f93cb5c335c196bfe492390c147
BLAKE2b-256 bdf735ef2cfe39a0d7ec7b095575c385f8e4a595d1fee50826e4c4e081bd2d63

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c4947f92fc7a66b3a1808dd1f9cb9057059bf8e295d298da44251b9779508e5
MD5 e60638f5e70c00595bcc71a9b5aabdef
BLAKE2b-256 373c82d7474dcd27173f1abc658852978fdd201cd1b5e864e155a9b9d09046b8

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c0efbd45a9fed62325c960e9a1931f5318325540e6b7e4cf2fbd48fcd30fa7a
MD5 c0405b9282c0c064df410b59552b859f
BLAKE2b-256 f3e578f1a9db9a86105b51c175dcd3a0c10ae7205559795fe2c2c85cd70a7303

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eb4760bd4c860cc0e0c50a53cfd1ba180e7880692decfb9ac1299b749de64858
MD5 f7f46430dc87c73bfcecbdb082c107ac
BLAKE2b-256 07776f28a97a50179c74d12186e42ec72f0225b792493bf1840804616cb948a0

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: fluidfft-0.4.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 242.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fluidfft-0.4.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8dbf5df6674e308c34722bd73da9601fbdd6e2f377de429308538c0898610407
MD5 3514da9c3661139c5f4534cb4f43ac54
BLAKE2b-256 58aa5c403ed94123fddb32694262e3b96986a22ddc685c233d87233d3c7bfd4a

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c5f36b6a8534b9e96ff5ca5c9c3fd34f8fc2201f9981d7eb398fc0c43eb1ee7e
MD5 e3b5ff9cded1f0b0d756b9e3a505fe64
BLAKE2b-256 673fca2b5fd12ce461d6e00a072aca4d68e0db620b09a4efa888a651a2226712

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 445c2940c60d3edf677a44bd2519356bfe9799175fae57b51bc9d07052583bd4
MD5 78b0593fc8f2a3015f75ae5fc28584f5
BLAKE2b-256 fa5ee514120584a10870f2b2291c91f299ef63568724fb78d9f72acb2b6fbdf2

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3fb84094b7e0cc448588581cdc74b03668b6d4c2a0b1c1f2113a55d9c3bab318
MD5 16564a6494a4cf66aa148afbc77998dc
BLAKE2b-256 afad5e5cc2e803e8bc7edef368e570494782c9be5f3ed3adcc90c8ac721d8914

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 19a185a564d910bbebb210f572e304392ed8dfa3566ab6ea9ff35707b8774c84
MD5 b20db9f9ac1c993e55b490d63b7a215e
BLAKE2b-256 1301372b26c16028855178a851aa9133271d5690c4eb312b3921522d3abb8277

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: fluidfft-0.4.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 242.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fluidfft-0.4.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b125b9197893eefe191e7aa0d351bb4e195432262e897cf5efdb8cf172170339
MD5 28ca568603fa92784ca9af0244d86dc9
BLAKE2b-256 9a4971858a01a6259c7069c038c1dc215483643b91789937362411ce12fe1db3

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 90477e12e81c2a4f46836aa914a17107416a4b39dff0e8139500613dc62b1c99
MD5 acdf988900e943019f69d05a079b9812
BLAKE2b-256 19124bb8a9d9c8f6c9316db6ff5ce2fae5f35c6d6895422d1793be2fc739c32e

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d2c0c425d5b6fe5bf23e52f644c08db3d1be310a627d8f1e90787614269d2e7
MD5 9774792c2ee3d86dccac10d77613ec59
BLAKE2b-256 96256ea47d47ac26937df40ff1c49b9ab0f0fd61ab321fcb1af823807a198184

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f72fb9b28f92180c3e65a979b7f80dfe332f8f64c32dbf021ed41dc8ec64256c
MD5 311d4db453669a29f5339247b5870959
BLAKE2b-256 787d26c35e87b45a2942fa62d3acebf652c3ce778de0b8004dd0021b38a7176d

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e23b5ee3373c1703c768c7a87c02e8d18492d3d0d7dc5f659a2dbc1229a18198
MD5 55d3247dbd655a80e6e368ea5ca4aa8a
BLAKE2b-256 4da38e2f0022943187bfe55bed285befb457aef19c4252e95773c3f771b94970

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: fluidfft-0.4.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 242.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fluidfft-0.4.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 db35ecf9026686d76b7efb918064ec0210827005e38b2bcc653060165cd7663f
MD5 48404b34b82d7c9ead46eb2eee261ca5
BLAKE2b-256 456143da066b3cccf63e32869ee6f2d3758b42bf7b6b8f6d2850f60a91739a50

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cdc1f70925178804c9ccac28b9a27514a6215ce6aac73a21c0f2e1216b27c93b
MD5 642cbb579c760e1e38003fd652c2d307
BLAKE2b-256 120e943ea9d89a0e130342115876345cee0a3a41fd263c702709d10fe4cd6dc0

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 beed79f4c597572f3f6669c48d2f3ed9c6a2ee2e7424b0e60bc5388de971d58c
MD5 be7db16275464433d05f844bda9c8d9b
BLAKE2b-256 334c421446bf2986124ff73ae97c3290c7820a28acc4551d020f3a54f6e1f547

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 436a0aabd9672de3a5afd7a41096cfeb35f2199309774c69e3d0157b4a155509
MD5 f3e21a9f5af59dcb06464cc82f668e81
BLAKE2b-256 e3f3fb81d67ecc64e50b860fc8b19a60f1cb13b08e7f3bbda74f2882faff67e2

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bbab008b6441af1e4daf6b9c0bcfbb0b6f6c3149f3b655156ce1d37edaf8c69c
MD5 c788baee05fca68c4036c3e4b2af60a8
BLAKE2b-256 7c1871eb535941b69435444735b78385a5022f29d456603c38cbaf4dcb41387b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page