IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ CUDA

FAQ CUDAConsultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 66, dernière mise à jour : 14 juin 2021 

 
OuvrirSommaireCUDALibrairiesCuFFT

CuFFT est une implémentation de la transformée rapide de Fourier. Une transformation de Fourier permet de décomposer un signal continu en une somme de sinusoïdes. La FFT (Fast Fourier Transform) est une version rapide pour calculer cette transformée. Cette version a été mise au point par Cooley et Tukey.

CuFFT se base sur une autre librairie de transformée rapide de Fourier, FFTW. Ces deux librairies utilisent des plans pour configurer la transformée. Ce système de plans permet, avant de connaître les données, de choisir le meilleur algorithme pour calculer la transformée.

CuFFT peut utiliser deux types de valeurs : des flottants et des complexes. Depuis CUDA 2.3, il peut même utiliser les versions à double précision sur les périphériques qui le supportent.

Les transformées possibles sont : complexe vers complexe, complexe vers réel, réel vers complexe.

CuFFT ne supporte pas des plages de données infinies : à une dimension, il est limité à 8 millions d'éléments ; à deux ou trois, il est limité à 16384 éléments.

CuFFT est officiellement supportée par NVIDIA.

Créé le 3 août 2009  par Thibaut Cuvelier

Lien : La transformée de Fourier rapide
Lien : FFTW

Un plan est une configuration de l'algorithme à employer pour traiter les données. Ceci permet d'optimiser le calcul, vu que l'on en connaît la substance avant de devoir l'exécuter : cela laisse le temps de trouver l'algorithme le plus approprié.

Voici les fonctions utilisées pour construire des plans.

 
Sélectionnez
cufftResult cufftPlan1d ( cufftHandle * plan, int nx,                 cufftType type, int batch ) ;
cufftResult cufftPlan3d ( cufftHandle * plan, int nx, int ny,         cufftType type            ) ;
cufftResult cufftPlan2d ( cufftHandle * plan, int nx, int ny, int nz, cufftType type            ) ;

Le plan créé sera pointé par plan. Il traitera nx éléments à une dimension, un tableau de nx éléments sur ny à deux dimensions, un tableau de nx éléments sur ny sur nz à trois dimensions. Un plan à une dimension peut demander à effectuer batch transformées sur les données fournies. Le type de transformation peut être l'un des suivants.

  • CUFFT_C2C : complexe vers complexe ;
  • CUFFT_C2R : complexe vers réel ;
  • CUFFT_R2C : réel vers complexe.

Un plan peut être détruit grâce à cufftResult cufftDestroy ( cufftHandle plan ) ;.

Créé le 3 août 2009  par Thibaut Cuvelier

Il existe trois fonctions permettant d'effectuer la transformation, correspondant aux trois valeurs possibles de type pour les fonctions de création de plan.

 
Sélectionnez
cufftResult cufftExecC2C ( cufftHandle plan, cufftComplex * idata, cufftComplex * odata, int direction ) ;
cufftResult cufftExecR2C ( cufftHandle plan, cufftReal    * idata, cufftComplex * odata                ) ;
cufftResult cufftExecC2R ( cufftHandle plan, cufftComplex * idata, cufftReal    * odata                ) ;

idata est un pointeur vers les données à traiter, odata est un pointeur vers l'emplacement où les valeurs traitées seront stockées.

direction spécifie la direction de l'algorithme : soit vers l'avant (CUFFT_FORWARD), soit vers l'arrière (CUFFT_BACKWARD).

Créé le 3 août 2009  par Thibaut Cuvelier

CuFFT n'utilise pas une fonction spécifique pour récupérer les erreurs : chaque fonction renvoie donc un cufftResult, qui peut avoir une de ces valeurs.

  • CUFFT_SUCCESS : opération effectuée correctement ;
  • CUFFT_INVALID_PLAN : plan passé en argument invalide ;
  • CUFFT_ALLOC_FAILED : erreur lors de l'allocation de la mémoire ;
  • CUFFT_INVALID_TYPE : type demandé non supporté ;
  • CUFFT_INVALID_VALUE : mauvais pointeur mémoire ;
  • CUFFT_INTERNAL_ERROR : erreur interne ;
  • CUFFT_EXEC_FAILED : erreur d'exécution de la transformée sur le GPU ;
  • CUFFT_SETUP_FAILED : erreur d'initialisation de la librairie ;
  • CUFFT_SHUTDOWN_FAILED : erreur de fermeture de la librairie ;
  • CUFFT_INVALID_SIZE : taille de plan non supportée.
Créé le 3 août 2009  par Thibaut Cuvelier

Copyright © 2009 Thibaut Cuvelier. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.