我想知道fft和GPU上使用Matlab的簡單加法之間的巨大性能差異。我預計GPU的fft比簡單的添加要慢。但爲什麼是相反的呢?有什麼建議麼?Matlab GPU性能fft與簡單加法
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.
值得注意的是,如果我減少vetor的長度a,加法(第二循環)的計算時間會減少。
EDIT
如果我改變兩個環路的順序,即,如果除了首先進行,添加花費0.2秒代替1.4秒。 FFT時間仍然相同。
在你的例子中,b和c是標量。這是故意的嗎? – Jonas
哪個版本的MATLAB? – Edric
我使用Matlab r2012b。 @Jonas,你是對的,它的意圖是b和ca是標量。主要的一點是,爲什麼標量增加會變慢。我試圖優化我的Matlab代碼,但它總是這種加法讓我的代碼變慢。 – user2010822