Je commence à porter une application fftw3 existante pour utiliser les bibliothèques cuda fftw. L'étape initiale consiste simplement à remplacer l'en-tête fftw3.h
par l'en-tête cufft.h
et à lier les bibliothèques de cufft au lieu des bibliothèques fftw3.Déboguer la création du plan d'interface CUFFTW
C'est assez simple, et le code compile avec nvcc
. Cependant, lorsque j'exécute le code, l'application est incapable de créer un plan à l'aide de la commande fftw_plan_guru_dft
(elle renvoie simplement 0 au lieu d'un plan valide).
Puisqu'il n'y a aucune erreur signalée je ne sais pas comment je pourrais déboguer ce problème. cuda-gdb
et gdb
ne fournissent aucune information supplémentaire. Ils signalent simplement
Error: Internal error reported by CUDA debugger API (error=7). The application cannot be further debugged.
MISE À JOUR: Voici donc l'exemple de travail minimum. Comme mentionné dans mon commentaire à Talonmies, ce code est autogénéré par un solveur d'équations différentielles scientifique. Alors, s'il vous plaît excuser les noms de fonction, etc.
#define real Re
#define imag Im
#include <complex>
#undef real
#undef imag
#include <cufftw.h>
#include <stdio.h>
int main(void) {
int _transform_sizes_index = 1, _loop_sizes_index = 0;
fftw_iodim _transform_sizes[1], _loop_sizes[2];
_transform_sizes[0].n = 128;
_transform_sizes[0].is = 0;
_transform_sizes[0].os = 0;
fftw_complex _data_in[128] = {0.};
static fftw_plan _fftw_forward_plan = NULL;
_fftw_forward_plan = fftw_plan_guru_dft(
_transform_sizes_index, _transform_sizes,
_loop_sizes_index, _loop_sizes,
reinterpret_cast<fftw_complex*>(_data_in),
reinterpret_cast<fftw_complex*>(_data_in),
FFTW_FORWARD, FFTW_PATIENT);
if (!_fftw_forward_plan)
printf("Error: Unable to create forward plan\n");
return 0;
}
moins que quelqu'un d'autre sait ce que je fais mal, il semble que cette fonctionnalité particulière de fftw3 ne peut pas être pris en charge par cufftw.
Pouvez-vous faire un cas de repro pour cela? Sinon, il est très difficile de savoir quel genre de réponse vous attendez ici (ou ce que vous demandez vraiment) – talonmies
Très bien, je vais voir ce que je peux faire. Le code d'origine est généré automatiquement à partir d'un solveur d'équations différentielles scientifique (xmds.org), donc c'est un peu le bordel. Je cherche juste des idées sur le point de départ étant donné que fftw_plan_guru_dft ne génère aucune erreur. – inJeans
FYI: vous pouvez voir [ici] (http://docs.nvidia.com/cuda/cufft/#fftw-supported-interface) que 'fftw_plan_guru_dft()' n'est que partiellement pris en charge dans cuFFT. Êtes-vous sûr que votre cas d'utilisation est pris en charge? – talonmies