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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.12 Windows x86-64

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

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

fluidfft-0.4.0rc1-cp312-cp312-macosx_11_0_arm64.whl (284.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

fluidfft-0.4.0rc1-cp312-cp312-macosx_10_9_x86_64.whl (312.0 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

fluidfft-0.4.0rc1-cp311-cp311-win_amd64.whl (232.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

fluidfft-0.4.0rc1-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.0rc1-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.0rc1-cp311-cp311-macosx_11_0_arm64.whl (281.6 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

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

Uploaded CPython 3.10 Windows x86-64

fluidfft-0.4.0rc1-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.0rc1-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.0rc1-cp310-cp310-macosx_11_0_arm64.whl (281.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

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

Uploaded CPython 3.9 Windows x86-64

fluidfft-0.4.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (209.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.0rc1-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.0rc1-cp39-cp39-macosx_11_0_arm64.whl (281.6 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

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

File metadata

  • Download URL: fluidfft-0.4.0rc1.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.0rc1.tar.gz
Algorithm Hash digest
SHA256 77b1f2e09b66001aff330c1c21f45405101f9d1383a5929593a4ccdeed8e4b82
MD5 3b54bc1d10dc5665c0e4f801037b070a
BLAKE2b-256 cc5cf93fc66cb464c47cb9743306248b67ea5c73e74b99472fc43c0f7b6681d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 50da9f0ae4c34f5ca276f42be4fac54b60977e0b31dbea89033bb76c3154101f
MD5 9d35082de1e2278035ec7c3c64d79672
BLAKE2b-256 cce369dc1bdd214fed832caebf9618e1717ba0cbca41ac4f9c53f483e253b9da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bc4e27fcbeadeb01d631d78a01b39f5641686dee59b85e5d3ad296c6f5801cd2
MD5 26d58f2a59fb08e1cd5c320151ecd664
BLAKE2b-256 e8c6ed7d4ceab505df7f6a8002c873e454ec6a906a6f37df7d815929ce41bd9b

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc1-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.0rc1-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7626b8a89429a62c83be8339b4934b34319fa05cc15e0e9cd350d1c9b07e3810
MD5 32ec17eb4e15223bf7b7ad44fa970b88
BLAKE2b-256 48156b88a9047be1ce9388b2f9ffeaf0c0f31fc8df42d85642a5e7cd90b993f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac51167b20dc70cb5541e739820b54216d038c20d82b1fd7ca5df3f271a4602e
MD5 0c9494cbeb15131b1a60da8524a93b02
BLAKE2b-256 5a0a430493288abb6f0def749b97c2476f2c1940b9982bcd4c61e066d535f5d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2b840277f40d107b124b02797849039420b1cf7ac159c605be37fb5d1eb646c4
MD5 029f9e05c3ab900f6f8c14573d36c59f
BLAKE2b-256 ba7fc63c5fc949ecd3efb0cb61618bcc8c1a2c0e8113c21a125507b01b591db3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c5aea07d2265b57922f49687d4d8861b5c8c88596026e26f94a0f2a2de173513
MD5 90894d12943544ace70cfa40f75ff8c3
BLAKE2b-256 924873235a66fdedb33204b1f3fff42dcc0c0535c6af07947ebf65f7c969086d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 60508648a51280a362169f4c46877b46952a3aea3a7ac758fb792fa0f230a536
MD5 466b50732f8b1642723e67363798ef69
BLAKE2b-256 8906d7adff2b751702bbb20273cfe1e90c6f84e3afdf539d4baac014be75256e

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc1-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.0rc1-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 01f5fb4dfeb3fbd46ff77988bd0bf4b9c1aade4c381c6024c3e518a6d92f3007
MD5 c67aeb2e828c9911daa924b3631a40a5
BLAKE2b-256 3de3f27299509008a1da58391ace36eda6a6e69870231359423650cd50a1bef3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61474f5c8ff5e2e70a2b475f8d631cdb7eda8010b189fee1dc9ef79e7c92c0c9
MD5 5d8d43ff92e297ff1b9aae4a2fbd3932
BLAKE2b-256 ac23a0523acd4f0d675500bcebf18ba3d065a4b21aa4655526dd177c763cb89d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0146a7ab2f07beef458282d6c405258ebd28eaf425bd7168ba8b4588c1a5e124
MD5 0d387ae7248942881c1289bd962df120
BLAKE2b-256 90c44a26735e8d04ec5221b787ad4db6eca773506f2db6e2913f20125b66deab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 34357b6658f77eb92c8e24daa8bb7b55b56244e5ab68ac4194500fb7a40783a7
MD5 1db6bc627e32a19d320de7f87a419d28
BLAKE2b-256 255607f2a48d0ebf20a2616bd86284d75e933d2a9d1f8446352f1ebceeeb7105

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6d86f73a44d7b602ca170b8882610dacab373ac66228030e4b89a809ce77fb2e
MD5 b9f4efacee403b2155a98c1da0a219d6
BLAKE2b-256 73a88db854f5f4862e962b63041c7a6cb22015f4f0e5cd6a8b2caf85eb66771e

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc1-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.0rc1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83b971d967db6e42f7d4c9dcaa7610791750d14fa7089eed724edba61bea5148
MD5 66b46d60d586b3cb002193753fe14457
BLAKE2b-256 2d66d3d2196043dd66692a709e5964b8ddc83d0935eb87e0dcac8d8a19282364

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 30ccf04c02887c9243aa770132c6c148fc7b6e77d664778fa06fbfcb8b9172d7
MD5 4712aff0102171535df699bb4a9b1c04
BLAKE2b-256 945e8682cfc0be62586cb774c5275151261cb47b6f6ebe22bc9ae559e7a86546

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 073f6473d240a9594d68928e16041866c60853c4acd8743fad2c7f6bedbe34ae
MD5 77659ec1a8e8da5b1eb915816449a6a1
BLAKE2b-256 eae50f56b50a28845700a126e123fc9c2f72081a986571455f1b4d3de9f52e23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 02cea2da9f4ac7d865f9ce4617bd400444e18a1537b93d73112090e69df20a28
MD5 a4b36961283c3c59a847cfa92ce16451
BLAKE2b-256 4ae5a5542e5c25bce73d93e3b541de70e1b0af0032f9b000b623abe5d42815fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6559dae22a76271b37129d56fb13006838cf645eb4f4f7fd6a9d9aac1d472a67
MD5 c1d921753c31b02149191675e03a1464
BLAKE2b-256 6efacb8e8878d265b81d7914df4f978aab078b108ee8498ac239d8163d035671

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc1-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.0rc1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 396b7bb3ad637af85a86bd9298622c22d0e7d68c851f3144cad60aeeeb704142
MD5 b176e2056e28802f07a69a04c29d9fb8
BLAKE2b-256 a39ff44cbd6e0809d9b384ab59e2c680aeb5a1ccbe4b080ec1cafa54ce3c455b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b373f2ba65b329a5212e4cf9e889981ff74aaf55691d40f133c647432fb42817
MD5 5f14686947a156d0f5ddc810bec8c0b9
BLAKE2b-256 b45b9b8391964235735929bdf26760364de0d588c80024064138494d8f20a3f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 64be1203a43e826188ea38ffd684dfd8b59e77c4c9cb019a4e74394f4494ea90
MD5 ef59d3c53b29913d50c77de9f0074003
BLAKE2b-256 f33febeb70ee3a6c98469cb3425140ab987f2bc70bcbd66197d623c346c446ab

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