FPGA 可以是一个非常好的加速器,但是(这是一个很大的 BUG)它通常非常昂贵。我们这里有像 beecube、传送器或来自 Dini godzillas 的兼职保姆这样的机器,它们都非常昂贵(>10k 美元),即使使用这些机器,许多应用程序也可以通过标准 cpu 集群或 gpus 更好地加速。当考虑到总拥有成本时,FPGA 会更好一些,因为您通常拥有更好的能源效率。
但是有些应用程序可以加速。在较低的规模上,您可以/应该粗略估计它是否对您的应用程序有价值,但您需要为您的应用程序提供更具体的数字。考虑一个标准的桌面 cpu:通常它至少有 4 个内核(或双核超线程,更不用说矢量单元了),时钟频率为 3 GHz。这导致每秒 12 GCycles 的计算能力。你可以达到 250 MHz 的(便宜的)FPGA(更好的可以达到 500 MHz,但这必须是非常友好的设计和非常好的速度等级),所以你需要大约。50个并行操作,与CPU竞争(实际上它更好一点,因为cpu通常没有1个周期的操作,但它也有向量操作,所以我们是平等的)。
50 操作听起来很多,而且很难,但是是可行的(这里的神奇词是管道)。所以你应该确切地知道你将如何在硬件中实现你的设计以及你可以使用何种程度的并行性。
即使你解决了并行性问题,我们现在也遇到了真正的问题:内存。
上面提到的加速器有这么大的计算能力,它们可以并行做成千上万的事情,但这种计算能力的真正问题是:如何将数据输入/输出。而且你的小规模也有这个问题。在您的台式机中,cpu 向/从内存传输超过 20GB/s(好的 GPU 卡可以达到 100GB/s 甚至更多),而您的 100-200 美元的小型加速器最多(如果幸运的话)1-2 GB /s 每个 PCI-Exp。
如果它对您有价值,则完全取决于您的应用程序(在这里您需要的详细信息远不止:3D 元胞自动机,您必须知道邻域、所需的精度(您是双精度浮点数、单浮点数、整数还是定点...? ),以及您的用例(您是传输初始单元格值,让机器计算 2 天,然后将单元格值传回,还是在每一步之后都需要单元格值(这会在计算时对所需带宽产生巨大影响) ))。
但总的来说,在不知道更多的情况下,我会说:它的价值为 100 美元-200 美元。
但不是因为你可以更快地计算你的元胞自动机(我不相信),而是因为你会学会。您不仅将学习设计硬件和在 FPGA 上进行开发,而且我和我们的学生一起看到,他们总是会获得硬件设计知识,并且对硬件的实际外观和行为方式有更好的理解。当然,您在 FPGA 上所做的一切与 CPU 的内部没有直接关系,但许多人对硬件的总体能力有了更好的感觉,这反过来又使他们成为更有效的软件开发人员。
但我也必须承认:您将付出比 100-200 美元更高的价格:您必须花很多时间在上面。