ifft on gpu returns wrong values
조회 수: 11 (최근 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!