看起来我的应用程序开始是(i)FFT 有界的,它对平均大小约为 500x200(宽度和高度总是均匀)的矩形进行了大量的 2D 相关。场景和往常一样 - 执行两个 FFT(每个字段一个),将复杂字段相乘,然后执行一个 iFFT。
因此,在 CPU(Intel Q6600,带有 JTransforms 库)上,根据分析器,FFT 转换占用大约 70% 的时间,在 GPU(GTX670,cuFFT 库)上 - 大约 50%(因此,CUDA 的性能有所提高,但没有我想要的是)。我意识到,可能是 GPU 没有完全饱和(带宽有限)的情况,但从其他情况来看 - 批量计算会显着增加应用程序的复杂性。
问题:
- 我可以做些什么来减少至少几次在 FFT 上花费的时间?
- 我应该尝试 FFTW 库吗(目前我不确定它是否会比 JTransforms 带来显着的收益)?
- 是否有任何专用硬件可以插入 PC 进行 FFT 转换?