FFTW : bibliothèque effectuant des transformées de Fourier complexes ou réelles, rapides et portables

Fiche PLUME
  • Création ou MAJ importante : 19/04/2010
  • Correction mineure : 19/02/2014
  • Auteur : Nathanaël Schaeffer - ISTerre (CNRS, Université Joseph Fourier, IRD, LCPC, Université de Savoie)
  • Responsable thématique : Anne Cheylus (L2C2)
  • Relecteur 1 : Loïc Gouarin
  • Relecteur 2 : Thierry Dumont
  • Relecteur 3 : Sylvain Faure
Mots clés
Description
Fonctionnalités générales

FFTW est une bibliothèque écrite en C de fonctions pour calculer la transformée de Fourier discrète (DFT) en une ou plusieurs dimensions, de taille arbitraire (puissance de 2 ou non), pour des données réelles ou complexes.
Elle inclut également des routines pour la transformée en cosinus ou en sinus (DCT et DST).

Ses principaux atouts sont la performance tout en maintenant une portabilité (compilation sur toutes sortes de machines) et une flexibilité (s'adapte à des arrangements de données complexes).

FFTW peut effectuer des transformées de Fourier en parallèle, sur architecture distribuée via MPI, ou bien sur architecture à mémoire partagée via OpenMP ou pthreads.

Autres fonctionnalités
  • Rapidité (support des instructions SSE/SSE2/AVX/3dNow!/Altivec).
  • Une ou plusieurs dimensions.
  • Taille arbitraire (des tailles multiples de petits nombres premiers sont plus rapides, mais FFTW utilise des algorithmes en O(N log N) même si N est un nombre premier).
  • Transformée rapide de données réelles.
  • Transformées en cosinus et sinus (DCT et DST de type I-IV).
  • Gestion efficace de transformées multiples ou vectorielles.
  • Transformées parallèles via OpenMP, pthreads ou MPI.
  • Interface Fortran et C.
Interopérabilité

Utilisable à partir de programmes en C ou en Fortran.
De plus, la transformée de Fourier de la bibliotheque intel (MKL) peut etre utilisée sans changer le code, car elle peut etre appellée via la meme interface que fftw.

Contexte d'utilisation dans mon laboratoire/service

Nous sommes plusieurs à utiliser FFTW pour les transformées de Fourier dans des codes de calcul intensif (méthodes spectrales).
C'est ce qu'il y a de plus rapide tout en restant portable (fonctionne sur des architectures intel, amd, powerpc). Sa flexibilité dans l'organisation des données et dans la taille (pas nécessairement une puissance de 2) la rend très pratique également. La précision du calcul est également optimale (double précision ou simple précision).

De plus, la transformée de Fourier de la bibliotheque intel (MKL) peut etre utilisée sans changer le code, car elle peut etre appellée via la meme interface que fftw.

Limitations, difficultés, fonctionnalités importantes non couvertes

Une petite difficulté existe pour porter du code utilisant une autre bibliothèque : la transformée de Fourier avec des données réelles calculée par FFTW stocke les coefficients de Fourier sous forme complexe, en nécessitant N/2+1 nombres complexes, car le fondamental k=0 est stocké sous forme complexe également.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

La plupart des distributions qui se respectent.

Plates-formes

Toutes plates-formes avec un compilateur C.

Autres logiciels aux fonctionnalités équivalentes

Logiciels propriétaires pour une plate-forme donnée, mais ils n'implémentent en général qu'une petite partie des fonctionnalités de FFTW (par exemple intel MKL, ...)

Environnement de développement
Type de structure associée au développement

Développé au MIT

Environnement utilisateur
Documentation utilisateur
Divers (astuces, actualités, sécurité)

Une version parallèle MPI devrait voir le jour prochainement.