【发布时间】:2013-01-09 09:10:50
【问题描述】:
我想知道 fft 和使用 Matlab 在 GPU 上简单添加的巨大性能差异。我希望 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.
有趣的是,如果我减少向量 a 的长度,加法(第二个循环)的计算时间会减少。
编辑
如果我更改两个循环的顺序,即如果先进行加法,则加法需要 0.2 秒而不是 1.4 秒。 FFT时间还是一样的。
【问题讨论】:
-
在您的示例中, b 和 c 是标量。是故意的吗?
-
哪个版本的 MATLAB?
-
我使用 Matlab r2012b。 @Jonas,你是对的, b 和 ca 是标量。重点是,为什么标量加法这么慢。我正在尝试优化我的 Matlab 代码,但这种添加总是让我的代码变慢。
标签: performance matlab gpu