IMX8基于FFT的GPU和CPU的性能测试对比
i.MX 8系列应用处理器是一种功能和性能可扩展的多核平台,包括基于 Arm Cortex架构的单核、双核和四核系列产品,提供基于Cortex-A72 + Cortex-A53、Cortex-A35、Cortex-M4和Cortex M7组合的解决方案,适用于高级图形、成像、机器视觉、音频、语音、视频和安全关键应用。集成高性能的双核 GC7000 3D GPU,支持 Open GL ES 3.0 和Vulkan,最高支持4路 1080p或者1路 4K 显示。 由于免去了数据的远程传输,边缘计算能够带来更低的延时、更可靠的数据安全。但这也对边缘计算设备带来更大的挑战,特别是计算性能。下面我们将介绍如何在NXP 最新的 iMX8X ARM处理器上面利用 GPU 加速运算快速傅里叶变换 FFT FFT 运行在GPU上(具体的运行方法可参考https://blog.csdn.net/qq_38505858/article/details/119642596)我之前写的一篇文章。
FFT 级数 | GPU TIME/s |
---|
16 | 0.002253 | 32 | 0.003386 | 64 | 0.002212 | 128 | 0.003437 | 256 | 0.003520 | 512 | 0.004341 | 1024 | 0.002770 | 2048 | 0.006684 | 4096 | 0.007329 | 8192 | 0.005271 | 16384 | 0.003939 | 32768 | 0.007297 | 65536 | 0.007875 |
GPU 会根据采样点数,分解成多个蝶型运算模型,并将每个模型并行在 GPU 上执行,从而有效降低运算时间。从日志看到每个模型耗时都在1ms以内,GPU 累计耗时为0.004604 秒。但由于是并行计算,最终的时间则是小于该值。
FFT 运行在CPU上(FFTW库http://fftw.org/)
FFT 级数 | GPU TIME/s |
---|
16 | 0.000576 | 32 | 0.000821 | 64 | 0.000986 | 128 | 0.001110 | 256 | 0.001854 | 512 | 0.002455 | 1024 | 0.003548 | 2048 | 0.004353 | 4096 | 0.005370 | 8192 | 0.006686 | 16384 | 0.008905 | 32768 | 0.013279 | 65536 | 0.021859 |
相比较而言,在FFT的点数低的情况下,GPU没什么优势,但是随着FFT的点数增多,GPU的优势就会慢慢凸显出来。之后我会将FFT在CPU 上测试的源码和所需要的头文件库文件上传至我的资源,大家有需要的可以下载。
|