GPU FFT2 Discrepancies ( Different from CPU based FFT2 )

Hello, I have noticed a problem that Matlab FFT2 does not produce the same result on a GPU array as it does on a "normal" array.
The following code was used to ensure that my observation is correct.
totalDiff = 0;
for loop = 0:10000
a = rand( [2 2] ); % Obtain random numbers
cpuResult = fft2(a); % Calculate on CPU
gpuResult = gather( fft2( gpuArray(a) ) ); % Calculate on GPU
diff = sum( gpuResult(:) - cpuResult(:) ); % Calculate difference
totalDiff = totalDiff + diff; % Get a running total of differences
end
totalDiff / 10000 %Output average change per matrix
I appreciate any feedback regarding this question: Why is this changing result being observed and can it be minimized or removed? While these values are not extremely different (differing by 1e-17 or so), I would still like to ensure an exact equality between my GPU and CPU code.
P.S. fft also has changing results based on the device used for computation; but, for my system, the matrix has to be larger than 4 x 4 to observe the difference.

 채택된 답변

Ben Tordoff
Ben Tordoff 2013년 10월 22일

1 개 추천

댓글 수: 1

Thank you, that answer is perfect and I'm sorry my searching never discovered it.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

태그

질문:

2013년 10월 22일

댓글:

2013년 10월 22일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by