ifft on gpu returns wrong values
10 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Transforms についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!