如果要谈论 PYNQ 和加速计算的关系,我们先要说说 FPGA 和加速计算的历史渊源。尽管这种依赖关系已经持续了很多年,并在一些专业的高性能计算的场合早已被广泛采用。但只是在近期基于FPGA的加速计算却突然成为一个热门话题,FPGA技术已逐渐成为一个杀手级应用。这在很大程度上归结于大数据的爆发和一些大的互联网云计算公司对 FPGA 加速卡的大规模部署。如今,随着摩尔定律的逐渐减缓,工程师正在寻找更好的方法以更快的速度和更低的功耗来处理更多的数据。FPGA被认为是加速计算的出色平台,特别适用于那些需要大规模并行运算的任务。FPGA可以通过在可编程硬件中实现重要的计算密集型的算法模块来减少传统处理器的工作负载,从而大幅减少延迟和功耗。
通常认为我们采用加速计算的目的是想提高算法计算效率、缩短算法开发时间和验证时间。目前比较流行的加速框架有基于多节点的分布式计算,基于多处理器和多线程的并行计算,还有一些类似于Spark的分布式计算引擎和一些并行计算语言Scala 之类的。这些框架在不同的应用领域,例如:云计算、芯片设计、软件工程等方面都展现出优异的性能。针对加速方法而言,则包括算法本身的并行化优化,实现架构的并行化处理以及直接采用多核处理器的计算架构。FPGA 在加速计算里必然会充当一个重要的角色,FPGA相对于传统CPU、DSP等处理器来说,最明显的优势就是原生的并行化处理,通过硬件逻辑资源的并行化利用,可以相对不高的时钟频率来达到理想的数据吞吐率,获得很好的低延迟效果和低功耗效果。
很多年前在一些算法仿真和数据建模的领域就有采用硬件板卡来加速的先例,这样会比通常只用处理器运行的仿真程序要快几个数量级,很多算法工程师对这个应用的价值深有感触。在仿真行业有个比较专门的术语:hardware in the loop (HIL),环路仿真。简单说就是指在仿真的链路里插入硬件设备可以去模仿实际的硬件环境来验证一个算法模型,同时可使仿真运行速度加快很多,这比传统的采用软件模拟环境效率要高不少。FPGA就是这种硬件设备的一个很重要的平台选择,这从另一个侧面也反映了FPGA 相对传统桌面计算机的运算高效性。

简单说FPGA 所实现的算法加速也就是要把一些计算密集型的算法从处理器上offload到FPGA 逻辑里做加速, 也是 FPGA 工程师一直致力去做的事情。多年的实践也证明了这个理念,不论在嵌入式计算还是云计算的领域都取得了显著的成绩。例如在云计算中,基于PCIe的FPGA 加速卡会大大 offload CPU的一些计算密集型算法到加速卡上,这样无论在处理速度和功耗上都有很大的优势。
在本栏目里反复提到的PYNQ 框架,除了可以提高嵌入式开发者的工作效率,另一个重要价值也给软件开发者充分展示了硬件加速的理念,让软件开发者可以直观地看到和体会到硬件加速的作用。通过在python应用程序里去调用硬件库 overlay,这样可以用硬件去实现那些算法,达到算法加速的目的,这比python 算法在纯处理器里实现性能有很大的提升。相信大家通过做一些PYNQ的实验可以慢慢去了解其中的奥秘,核心的一点就是算法硬件化。在之后的文章中我们会详细介绍PYNQ 框架下的算法加速的概念,这也是FPGA 做大数据处理的核心价值。