Matlabを使用したGPUでのfftと単純な追加の大きなパフォーマンスの違いについて疑問に思っています。fft は単純な追加よりも GPU で遅いと思います。しかし、なぜ逆なのでしょうか?助言がありますか?
a=rand(2.^20,1);
a=gpuArray(a);
b=gpuArray(0);
c=gpuArray(1);
tic % should take a long time
for k=1:1000
fft(a);
end
toc % Elapsed time is 0.085893 seconds.
tic % should be fast, but isn't
for k=1:1000
b=b+c;
end
toc % Elapsed time is 1.430682 seconds.
また興味深いことに、ベクトル a の長さを短くすると、加算 (2 番目のループ) の計算時間が短縮されます。
編集
2 つのループの順序を変更すると、つまり加算が最初に行われると、加算に 1.4 秒ではなく 0.2 秒かかります。FFT 時間は同じです。