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.0.post0.tar.gz (426.5 kB view details)

Uploaded Source

Built Distributions

fluidfft-0.4.0.post0-cp312-cp312-win_amd64.whl (233.6 kB view details)

Uploaded CPython 3.12 Windows x86-64

fluidfft-0.4.0.post0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (212.8 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0.post0-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (231.9 kB view details)

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

fluidfft-0.4.0.post0-cp312-cp312-macosx_11_0_arm64.whl (284.1 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

fluidfft-0.4.0.post0-cp312-cp312-macosx_10_9_x86_64.whl (311.9 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

fluidfft-0.4.0.post0-cp311-cp311-win_amd64.whl (232.8 kB view details)

Uploaded CPython 3.11 Windows x86-64

fluidfft-0.4.0.post0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (209.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0.post0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (232.9 kB view details)

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

fluidfft-0.4.0.post0-cp311-cp311-macosx_11_0_arm64.whl (281.5 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fluidfft-0.4.0.post0-cp311-cp311-macosx_10_9_x86_64.whl (308.8 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

fluidfft-0.4.0.post0-cp310-cp310-win_amd64.whl (233.6 kB view details)

Uploaded CPython 3.10 Windows x86-64

fluidfft-0.4.0.post0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (209.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0.post0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (231.6 kB view details)

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

fluidfft-0.4.0.post0-cp310-cp310-macosx_11_0_arm64.whl (281.5 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fluidfft-0.4.0.post0-cp310-cp310-macosx_10_9_x86_64.whl (308.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

fluidfft-0.4.0.post0-cp39-cp39-win_amd64.whl (233.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

fluidfft-0.4.0.post0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (209.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0.post0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (233.7 kB view details)

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

fluidfft-0.4.0.post0-cp39-cp39-macosx_11_0_arm64.whl (281.5 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

fluidfft-0.4.0.post0-cp39-cp39-macosx_10_9_x86_64.whl (308.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

File details

Details for the file fluidfft-0.4.0.post0.tar.gz.

File metadata

  • Download URL: fluidfft-0.4.0.post0.tar.gz
  • Upload date:
  • Size: 426.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for fluidfft-0.4.0.post0.tar.gz
Algorithm Hash digest
SHA256 9c56278daf30a8d3af2ef872da7246ba64d75f1f902651308edc54e880a134b5
MD5 a0b63cf450162b7bc7d786af7d54b68c
BLAKE2b-256 c6723ca3ecd982e5b4232e73ab73c03d91f2516bde5f1035c8e4a9ad988b523f

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 06c1238ffd5f4326b217fe24efb017ed57e0eb6403c97f4a4f6d0177e401137c
MD5 db308cee7ec3c3b7b4d4cacd1e0a8eba
BLAKE2b-256 6067d201fc7310ce36ad01104f42b8e0f6da755a08e26b998fc291a4f67c09c6

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8f7591c22538da76323330baa14f6a2c7d8ab5274468895a36768f3fd204b9e1
MD5 464202c1f7fcd23c9b289dadbb308a3a
BLAKE2b-256 61aeddd3ca923eceda62e1987543aa6f2cf831e35a6e8f03677da77c8037b46a

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-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.0.post0-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d83dba5a42407ff727c6132062e443cca7de827cb91b3190084ba2c1f0b70d7
MD5 a4fd2ed5542e98f986bbd01810fd70d8
BLAKE2b-256 e9f621de952a8d5e4a89f7bd0e45560a138ede5a0be9d786095b2e2e5fe00cef

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fbd03f8923d23d87242877ca7235e6b84387aaee941314b080c99742a4814ec0
MD5 505a61a5427682f6aca2f0759996e5f4
BLAKE2b-256 5d5cc8c373b0fb7b4ddc53f893d17211609e29f58b94ff95bd4556f5caff9797

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 61a3b11260a4a57f3204e3b180b16b737d11830ff47df311c49b6c0159daebc5
MD5 984e2af0d411348ced7cf159b494facb
BLAKE2b-256 de0d246b38f21a4667407f04e4d12edee3c8c81c5a3df7bda3e82ece545f8d6c

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f7b49fcee6bb64a55faaf25d0ac6204f91734f9dde9b36dffd00dedf96508903
MD5 696a58b6535b1e5fe2de8d96cf1fa0f8
BLAKE2b-256 8fc2dea55682f9e746d30a415c42b4a51b4a372812e0b023c517a29d57911f3e

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f051c04a20a7252c24a0ad80090275cd6ef1d0fde1453192eaca75905a893eb2
MD5 88a4cec8b485219fbbb1c932c0b984ae
BLAKE2b-256 bdbd03dc68e9fe57ae7fd403cd6d0b8a4ceeb91d0ce64e6444ea3cc70a9794bc

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-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.0.post0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 639d533b0eed10ad389fae124bb9a1da0d3f02bb10c765f529e682a566496612
MD5 a66e7da8b0c61672fb66edfccca20b04
BLAKE2b-256 06a523731b6c93fd793a47d876ae63377eed34f0178889636ee2293033e8254c

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71c481e43ebeaa9bca7bb3a5888f1ce72ffba70c3600d42774559b0f17f03432
MD5 5960ed3fd6c7bf028239b3d652449a1b
BLAKE2b-256 0ab417965e52502e6480c13c4639d03cb062b6ea5ae1f0dcc773c8b733e565b8

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9d4793f01faa08d748c6c2f6d92c4c725396db0afb2cd7cec22c7f657812a216
MD5 a1a94b0f06cd2dfad0b64652858da0ca
BLAKE2b-256 4b9c8ec8f528a68fb9c716239190c9f2998c8f049d59c1717f0ffe2f75b3f04c

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 87965bb301a46bd77a8f286da1714bd59f96b29e1b78739bc39ea4217e16dd0d
MD5 5c7df479419d773bd8df0dbd9bab71f6
BLAKE2b-256 372830541991df4d7a4bf76fd91f83981933f660f62f2876bf93cbb0f3c39c96

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f3a4d824e15d81cb748b21c0c50e5ee36b0ce25bb55164f217e622d1780ae4fe
MD5 98702538d94d559d930a17c9cb33c80b
BLAKE2b-256 073a91e91ce22db1b5d11f4fc7acc6835f06455a43fa243618ada50991153e76

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-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.0.post0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 29ba2e58519acf345e32c1e8add9c778f42b0eaa511b8d5270a720dfe002b6bf
MD5 9fc34175b843d3fa7760f5910352dc35
BLAKE2b-256 22be2c2a033e5673b3522bc6399ebe0ced97ae05c220a912fb3e40d47adff947

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ffac5b3889e23282c154d338c8481308ae836e6ddbbf9a7a1741ebe9122675e5
MD5 2326659e792fc80093726cb4a5616cd5
BLAKE2b-256 69cd31cdbac5260a3f37ba286fcd646a0035780fd8b6786700e12f19576f6eb8

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4da9e38cee295bbac1825d40979a449d160720de53da8b8e607458a2c5dbf7d7
MD5 d3781f7250b37ea0acf02ac15d989963
BLAKE2b-256 dcb396e50224c75eed9f04bc998f71c8e56bfee6c72c048a626d40c20f94c582

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 348613a8ffba639f04eddd06f4e898dc242f46c8118e8359cfa8a3a546ca3d48
MD5 9e5709c3fbe4c61adb01568a2609c974
BLAKE2b-256 678b56ddc0bffa192345f041d7aaff80b64fa076f1e0d40485dc14a1e78fa979

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 043d111397c4f23ea626877d9f76ab47ec04f3817aa53b5b849cfc5bf4051d5a
MD5 653a692a9ff5017454b1662865593d86
BLAKE2b-256 5f42e12bc004569d3c38321c0764e0402453da288420eb613bf62534de7ac80f

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-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.0.post0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a0c295a4563ac2c49302a33e87f89a4f069b5a699435115caf8f2cbd1dc61492
MD5 da08a4d60a99b9e95993d407205a52fd
BLAKE2b-256 30b381156e23e0683a0daae1f81c6d38415f215d322bcc8425ee5fe0ada8858b

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ab289e45c393ecaac641dd29d68fdee45c23e0f8fd460c31cbe003a3ac9b9564
MD5 86b8447f2a0a1113a3f249dcde876712
BLAKE2b-256 1ceb345133212c52e3ff6c01854b881f55cc46c849f9148d9c84af7df6c0a630

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.0.post0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d0fd71cbee21b99b48f21f210d5f5495719f42cbef5ce1460d75cdfe3d6f3564
MD5 091c7f004cd71488cc525c6316ac642e
BLAKE2b-256 6cd83f569b733a030fbcf1de081e814104abdde874eb194d29ce61a44f57f7d0

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