FPGA能胜过多核PC吗?

电器工程 FPGA 算法 石英 笔记本电脑
2022-01-16 03:42:45

我不明白如何使用 FPGA 来加速算法。目前我正在四核笔记本电脑上运行一个耗时的实时算法,以便可以并行完成四个计算。

最近有人提醒我,FPGA 可能会产生更好的性能。我不明白这是怎么回事。有人能解释一下 FPGA 如何加速算法,我是否应该切换到 Xilinx 或 Altera FPGA 解决方案,或者继续在我的四核笔记本电脑上执行计算。

附加细节:该算法使用通过小波包变换输入的输入运行 20 个人工神经网络

谢谢大家的精彩回答。

4个回答

我的一位同事对此进行了基准测试,得出的结论是,一旦你有超过 100 个适合 FPGA 的独立整数任务, FPGA 的性能就会优于 PC。对于浮点任务,GPGPU 始终击败 FPGA。对于窄多线程或 SIMD 操作,CPU 得到了极大的优化,并以比 FPGA 通常实现的更高的时钟速度运行。

其他警告:任务必须是独立的。如果任务之间存在数据依赖关系,那么这就限制了计算的关键路径。FPGA 适用于布尔评估和整数数学以及硬件低延迟接口,但不适用于依赖于内存的工作负载或浮点。

如果您必须将工作负载保留在 DRAM 中,那么这将是瓶颈,而不是处理器。

FPGA 的工作方式与处理器完全不同。

对于处理器,您编写软件来告诉硬件要做什么。在 FPGA 上,您在内部描述“硬件应该是什么样子”。就好像您正在制作一个专门为您的算法制作的芯片。

这加快了很多事情,并可以降低功耗。但它也有缺点:开发时间更长,也更复杂。你需要以完全不同的方式思考,不能直接使用在软件中工作的算法。

对于人工神经网络,FPGA 是一个不错的选择。在这个领域有很多正在进行的研究。

这在很大程度上取决于算法,但原理可以很简单地解释。

假设您的算法必须对许多 8 位数字求和。您的 CPU 仍然需要获取每条指令,从 RAM 或高速缓存中获取操作数,执行求和,将结果存储在高速缓存中,然后继续下一个操作。管道会有所帮助,但您只能执行与您拥有的内核一样多的同时操作。

如果您使用 FPGA,您可以实现大量并行工作的简单加法器,并行处理可能数千个和。尽管单个操作可能需要更多时间,但您有很大程度的并行性。

您也可以使用 GPGPU 来执行类似的任务,因为它们也由许多更简单的内核组成。

计算设备的专业化大致分为 3 个级别:

CPU(就像你的笔记本电脑一样)是其中最通用的。它可以做任何事情,但这种多功能性是以低速和高功耗为代价的。CPU 在旅途中编程,指令来自 RAM。CPU 程序快速、便宜、易于编写且非常易于更改。

FPGA(意思是现场可编程门阵列)是中间层。顾名思义,它可以“在现场”进行编程,即在工厂之外。FPGA通常被编程一次,这个过程可以描述为设置它的内部结构。在这个过程之后,它就像一台专门为您选择的任务而设计的微型计算机。这就是为什么它比通用 CPU 表现更好的原因。对 FPGA 进行编程非常困难且昂贵,调试它们也非常困难。

ASIC(意思是专用集成电路)是终极专家。它是为一项且仅一项任务而设计和生产的芯片——它可以极其快速高效地完成一项任务。没有可能对 ASIC 进行重新编程,它在出厂时已完全定义,并且在不再需要它的工作时毫无用处。设计 ASIC 是只有大公司才能负担得起的,调试它们很好,几乎是不可能的。

如果您以“核心”来思考,那么请这样看:CPU 有 4、6 甚至 8 个大核心,可以做任何事情。ASICS 通常有数千个内核,但内核非常小,只能做一件事。

你可以看看比特币挖矿社区。他们做 SHA256 哈希。

  • CPU 核心 i7:0.8-1.5 M 哈希/秒
  • FPGA:5-300M哈希/秒
  • ASIC:每个微型芯片 12000M hash/s,一个 160 芯片设备 2000000M(是的,2T)hash/s

当然,这些 ASIC 婴儿在大规模生产时要花费近 2000 美元,但它让您了解万事通如何与专家抗衡。

唯一的问题是:FPGA 能否为您带来比设计成本更多的节省?当然,您可以尝试在 20 PCS 上运行,而不是在一台笔记本电脑上运行它。