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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (284.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

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

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

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

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

Uploaded CPython 3.11 macOS 10.9+ x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0-cp310-cp310-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.10 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

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

Uploaded CPython 3.10 macOS 10.9+ x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

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

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

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

Uploaded CPython 3.9 macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: fluidfft-0.4.0.tar.gz
  • Upload date:
  • Size: 403.1 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.0.tar.gz
Algorithm Hash digest
SHA256 d5fd2058c8ddd7934339a0ccbf98df4a8b43de716e0dcc770d1b2cb09e72be64
MD5 df4c739365645a835a70a191aced7d36
BLAKE2b-256 8588b775c5054eb7b69b44b14150fbdb13fe1ae55ed151daedc1b463912aa47e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fluidfft-0.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 232.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for fluidfft-0.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ed3a1c633a931ce6047b992d6d8e4c3c12f7c6469e63b1ead9191703cea91cea
MD5 56b75955b7d149ee1ac7985caf2ebdd8
BLAKE2b-256 b19eeb1345f833e79e07a34c9b6d088b043304894ef260416d1e4fab14c0d6d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1c789370b9634891d4c8b95ee8d2999d4b53155c96f9190f6b905b3616a902a6
MD5 35b023096172343a31cac7d2d90892d3
BLAKE2b-256 86a574da81d7cd65da854a37e7bbbb4da57510f0ec55b6f5be702a5458d797dc

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0-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-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2abeaff6851f9742adf1557d68efd7db3b97c9c2ec4de31ccca0a45b98b77c57
MD5 6b008af0ff40cb32848cb480946e88ee
BLAKE2b-256 b627643a3d05d18c02eb2041e75530874651f75aededa1c8be990adedad14215

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c5f9d7312d198745c062c0cb4eee46265440a26b29b62dbc5deda9fd2204d58e
MD5 1115faa7d87f3f5fa37bdbfbeb3a13af
BLAKE2b-256 966bdd4b77a0c45a0a6d6d432e064d01f016357e4e99758d860ab4ff22f21925

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 244bff63eb66513ddb96720fb192bcfff54b8d0a67d0371c5671a3944258cc38
MD5 8c5d21c8daff5617497f9871f36f68d9
BLAKE2b-256 c97c3223ca624fba70565577622e0c72f766a472725577d97483d9662ff5bd90

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fluidfft-0.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 232.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for fluidfft-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1028205f790986188921e92448c5844e108b71de39fd3b33ba13a5749843369b
MD5 bc2ee67c72e1604304ee01bc87c69e7c
BLAKE2b-256 ac6df6d2585057a818a6269afaba304ccf42774c40d4757f5389e31488eb13d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c095e9f8abc211b6cc0f1e8378b5eecad34919417dece5fcaeff369863f51faf
MD5 dadc044fb42d9d6434804b9ccd89d156
BLAKE2b-256 afa2de815183f6b3311b8a14f78b15bd3d82a7ca46232758e28e7a344854533a

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0-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-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd9b181df898b898a6be62d08f65e338c6f482995225c93419438dc83dd5043e
MD5 e7ec263bae357ea485e06ad537397276
BLAKE2b-256 a3066e7653bcc187d386eb1c41fdc5531c26af306f5bb4fd8dd404573163e07c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5daa82e6614829206a8b40cf0aec5c348eb84828d0ee5d4d1db9866349aad69a
MD5 bf99222a3bf4ebb290af2b71603c584b
BLAKE2b-256 5d48dc9a54dba2525058cdb3ff83c92c1f9b2c7ad02fc68feb07ba458457cee5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7765191320c831c6055a40c8ec7d50fbc319ca36ba539f5246ebeeaf85a76d52
MD5 1613a5ec200196c0b9c7402949257399
BLAKE2b-256 1d6896bc11e2326fb2f38dd527965edd82ce3f5db755f25e113ee17cfae41f54

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fluidfft-0.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 231.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for fluidfft-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d278b467b96b87869c149a2eedbea7f9ffea505a0030f1e14c556b46aedbfef0
MD5 eb2bfb0166ab513ba9389aeea67f84b7
BLAKE2b-256 b7298900316ec5e34e9c454ab7faad4fce71f556c3488042ee6c26cefff31b02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 df8a47425e55c9f07876ecefe580bd5e17dbf4b720a0d89e057ed647e20c7255
MD5 764f91c55aa17b5c9093f89f66262da3
BLAKE2b-256 7321f5ef2f8d1cb96085acd73792428be969126f6be9deb55e29033afb195171

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0-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-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 20eb6766b55dbc6ee9296e75cdf2b3afdd38d0994217c06c21b387bbcea5f6a5
MD5 34157c4e41f9f599a1e1b29e869aed07
BLAKE2b-256 acb36cbb436fbbf9b26ca8cfce206d491042550487a1149d137cf40b89adb828

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4cf5f33265b13f8b13a6728d955af3777f3d376eee98a41f8578aea3b2db662a
MD5 5ae102924a44bdbdc2cfb60b0c21c75a
BLAKE2b-256 aa122a18c2923622e5e5a55f657b70ea0673c481bed3c9d8f40ae45e3a48cc56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7e76ec03d3d8381a95d49c4dc0df3bb30e4adc73ce68b63234dcee5c397b2c84
MD5 f871a82174057be83ef3176c9fce2f69
BLAKE2b-256 8863cd53010975bef55981e75af3213e9d153837873474eeb406b545898d2a9b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fluidfft-0.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 231.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for fluidfft-0.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 7c31eea3a29dbdc06951f902ef7da2b68a9e9453ef618d29e1b6ac88f76c59eb
MD5 c650a79fac31c6c6b7fc6b1ec7b6914a
BLAKE2b-256 e05c7fe3e2f68271b5dcff4bc689332266f23aeb2430b660f634608ce3fe6589

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e2c14ce9604ed6dabc36269da72ce215a0d8dc558fb6ca6478e57d03e997f72d
MD5 e14acaf7fbcc3607b7dbf108aae26323
BLAKE2b-256 a7be8c72338d9411d2878af8b551f04a887a1b4f81504103a6263e011b6492bb

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0-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-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b6ae45c8bac3d305d6920969aafbc88d4ba2fe08176206df0530f7e61b9c12b4
MD5 faf28c36b0be28443b17899ffcd2a6e3
BLAKE2b-256 8fb36b4bd8686def537abfb9f39a64b60dd7ce822ff95616cfe7dfbcb2c1f599

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42e144b3e119eddd223f2a9b7ff137957b947fca9a024b78e39d59c2bede6843
MD5 cea1f67c86103f0dc9947b5433ad90b6
BLAKE2b-256 ff90f9d0c0fbdcbe8c7c0d19baa47654661fd4ccc78b943725602b94c12b430e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 01276090ce65ff5301e5effe903e35e1626ca9a18fdace08ca36a56fbf247e29
MD5 139715b31a0c20d662a939f57a834d1c
BLAKE2b-256 c129fc6968dbd1c43d4e07793a6cfd4092afcbc1898b9a845b397e50ccd901f6

See more details on using hashes here.

Supported by

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