我们正在考虑从专用数字信号处理芯片移植一个应用程序,以便在通用x86硬件上运行。这个应用程序做了很多傅立叶变换,从简短的研究来看,FFT似乎非常适合在GPU而不是CPU上进行计算。例如,本页使用Core 2 Quad和GF 8800 GTX进行了一些基准测试,显示使用GPU时计算时间缩短了10倍:
http://www.cv.nrao.edu/~pdemores/gpu/
然而,在我们的产品中,尺寸限制将我们限制在较小的外形尺寸,如PC104或Mini-ITX,因此相当有限的嵌入式GPU。
是否只有在适当的PCIe总线上使用丰富的显卡才值得将计算负载转移到GPU上,或者甚至嵌入式GPU是否会提供性能改进?
发布于 2011-11-17 16:05:04
您需要比较将数据移入和移出GPU内存的成本与使用GPU带来的任何速度优势。尽管可以在一定程度上重叠I/O和计算,但如果I/O带宽要求大于计算带宽,您仍然可能会受到影响。如果您有任何额外的计算,可以对驻留在GPU内存中的FFT数据执行,那么这可以帮助减少I/O成本。
同样重要的是要注意,基于GPU的FFT通常只对单精度数据提供良好的性能。此外,您需要与最好的基于CPU的FFT进行比较,例如,为单精度构建的FFTW和使用SSE。
发布于 2015-01-08 20:58:04
我想补充一下你的问题,特别是关于嵌入式GPU。
与桌面上看到的高端GPU相比,它们通常只有很少的着色器内核,更少的内核寄存器和更低的内存带宽。然而,与板载多核CPU1相比,在嵌入式GPU上运行快速傅立叶变换等应用程序可以提供更好的性能。嵌入式GPU的主要优点是它们与CPU共享一个共同的内存,从而避免了从主机到设备的内存复制过程。
几乎所有的嵌入式GPU,像ARM的Mali,高通的adreno等都支持OpenCL,因此在嵌入式GPU上使用OpenCL库可以提供更好的性能( AMD的clFFT是众所周知的,并且是开源的)。针对嵌入式图形处理器架构调整OpenCL代码可以使其更好。(请参阅http://infocenter.arm.com上的ARM马里-T600系列图形处理器OpenCL开发人员指南)
1 Arian Maghazeh,Unmesh,Bordoloi Petru,Eles Peng。低功耗嵌入式GPU上的通用计算:它已经成熟了吗?
发布于 2011-11-17 08:42:32
8800大约有100个内核,运行速度大约是GHz的一半。我不认为目前任何一款适用于小尺寸的嵌入式GPU都有足够多的着色器/计算内核。
https://stackoverflow.com/questions/8158632
复制相似问题