
Table des matières
Jean Zay : la bibliothèque FFTW
Description
La bibliothèque FFTW est un ensemble de sous-programmes écrits en C, permettant de calculer la transformation de Fourier discrète en une ou plusieurs dimensions, pour des données réelles et complexes.
Versions installées
FFTW est disponible en version parallèle et séquentielle.
Versions séquentielles
fftw/3.3.8
: version 3.3.8
Versions parallèles
fftw/2.1.5-mpi
: version 2.1.5 compilé avec Intel MPI
Attention : cette ancienne version (plus de 10 ans) n'est PAS compatible avec les versions plus récentes !fftw/3.3.8-mpi
: version 3.3.8 compilé avec Intel MPI
Versions GPUs
fftw/3.3.8-mpi-cuda
: version 3.3.8 compilé avec OpenMPI, OpenMP et CUDA
Ces informations peuvent être retrouvées par la commande :
$ module avail fftw
Environnement
Les versions de FFTW sont disponibles dans les environnements suivants en fonction de la version :
intel-compilers/19.0.4 intel-mpi/19.0.4
gcc/9.1.0 intel-mpi/19.0.4
intel-compilers/19.0.4 openmpi/3.1.4-cuda
gcc/9.1.0 openmpi/4.0.2-cuda
Ces informations peuvent être retrouvées par la commande :
$ module show fftw
Pour utiliser cette librairie dans d'autres environnements, veuillez contacter l'équipe Support aux Utilisateurs.
Remarque : pour obtenir les informations sur les chemins d'accès aux librairies, il sera nécessaire de charger au préalable l'environnement choisi (Intel dans cet exemple) :
$ module load intel-compilers/19.0.4 openmpi/3.1.4-cuda $ module show fftw
Utilisation
La bibliothèque est accessible par module.
Pour charger la version par défaut dans l'environnement courant ou dans l'environnement par défaut si aucun environnement n'est préalablement chargé :
$ module load fftw
ou pour charger une version spécifique dans un environnement spécifique (Gcc dans cet exemple) :
$ module load gcc/9.1.0 $ module load fftw/3.3.8-mpi
Édition des liens
Lors de la compilation, il est nécessaire d'ajouter les options référençant les bibliothèques utilisées.
Par exemple, pour la version 2.1.5 :
$ module load fftw/2.1.5-mpi $ mpiifort appel_fftw.f90 ldrfftw_mpi -ldfftw_mpi -ldrfftw_threads -ldfftw_threads \ -ldrfftw -ldfftw -lpthread -lm
Par exemple, pour la version 3.3.8 :
$ module load fftw/3.3.8 $ mpiifort appel_fftw.f90 -lfftw3_threads -lfftw3 -lfftw3f_threads -lfftw3f -lpthread -lm
Par exemple, pour la version 3.3.8-mpi :
$ module load fftw/3.3.8-mpi $ mpiifort appel_fftw.f90 -lfftw3_mpi -lfftw3_threads -lfftw3 \ -lfftw3f_mpi -lfftw3f_threads -lfftw3f -lpthread -lm
Par exemple, pour la version 3.3.8-mpi-cuda :
$ module load fftw/3.3.8-mpi-cuda $ mpiifort appel_fftw.f90 -qopenmp -lfftw3_mpi -lfftw3_omp -lfftw3 \ -lfftw3f_mpi -lfftw3f_omp -lfftw3f -lm