我正在编写代码以利用C ++ AMP上的fft库(http://ampfft.codeplex.com/)。虽然与FFT实现的CPU实现相比,它没有给我带来巨大的提升,但我注意到,如果它被置于 for 循环中,性能会随着循环迭代而显着降低。
这是我的测试代码:
for (int i = 0; i < iterations; i++) {
transform.transform(in_GPU, out_GPU);
}
std::cout << "time steps = " << iterations
<< "\ttime taken for each steps = "
<< (clock() - start) / float(CLOCKS_PER_SEC) / iterations * 1000
<< "ms" << std::endl;
这是输出:
iterations Time/iteration
1000 1.001 ms
2000 0.2925 ms
5000 0.3248 ms
10000 0.285 ms
20000 0.3991 ms
50000 0.4027 ms
100000 0.4027 ms
500000 0.4298 ms
我认为每次迭代的时间从1000减少到2000是由于开销的减少。但这并不能解释从10000增加到20000,或从100000增加到500000.
所以基本上我的程序在 for 循环中运行得越来越慢。任何的想法? :)