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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 macOS 11.0+ ARM64

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

Uploaded CPython 3.11 Windows x86-64

fluidfft-0.4.0.post1-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.post1-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.post1-cp311-cp311-macosx_11_0_arm64.whl (281.5 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fluidfft-0.4.0.post1-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.post1-cp310-cp310-win_amd64.whl (234.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

fluidfft-0.4.0.post1-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.post1-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.post1-cp310-cp310-macosx_11_0_arm64.whl (281.5 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fluidfft-0.4.0.post1-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.post1-cp39-cp39-win_amd64.whl (234.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

fluidfft-0.4.0.post1-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.post1-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.post1-cp39-cp39-macosx_11_0_arm64.whl (281.5 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

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

File metadata

  • Download URL: fluidfft-0.4.0.post1.tar.gz
  • Upload date:
  • Size: 426.6 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.post1.tar.gz
Algorithm Hash digest
SHA256 70791c92f43d7611c5db89d069e745875fca9be02948156a6c1b184fbc87cb4d
MD5 a8c5fe7530d14eb8d23b58fe4c12db24
BLAKE2b-256 88d9a6495c684a64e2e0c88d64e2e9551b23ba415e6d69539b4e01edb2efbba8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2dd87c79091fa939f66cc18215a855f9ef20033a57d06196d69d29e6347840c1
MD5 8a9bee8c64ceb132df01334c555dd2d7
BLAKE2b-256 ecf1e56ba3c71c47bca603552150bb1e2e7e60ec691fac5db299cc15976f0c5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cdab2ae0e091adb00999d0d382ce8e30fa4e77291142de910fbdcdadec1990f0
MD5 63bd04c0b115816451208ffa1db7022e
BLAKE2b-256 814aad0a47473063a8450c10855c1fa5dd0b2e73273d10e178d90c468aaf814c

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post1-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.post1-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b57041a38cf4d43bbd91ad3f591652332e9930033a012cd6490bcc91f3f8fe32
MD5 05863434093e278cba1e23325591cbb5
BLAKE2b-256 7e9fa15e667f9b1e472be2555b5aea2e99fbcf405b998d83feb7380f68d485b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 226cdeb99e559cb40d00c7fda8ae42a3ea3fc678413f182888bf52aa2ba451db
MD5 a70f198c882914daea99d397d0d7e59e
BLAKE2b-256 aa853d80aa2bd2e5b298179bea9801815100d46a4301bfee68ae173bd197a273

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bff1b2a683ad8ca3571fc4e6adc53ba27db7f19f99ccfa6cc366d9182af71f52
MD5 0f7ed8456f4c25a49864230b1922ee75
BLAKE2b-256 be9aaaec456cb5f5b5cfdd7faa18912a8372c26e2b9dbc2a689eb1158528ae4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2e314ba8df1572d5ee83bb8bafff8d59ae7c51c928fdb597b4e0af92098c57a3
MD5 f8e61333718274541f87f348667bd164
BLAKE2b-256 ea38c2ce72d4ea9bf39173ad62fd012c8aefad9bbce10df41081e1e7be32be4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c3d604530b6292002131971d5ac19ee1c38a77fdd778fd51fa6c9a415f2c3a25
MD5 2796f5bf4611c6a5b11947e697295988
BLAKE2b-256 f4270373f88891cc4aee41f7b50c44fe8cb2b972c5a35fff6c0e33bebd4f7e23

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post1-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.post1-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e83650ec76a74ef5c272f5b29501d92614bb755aaa1c3dc102a48db1b4938112
MD5 96b20d4fd5db740a929521bb8b8ed05d
BLAKE2b-256 4131fcef9bcf82fb38559f6f00f47931eada40a3f53353d03d60bab300586051

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7689c293f3467986a992dbe778f0a5e7cea315ef53c3b25a9c4578a06c8b5abc
MD5 5639e99b4d2f1ec0d100ae77b2d3958e
BLAKE2b-256 f4bb034162236f2b368115a28c562185a0bc7be0d2d33d8bf77c62e13a63392e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1c7e1ee37b141b38f19b1da9a0f849cbccf414a847cb91b2ec418a3117a7d76c
MD5 30db6a9f74333fd04b3a7a959038f383
BLAKE2b-256 f396ff92f4e24a21e88b28ab543458fb48695465540b9b07cd4dfd4230d2c43f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 447421cf80a649bc1cf97787b48912a0eece494136279d7d62b36641c8f74d3c
MD5 be2364c15bd7fed773c3cba912edc8cb
BLAKE2b-256 a3167aeb8d31677024ef1c855ad38098d7c5cdae4e90dfdc0899902ed2c9abbb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 37ce4caeccf1a465568835152bf94dc81716e0a241134b9481c25e72fd92e2b4
MD5 951e7cd7703a9158e106bd8a22a1aa0c
BLAKE2b-256 693610eb79f592636681786864b617a89e614f274c73cdc9ba4d8ab044103438

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post1-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.post1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6fd396b113f9400e48bd6c708e3a4d7da10dc7d0bce65bcbeaa9bc4aa275fc78
MD5 8cac3f5355dc86e50ee66367cca5fff0
BLAKE2b-256 511737b218b990ee3425160267841a1282f70d056f889bd370b21bc758077995

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8db109ee850682b68aec147834d93db37d1de7f80a40b98a42f269b96cae900c
MD5 31559085ddfa588342bbd3b937a99452
BLAKE2b-256 69a6c83c1b868583b9b161920f543463068d99d71fac5ef6900afd46c6010fcf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7dd227edc7dc598efdb0969ef4b106f3d065908cded7c8bbce50c56ae6c16742
MD5 64c841523021cce53511f82f20b56c7e
BLAKE2b-256 5afde4c0809ec45c4cbf1922d5267120811dae7338cb7d2690ee912a54b044d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 7dd0d013933dc8b6d4b187fc1693d87217f6e314a368d1838c06933d66473ebf
MD5 cf0649fba12473db6998d54bebcca3a2
BLAKE2b-256 0b9855386d40fd25e0b251c2b4042a4fde981a4d200912d87dd29a4424ca0265

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 50252bf2b17cfe9be49d41119d6528ab50608217bcf0cdd450b0849091b0b8da
MD5 306cbf2729b1b05d0bee96946f15290d
BLAKE2b-256 0185097d7396c83bae81c76b730e61a08ba74382b86b1283c3041bebf39f4351

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0.post1-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.post1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 683c466ce430e88d684852280e540ae1718540dc93f182f3c63e86e01c6b7be2
MD5 9a7fb5fb831ecd71fca10ccde8be1fdc
BLAKE2b-256 04f06f299f70a8d14e72927969d216acf5bbf06c8c2055a13b1842818b61b510

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce9cc3a5f5758a80de121c8399289345508f14ddba99a3f8b556aa6484d3356e
MD5 dbdc9025555b9ce8532e59ad05d7906a
BLAKE2b-256 a2f8c151aed3c1de6af40d6c617eec120ff3d51eb2762aec739a4918bce5920f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0.post1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c5d9c1ab848d1793f652731209f6ef246ce7ff1e6c3aaa25f554e1222e39eecf
MD5 427adb93cc1f1cce571e4abf45899919
BLAKE2b-256 ea53d408848628b9b9a78123b0588b9229c2d8be9bf5c13fca82c98953efe958

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