希望开始使用FPGA - 加快速度?

时间:2013-06-10 04:19:47

标签: fpga

我对学习FPGA开发很感兴趣。我在这里找到了一堆“入门FPGA”问题,以及互联网上的其他教程和资源。但我主要对使用FPGA作为加速器感兴趣,而且我无法弄清楚哪些设备实际上会提供超过台式机CPU的速度(比如最近的i7)。

我目前特别感兴趣的是细胞自动机(以及其他并行环境,如神经网络和基于代理的建模)。我想尝试使用3d或更高维的细胞自动机。我的问题是 - 低成本的100美元到200美元的入门套件是否能够提供比台式机CPU更快的速度?或者我是否需要花更多钱并获得更高端的FPGA模型?

2 个答案:

答案 0 :(得分:2)

FPGA可以是一个非常好的加速器,但(这是一个很大的BUG)它通常是非常昂贵的。我们这里有像beecube,传送带或Dini godzillas兼职保姆这样的机器,它们都非常昂贵(> 10k $),即使使用这些机器,许多应用程序也可以通过标准的cpu集群或gpus更好地加速。当考虑到总体拥有成本时,FPGA会更好一些,因为通常情况下,通常会有更好的效率。

但是有些应用程序可以加速。在较低的比例下,您可以/应该做一个粗略的估计,如果它适合您的应用,但您需要更具体的数字为您的应用程序。考虑一个标准的桌面CPU:通常它至少有4个核心(或者具有超线程的双核心,更不用说矢量单元),以及3 GHz的时钟。这导致每秒12个GCycles计算能力。 (廉价)FPGA可以达到250 MHz(更好的可以达到500 MHz,但必须是非常友好的设计和非常好的速度等级),所以你需要大约。 50并行操作,与CPU竞争(实际上它更好一点因为cpu通常不是1个循环操作,但它也有向量操作所以我们是相同的)。

50个操作听起来很多,而且很难,但是可行(这里的魔术词是管道)。因此,您应该确切地知道如何在硬件中实现设计以及可以使用的并行度。

即使您解决了这种并行问题,我们现在也会遇到真正的问题:记忆。

上面提到的加速器有如此多的计算能力,它们可以并行完成数千件事,但这种计算能力的真正问题是:如何将数据输入/输出。而且你的小规模也存在这个问题。在你的台式电脑中,cpu向内存传输的速度超过20GB / s(优质的GPU卡可以达到100GB / s以上),而100-200美元的小型加速器最多(当你运气好的时候)1-2 GB / s per PCI-Exp。

如果它对你有价值,完全取决于你的应用程序(在这里你需要更多的细节:3D Cellular Automatas,你必须知道邻域,所需的精度(你是双倍,单一浮点,或整数或固定点。 ..?),和你的用例(你转移初始单元格值,让机器计算2天,然后再转移单元格值,或者你是否需要在每一步之后的单元格值(这会对所需的数据产生巨大影响)计算带宽))。

但总的来说,在不知情的情况下,我会说:它价值100美元-200美元。

但不是因为你可以更快地计算你的细胞自动机(我不相信),但因为你会学习。而且你不仅要学习设计硬件和FPGA的开发,而且我看到我们的学生,我们在这里,他们总是得到硬件设计知识,也更好地理解硬件的实际外观和行为。当然,你在FPGA上所做的一切都与cpu的内部直接相关,但是很多人对一般硬件的能力有了更好的感觉,这反过来又使他们成为更有效的软件开发人员。

但我还要承认:你要支付的价格远远高于100-200美元:你必须花很多时间在它上面。

答案 1 :(得分:1)

免责声明:我为可重新配置的系统开发人员/制造商工作。

对你的问题的一个简短回答“低成本的100美元至200美元的入门套件是否会提供可能比台式机CPU产生显着加速的东西”可能不会。

更长的答案:

微处理器是一组固定的共享功能单元,可在各种应用中实现相当好的性能。操作系统和编译器可以很好地确保正确使用这些固定的共享功能单元。

基于FPGA的系统从专用,密集的计算效率中获得性能。您可以准确地创建执行应用程序所需的内容,不多也不少 - 您创建的任何内容都不会与任何其他用户,进程,操作系统等共享。如果需要80个浮点单元,则可以创建80个并行运行的专用浮点单元。将其与微处理器调度跨越一些较小数量的浮点单元的浮点运算进行比较。为了比微处理器更快地获得性能,您必须实例化足够的基于FPGA的专用功能单元,以便与微处理器相比产生性能差异。这通常需要较大FPGA器件中的资源。

仅靠FPGA是不够的。如果你在FPGA中创建了大量高效的计算引擎,你就可以保持这些引擎的数据。这需要一些高带宽连接到FPGA周围的大量数据存储器。基于I / O的FPGA卡经常看到的是,通过在I / O总线上来回移动数据,通常可以减少一些潜在的性能提升。

作为数据点,我公司使用Altera的'530 Stratix IV FPGA。我们用几个直接耦合的存储器围绕它,并将该子系统直接连接到微处理器存储器。对于许多应用而言,我们在微处理器系统方面具有多项优势,但这不是100美元至200美元的入门套件,而是一套完整的集成系统。