gpt4 book ai didi

embedded - 是否值得将 FFT 计算卸载到嵌入式 GPU?

转载 作者:行者123 更新时间:2023-12-01 16:57:04 25 4
gpt4 key购买 nike

我们正在考虑将应用程序从专用数字信号处理芯片移植到通用 x86 硬件上运行。该应用程序执行大量傅里叶变换,从简短的研究来看,FFT 似乎非常适合在 GPU 而不是 CPU 上进行计算。例如,本页有一些使用 Core 2 Quad 和 GF 8800 GTX 的基准测试,显示使用 GPU 时计算时间减少了 10 倍:

http://www.cv.nrao.edu/~pdemores/gpu/

但是,在我们的产品中,尺寸限制限制了我们只能使用 PC104 或 Mini-ITX 等小型设备,因此只能使用相当有限的嵌入式 GPU。

将计算卸载到 GPU 是否只值得在适当的 PCIe 总线上使用强大的显卡来完成,或者甚至嵌入式 GPU 会提供性能改进吗?

最佳答案

在 x86 硬件和 GPU(CUDA 之前,7800 GTX Hardware)上开发 FFT 例程后,我从自己的结果中发现,FFT 尺寸较小(低于 2^13)时,CPU 速度更快。超过这些尺寸,GPU 速度更快。例如,2^16 大小的 FFT 在 GPU 上的计算速度比 CPU 上的等效变换快 2-4 倍。请参阅下面的时间表(所有时间均以秒为单位,比较 3GHz Pentium 4 与 7800GTX。这项工作是在 2005 年完成的,所以硬件很旧,正如我所说,非 CUDA。较新的库可能会显示出更大的改进)

N       FFTw (s)    GPUFFT (s)  GPUFFT MFLOPS   GPUFFT Speedup8       0           0.00006     3.352705        0.00688116      0.000001    0.000065    7.882117        0.01021732      0.000001    0.000075    17.10887        0.01469564      0.000002    0.000085    36.080118       0.026744128     0.000004    0.000093    76.724324       0.040122256     0.000007    0.000107    153.739856      0.066754512     0.000015    0.000115    320.200892      0.1346141024    0.000034    0.000125    657.735381      0.2705122048    0.000076    0.000156    1155.151507     0.4843314096    0.000173    0.000215    1834.212989     0.8045588192    0.000483    0.00032     2664.042421     1.51001116384   0.001363    0.000605    3035.4551       2.25541132768   0.003168    0.00114     3450.455808     2.78004165536   0.008694    0.002464    3404.628083     3.528726131072  0.015363    0.005027    3545.850483     3.05604262144  0.033223    0.012513    3016.885246     2.655183524288  0.072918    0.025879    3079.443664     2.8176671048576 0.173043    0.076537    2192.056517     2.2609042097152 0.331553    0.157427    2238.01491      2.1060814194304 0.801544    0.430518    1715.573229     1.861814

正如其他发帖者所建议的那样,与 GPU 之间的数据传输就是您所承受的损失。较小的 FFT 可以在 CPU 上执行,某些实现/大小完全在缓存中执行。这使得 CPU 成为小型 FFT(低于约 1024 点)的最佳选择。另一方面,如果您需要以最少的进出 GPU 的移动量对数据执行大批量工作,那么 GPU 将轻松击败 CPU。

如果您想要快速的 FFT 实现,我建议使用 FFTW;如果您想要更快的(商业)实现,我建议使用英特尔数学库。对于 FFTW,使用 FFTW_Measure 标志执行计划将为您的特定硬件测量和测试最快的 FFT 例程。我在this question中对此进行了详细介绍。 。

对于 GPU 实现,没有比 NVidia CUDA 提供的更好的了。自从我在 7800GTX 上进行实验以来,GPU 的性能已显着提高,因此我建议您尝试使用他们的 SDK 来满足您的特定要求。

关于embedded - 是否值得将 FFT 计算卸载到嵌入式 GPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com