DOCUMENTATION

Les bibliothèques FFTW3 sont installées sur HPC. Elles permettent le calcul optimisé de transformées de Fourier. Les FFTW sont écrites en C et disposent d'une interface Fortran.

Le parallélisme est assuré au double niveau OpenMP et Mpi. Pour cette raison, sur HPC, FFTW est compilé avec OpenMPI.

Pour utiliser FFTW, il faut charger le module correspondant à la version désirée :

module load fftw/fftw3.3.8.i20

À la compilation, ajoutez les options suivantes : -I$FFTWINC/include

À l'édition de liens, ajoutez :

Voici un exemple de code utilisant FFTW. Il effectue une tranformée de fourrier dans un sens, puis une transformée inverse du résultat.

#include <stdlib.h>
#include <math.h>
#include <fftw3.h>
#define N 16

int main(void) {

  fftw_complex in[N], out[N], in2[N]; /* double [2] */
  fftw_plan p, q;
  int i;

  /* prepare a cosine wave */
  for (i = 0; i < N; i++) {
    in[i][0] = cos(3 * 2*M_PI*i/N);
    in[i][1] = 0;
  }

  /* forward Fourier transform, save the result in 'out' */
  p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
  fftw_execute(p);
  for (i = 0; i < N; i++)
    printf("freq: %3d %+9.5f %+9.5f I\n", i, out[i][0], out[i][1]);
  fftw_destroy_plan(p);

  /* backward Fourier transform, save the result in 'in2' */
  printf("\nInverse transform:\n");
  q = fftw_plan_dft_1d(N, out, in2, FFTW_BACKWARD, FFTW_ESTIMATE);
  fftw_execute(q);

  /* normalize */
  for (i = 0; i < N; i++) {
    in2[i][0] *= 1./N;
    in2[i][1] *= 1./N;
  }

  for (i = 0; i < N; i++)
    printf("recover: %3d %+9.5f %+9.5f I vs. %+9.5f %+9.5f I\n", i, in[i][0], in[i][1], in2[i][0], in2[i][1]);
  fftw_destroy_plan(q);

  fftw_cleanup();
  return 0;
}

Pour le compiler :

module load fftw/fftw3.3.8.i20
icc -L$FFTWLIB -lfftw3 -I$FFTWINC simple_fft.c -o simple_fft

Script simplifié pour une exécution sur les machines du mésocentre :

#! /bin/bash
#SBATCH -n 1

module load fftw/fftw3.3.8.i20

./simple_fft

FFTW avec la MKL d'Intel®

Vous pouvez également utiliser la MKL d'Intel® pour vos codes contenant des fonctions FFTW. Plus d'informations ici.


VERSIONS ET SCRIPTS D'INSTALLATION


TAGS