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 Windows Github Actions macOS

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

Uploaded Source

Built Distributions

fluidfft-0.4.0rc0-cp312-cp312-win_amd64.whl (232.0 kB view details)

Uploaded CPython 3.12 Windows x86-64

fluidfft-0.4.0rc0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (213.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0rc0-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (233.4 kB view details)

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

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

Uploaded CPython 3.12 macOS 11.0+ ARM64

fluidfft-0.4.0rc0-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.0rc0-cp311-cp311-win_amd64.whl (232.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

fluidfft-0.4.0rc0-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.0rc0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (234.3 kB view details)

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

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

fluidfft-0.4.0rc0-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.0rc0-cp310-cp310-win_amd64.whl (231.8 kB view details)

Uploaded CPython 3.10 Windows x86-64

fluidfft-0.4.0rc0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (209.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0rc0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (233.3 kB view details)

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

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

fluidfft-0.4.0rc0-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.0rc0-cp39-cp39-win_amd64.whl (231.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

fluidfft-0.4.0rc0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (209.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0rc0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (232.0 kB view details)

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

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

fluidfft-0.4.0rc0-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.0rc0.tar.gz.

File metadata

  • Download URL: fluidfft-0.4.0rc0.tar.gz
  • Upload date:
  • Size: 403.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for fluidfft-0.4.0rc0.tar.gz
Algorithm Hash digest
SHA256 f9a70fa1402fec6aad45efa09f6f33fedcc1c24888503afba71b23485988a657
MD5 21dde7653eb49605e7d1d68f7a237685
BLAKE2b-256 0d0f022fb0b46f255eaeb6e46d7072d1d264e2747bcc7947f26b0ae187bc163e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6a2ea64486ac1466ed4b380dbc3837986c3b1c31e729d4a7a02f9b97af664c0d
MD5 5a52b9f94d81f088c13341b857f80285
BLAKE2b-256 282758b9cfd74392665018e6e41675b697eaa4c6b4c546c479f9e6e50e7e09b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c51169938ba09a6cc81917ab1a5bf5887f7a2d70240cb1d7420d2f2c339d2165
MD5 77ae33ae9eb48369aaff6d9e2c667b3c
BLAKE2b-256 fdcb33cdd1285f351504691b7c14babd0f6415051b28de330afda25e28a0a77d

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc0-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.0rc0-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7b45a224d1fa809c05e14dc99c241479d84cd53af80a4c0477fd113aaac3ce6
MD5 a5051df28447f3bee40cc3371a9a8a5a
BLAKE2b-256 1e58901d77366ec81bda3bbc0436ff75c8b134492500a157e69f5ef277f6f768

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4adeb8ac33a86951fb874c559aeddc3542d2bc1a5164f39ea264763c9d96abf5
MD5 2acaed9d1a35f0e6d294271f04383af0
BLAKE2b-256 009b3ff75c765da78d67f518f04c84ac32d40917c501c65af248e607f7d49d22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4b19b7143eb574630cc194728283edb2fae5bdef5fbae5d329cddc9f8d0c2b97
MD5 b9595a4b6d20256c7db9f98be718777e
BLAKE2b-256 e534ee27f25558e0ebb3287b906053fd95c352642b155dfae8eaddc43a1dfe6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d10359e8be98fb3bcbc3d9202045a2ca4363bfe607f1ee190f34e89c3c0defb4
MD5 349335e28d9622372095439db69de37a
BLAKE2b-256 d010ee57f41f9450aa2d50b695e9e723c30496cdae59928282507fd553e638d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2e408cd758cdd6ac5f0621bb1fa4b55c24ec28e5faefb73d262168a930e75d5e
MD5 74f3d9fb18a7b08b4a824da0e439e22d
BLAKE2b-256 50ca44d95a6a6ba3fa7d29b6c82e09ddb8499cc2109473562621fd9cf11ee584

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc0-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.0rc0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8f1bb92705b579939d4889363e92195d760d09439fcdbdf489f74786e5f54a96
MD5 6ff60d18910aeefa802b2d90f3480ffc
BLAKE2b-256 6d6b210c8ca253a723bee1ef0bae1c7f8843ac97d738cb8f71b2b74fb98cd37c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6cfd06f946534346138cd4ddce6f57ee60f298ea375cc324565137675ec3b617
MD5 c9c8c3e53f0f48b42633871f1aceb63c
BLAKE2b-256 7f8b081e2a05e67ffa75fd46937ff2361c8028bf3eb53a0caf9316c85f837d7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a991286ff4537ae578e1a4f3be8d36859a0ebce4eb8ea38134e708baee9c9f93
MD5 8036975f244b52cd386c08abfcb8e435
BLAKE2b-256 9fe2cc9d3357aa66da7281e8cc2683929a3dba767eaf7164e0304028757cc2a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 160f07c352eed6726549acd3f73c88e93b8731cb143f85b714e37c82ea59c877
MD5 1a4cfdd2d17219a14b64479229a7ebac
BLAKE2b-256 120be052a230939fb42f17f46f002d317e0a2cc9223d2f122f9f62148ef6c721

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 01448bdc4340ffd2ef170c62cca0cd786c244ad7eb1825979a2cf8096df52301
MD5 aa44addde1a2c15f3079f494cb7393c5
BLAKE2b-256 8df4ad182a0a07f0787f9946b3f3bdd733e994dd6fa9948024a449be4a9614f9

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc0-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.0rc0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6553a3bc0d6db11b7f62c6faf5ea6a1e30172f2df87b8aefdc044402430ebe0f
MD5 d8ccafba0d383bb570f2aa9eb7974270
BLAKE2b-256 b0058b5572f1e674ea68df861c2ec545348c6c8610611b8db9a29c82f298df09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f9aa4828dee840c4a7c16f40c399d182cc33285dcf121004c29d38142fbb5f6
MD5 969870eb612a671a5336d635b33aaafa
BLAKE2b-256 f2cac68a4be5e2b8fd602e2ec6fc9b82c9f1193d96402f8ef68f1e6d0eb0e519

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ea2154c544358bf0783052b9743462bebcdb4ff0b1952a295c03cf36efe9f1da
MD5 c5be2b72a30dc8ef07a9c72afa2d1a06
BLAKE2b-256 61ff418c9b82899ed6b0382502720801599e27e9994c26f0bff2bf9b615dd340

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b1db1c3b26253280c9d32591f239af7a12b40f1ee3bb5e80f9b3aac466347f4b
MD5 8cf23a8710b59b5eaabf41bde3f9ff8e
BLAKE2b-256 e1801394cccda89ac81e19e6f27ec1dc55e7b4e428cf1aba1d93c75e38baaed3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 668e17f0d178384b25c4907f962bff36353e735409b24e36e92cd8ec172ff985
MD5 0ef7f7e0771b1cef4e44dd417179f84b
BLAKE2b-256 014f20cbfe3ac32a0feffeaa3949cfd60182d00cf0e359b51944f383f6084cac

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc0-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.0rc0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa323b48b05e1fd614c64789882909d2d04adfab111d492956a3f1f8e9749ade
MD5 43e70b6bbc6d4616bd86b4cfb2b97d06
BLAKE2b-256 3e111724db5c0d6d60723065879c43a907b76dfce78b55a3796f364b022b2e87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b80e4148720b975590e5ed483df33886af82a7ac4eefcff4f465bf7a8a3f529e
MD5 d466601f7d3100b2ac0f4bdb50e8c57a
BLAKE2b-256 95d1ed8b4dd8c578c9c1e790806bfa21a0b62e2a245f93192d6f3f18bd2a4696

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e88f823e79910c09e1c475a0dd360b6164f006eeebd8199134910a9c96bb4b99
MD5 ea37a860fce59519edb485189de00ca8
BLAKE2b-256 8db935fd6fe392d2c5008270b0a8e25a766a0f687b622acdd23c1a198cf21b34

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