ifft on gpu returns wrong values
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I wanted to calculate a 2D FFT on a 3D array and then get the 2D IFFT back. I wanted to use the gpuArray to accelerate the implementation, and I am not sure why I am getting the wrong answer when I have the 3D array on the gpu. For example:
A = fft2(gpuArray(rand(10,10,5)));
A1 = ifft2(A);
A2 = ifft(ifft(A,[],2),[],1);
all(A1==A2,'all')
gpuArray logical
0
A1 = ifft2(gather(A));
A2 = ifft(ifft(gather(A),[],2),[],1);
all(A1==A2,'all')
logical
1
The reason that I used ifft(ifft(A,[],2),[],1) is that I am going to extend the code for a 4D array, and I could not use FFTn to perform a 3D FFT on the first three dimensions! But, when I wanted to get a 3D FFT and then a 3D IFFT using 1d FFT/IFFT, I noticed different GPU and CPU results. Would you please explain what I am doing wrong here?
0 commentaires
Réponse acceptée
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Transforms dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!