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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.12 macOS 11.0+ ARM64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

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

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

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

File metadata

  • Download URL: fluidfft-0.4.0rc2.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.0rc2.tar.gz
Algorithm Hash digest
SHA256 e94ac10ead1cc2d2f9732ebb2318a78b37adf1cc4ce8169decd79fa2ec72fa92
MD5 d9fdc0652ef2d2d681e1760eba60e093
BLAKE2b-256 e04b902b0281e941e6f064dd68216c8ebac860311aeb909476a262013fa64510

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 eca313fac875e608ee13b4bce7e39064ef8b0a9bdcd0e0bceb1665afcea97a21
MD5 249b14ee90bc225191fa90bf9b41755e
BLAKE2b-256 48faf94708f8e958346f0563f64e7f6ddfdd63342448d275bebfa4076be58358

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c5803b5a3d5e3e488cf391f80f05ecffc6be3c17f2c9ea6001e736ca004553dc
MD5 7c23cee7b75077de8e9a1ff052b9be59
BLAKE2b-256 5238ae23a8a8cc0301933403a360f6d23a60d74bd36610feab17efbbbcc74128

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc2-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.0rc2-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 88d1dcdf9ea567a80460a269acdde16c5841f57ad7f954b2eadb2665d1de928b
MD5 c8b315eb071556fd8f719dfce4228927
BLAKE2b-256 2c73862a61562b168709e190f7a354c8346ae031c0ff5e889c65db457e9129ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e23bfa9d2b0b32325d1187a6db35b0a6a10de39350082861ece8305b37b5c30f
MD5 7d75baf7e510bb02b8d4987627db06df
BLAKE2b-256 39719bbaa32590e869f434e1fd189f04c80512c521becadc6778aaae2aab0788

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e6e49016791ed33d0b6f326e57fc67d7566b1c5c25ae9ac621ca1d0371e673f6
MD5 bd29722072950a6f1782d749f04b6d8d
BLAKE2b-256 bf8ab59da410b11df4f8280b118d37263228d256dd7f50db61841bf76f5997e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f71078174546f8155b7b5cfe04680f051a92311738ca2c9a63aa87609fa4ca82
MD5 08c4144ef9b445fab66eb5b3e38e64ce
BLAKE2b-256 3d90eed2a64bc2788bb9fb4a5e4e10a35802bf06be0b2189d4b98d68b1803451

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e86773325958e889b5e06ceff23cd8626b3de5b8815b13ac129d9c266a9417eb
MD5 b7a871ddc81dd39fcacfa0ac9567d8cb
BLAKE2b-256 e7b21b469a2779eba3042ac3ad0192f1c6e99c682568505479775d7edfc823af

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc2-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.0rc2-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00bdf0408a1c5686518b35ed86451eb56bf9ccbe9aeae34ffd964422cb20854e
MD5 9d461aed1a7b218a03ffd054b0db8e1e
BLAKE2b-256 99b32c9154e4d491c46cd7e5463aa6316fb7757389bcadfc7c8236dbf7920c5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 134bb56666b415e2ac41c6d9bfe6372aeca213e52557be7aad6a69c2d686758a
MD5 f96ee323bf0f1cfccb9184cc9df5db1f
BLAKE2b-256 06677b4c40da0e624ca5ff85cee7c7f718a97078652a69f26822f216e148d736

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fc19ede9b25d26d7b3f13077d49ebf755cae807694a24a2027188e58e5357ed4
MD5 0d6593decd8734d13dea34415b0e4753
BLAKE2b-256 42296eeaae486926d5113720a51531a9c1c0ebb32510ba76c98993294ea9cf8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f60f08df01a89c81d41ca440dfc72f8b5c203f6c719e2b22182ec46ac493671c
MD5 b3530fa2bbfa42c0d7fd23fa07d000aa
BLAKE2b-256 bf35cfeb8872285b03203f9f74c6bf0fece049fe77ca7d63bb9f24afd4a25790

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 21f227b5a5e7b03601fbba2a76a7eb0cbefd2e067517384705b14c7032da1339
MD5 0e7be52770203d57c7a7c8d705246f3b
BLAKE2b-256 fe26285b753f03d926e15fa0cc8ce9b7b146fdd54079633f99e953ad59c3afdd

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc2-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.0rc2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60df47e03f88f276bacd44066f542966d3855811a20b4e8268c84bcd4f770b5f
MD5 02c10311191033bde2a3b6f456011a75
BLAKE2b-256 38ab360a00deae31cfc2514adc55ffb4713f0d5e6c6664efccb30fcce4f6e8a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b491ee383e2a158f9d6a57749c5b5d9c54418f96a892507f0a235197f49fb126
MD5 6245664fb61d4a473779136d7390df55
BLAKE2b-256 353b3eed29f9a89a766bf8595091f22f09c473121724401df8ee0c21a283a571

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b2b633441c853a7307f68b032a1677a62174dd21b4e4cb9afec254f96570d8cb
MD5 6fea288ad8a0f0d1d72bce8dc98aa889
BLAKE2b-256 4e997c4ed7e2dc0597ae40763480d220718fdce1d23b64ca17cfb2e4d34f9fab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 385f864808947bb8528f568a44ac8a738c462959631f7a1eb45feb4afdb47d26
MD5 70df6867b81a5d1c7b748167e1d4035f
BLAKE2b-256 454168356f8a1560e9e356fcb94d7b685dda116ce56e6bfa0f28afdd7d160d8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 106d6c3db138f07dadffc9cf19eabe1df3502807d8250b9dbb960bc5e189c29d
MD5 8c962063c68dd6bcab9fb7dab7da617c
BLAKE2b-256 171d94aff05e29cf57d33e9713a47ffbabcd5604aec168a3c51c3edb7f22a185

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.0rc2-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.0rc2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 646a6a64a452bb578d21ec7ba23437b08303d4a3ee9c9123d5898d0a62496712
MD5 48457a6914624d9ac6a2d2f5bd2cd25e
BLAKE2b-256 49dc43e9b7f18b9cc8f4555bbaccf253e2dc67f88f7e1cd314255b845a5ce58c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad617e14a398df0d4c3202a414b80959f4b9f872c6b994fe3e4ee59de13c8d3a
MD5 a97b367b717213d12d1a47b9fc4c6123
BLAKE2b-256 45d4a32e893d166818ab8ae20f3efaf6a6645cfc1dacb4fd9878722b84ed91e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fluidfft-0.4.0rc2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dcbf4a72f535bf6c1eaca398447c9d9aa911396dc78d9067ab791364c6be0403
MD5 37cd54561c95b666b86f3983cab039f8
BLAKE2b-256 7b74d10576733445e479f6ef66810da0994e44c6b404617cee4bd0519fe307bd

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