微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > 寻找FPGA高手

寻找FPGA高手

时间:12-12 整理:3721RD 点击:
我们的应用中需要大量使用FFT(快速付立叶变换), 每做一次数据(约100G)处理, 60%以上的时间(好几天)都用于做FFT了, 据说可以通过使用FPGA提高应用的效率, 请FPGA高手指点, 谢谢。

@report 老师
他是不是接你这活就不知道了

谢了, 不过他好像很久不上bbs了, 有其他联系方式吗?

这年头,8个小时也算“很久不上bbs了”?
既然这么急,你自己下载个CUDA用那个FFT就得了。

不好意思, 是我看错了。
我们已经用了CUDA, 但是还是嫌慢(提升了将近3倍的速度), 想知道用FPGA是不是会更快。

呵呵,如果是整数FFT的话用FPGA,不过具体还有很多限制。
浮点的话直接上GPU好了。

nod
我现在处理浮点也用这个。:)

CUDA用好了的话,提升几十倍的速度都不是问题。
我以前测的结果,最后的瓶颈是显存带宽。
如果用中档CPU和中档GPU比的话,加速比基本上相当于核心数的比。
当然,一些很诡异的计算除外。

那些CUDA GPU提高几十倍速度的应用,基本都是计算密集型的运算,你这种纯FFT的运算用GPU也就能提高几倍。原因是GPU在执行FFT运算过程中,需要执行大量的对外部SDRAM的跳读、跳写,效率非常低,大部分时间其实都不在计算。等将来GPU采用SRAM或高速Cache作为缓存时,这个问题可以得到解决,只不过GPU那么多内核,每个核挂一个RAM的话,需要很大的面积。
不知道FFT的长度是多少,可以考虑用DSP,开发和应用比较简单。不知TI的6678有没有推出产品,没有就用ADI的TS201。TS201做一次16384点的复数浮点FFT需要0.6ms左右,相当于处理了0.125MB数据,100G的数据纯计算时间只需几百秒。当然将数据灌入TS201依然需要些时间。

几百秒是纯计算时间,没有加上100G数据灌入TS201的时间。假如数据存在硬盘上,速率100MB/S,那么100G数据连续下发需要1000秒。
我们以前的设备用来实时处理成像雷达数据,大概1秒钟处理:500次8192点的32bit浮点FFT+500次8192次IFFT+8192次2048点的FFT+8192次2048点的IFFT+信号滤波、参数估计等。当然,需要用4片TS201。相同的处理用当时的PC机(2004年的主流配置)matlab处理需要十几分钟左右,用VC也需要几分钟。
另外100G的数据作FFT,用PC不至于需要几天吧,肯定有其他开销。

我们现在的办法确实是多台计算机一起算, 这是每台计算机分到的数据量, 当然几天时间是因为还存在很多其他的因素, 例如, 计算出来的结果必须要根据数据的特点存放, 300G的数据中间结果约是4倍, 因此要不停的从硬盘读、写数据, FFT只是我们的应用中的其中一个瓶颈

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top