通用图形处理架构-FPGA版

介绍

"互联网上的整个电子商务世界都是由图形分析驱动的",因为图形结构可以自然地代表许多重要应用领域的数据集,例如社交网络、网络安全和机器学习。在当前的时代,图形结构呈指数级增长,这就导致了这些应用程序的数据对高性能图形处理产生了迫切的需求。

目前,基于 FPGA 的图形处理加速器的仍在被大量研究;然而,高级图形应用程序与底层CPU-FPGA平台之间仍然存在差距,这需要开发人员了解硬件细节并花费大量精力进行编程(例如使用硬件描述语言编程和进行内存优化)。这一差距在很大程度上阻碍了数据中心应用程序开发人员采用 FPGA。

主角-ThunderGP

ThunderGP 通过为 FPGA 加速图形处理带来性能和可编程性来弥补上述差距。

ThunderGP是基于HLS的开源通用图形处理框架,支持Vitis和SDAccel开发环境,适用于U50、U200、U250和VCU1525等Xilinx Alveo平台(官方开发板)。借助 ThunderGP,开发人员只需编写与硬件无关的基于显式高级语言 (C++) 的 API 的高级函数即可使用FPGA强大的并行处理能力。ThunderGP 在具有多个SLR 的先进 FPGA 平台上自动生成高性能加速器,并管理加速器的部署。
图1:ThunderGP 概述。它与 Vitis 和 SDAccel 工具兼容。

ThunderGP 的概述如图 1 所示。我们简要说明主要模块如下:

  • 内置加速器模板。ThunderGP采用Gather-Apply-Scatter(GAS)模型作为各种图算法的抽象,并通过内置的高度并行和高效的内存加速器模板来实现该模型。

  • 自动加速器生成。自动加速器产生可综合的加速器,释放底层 FPGA 平台的全部潜力。除了内置加速器模板之外,它还采用图形算法和 FPGA 平台模型(例如 U50)的分散、聚集和应用阶段(来自 GAS 模型)来自开发人员作为输入的用户定义函数 (UDF) 。

  • 图形划分和调度。ThunderGP采用基于目标顶点的垂直分区方法,无需引入边缘排序等繁重的预处理操作,即可通过片上RAM实现顶点缓冲。

  • 高级API。ThunderGP 提供了两套基于 C++ 的 API:用于定制图算法加速器的加速器 API(Acc-API)和用于加速器部署和执行的 Host-API。

有关GAS模型、API以及ThunderGP设计的详细信息,请参考ThunderGP技术报告(附件或GitHub上)。

https://github.com/Xtra-Computing/ThunderGP/blob/develop_u50/docs/ThunderGP_technical_report.pdf

ThunderGP 有多易用?

我们进行了一个案例研究 - 使用 Vitis 2020.1 对 Alveo U50 板上的 COVID-19 进行预测 - 演示如何将 ThunderGP 轻松应用于现实生活中的图形处理问题。

及时预测人口水平随时间变化的感染流行率对于采取适当的封锁措施(例如隔离或保持社交距离)减轻病毒的传播具有重要作用。目前的传播预测模型一般由空间元胞自动机(CA)和时间易感感染去除(SIR)模型组成,其中元胞代表一个居住区(例如县)并维持其状态(例如感染率), SIR模型根据相邻小区之间的传输来更新。因此,传播可以表述为图形处理问题, SIR 通过图中的传播进行更新。

我们使用 ThunderGP 实现了三种传播模型:CA-SIR [1]、CA-SEIR [2] 和 CA-SAIR [3] 模型。该数据集来自 COVID-19 影响分析平台 [4],包含 3100 个县和 230 万个连接。

在这里,我们展示了清单 1 中为 CA-SAIR 模型实现加速器的示例。在分散阶段,每个县(小区)根据其感染率和连接强度计算感染率并推送到邻近县它量化了县际流动的数量和频率。在收集阶段,该县会累积推送给它的所有感染率。在应用阶段,收集的感染率用于计算感染率。需要注意的是,apply阶段涉及到很多用户自定义的参数(ThunderGP支持apply阶段的用户自定义参数,详细内容参见技术报告)。
50平台上用于加速COVID-19传播预测的用户输入。

图 2 显示了使用公共数据集进行预测一周后感染风险的可视化情况。结果与CPU端执行的开源Python程序[3]相符。

表 1 量化了 ThunderGP 在该任务中所涉及的开发工作,并显示了与基于 Python 的 CPU 实现的性能比较[3]。根据结果,使用 ThunderGP 解决此问题的好处是双重的。首先,ThunderGP比基于 CPU 的解决方案实现了高达419 倍的加速。能够在短时间内预测传播情况有助于对传播情况做出快速、及时的反应。其次,随着对病毒了解的不断深入,CA-SIR模型正在快速发展。使用ThunderGP,开发人员通常只需编写数十行代码即可加速预测一天,从而最大程度地减少了开发工作量。

[1] MA Fuentes et al. Physica A: Statistical Mechanics and its Applications, 1999.

[2] José M Carcione et al. A simulation of a covid-19 epidemic based on a deterministic seir model. arXiv, 2020.

[3] Yiwang Zhou et al. A spatiotemporal epidemiological prediction model to inform county-level covid-19 risk in the united states. Harvard Data Science Review, 2020.

[4] University of Maryland COVID-19 Impact Analysis Platform. https://data.covid.umd.edu, 2020-09-10.

享用ThunderGP!

在 GitHub 存储库中提供了使用 ThunderGP 的分步指南。

对于第一级使用,我们为仅需要内置图形处理算法的用户编写了指南。

对于第二个层次的使用,我们引导用户通过系统提供的API来定制适合自己应用的加速器。

README 中有详细说明:

https://github.com/Xtra-Computing/ThunderGP/tree/develop_u50。

开源链接

https://github.com/Xtra-Computing/ThunderGP

相关推荐
transfer_ICer17 小时前
Vscode搭建verilog开发环境
vscode·fpga开发·编辑器
沐欣工作室_lvyiyi1 天前
汽车牌照识别系统的设计与仿真(论文+源码)
人工智能·单片机·fpga开发·汽车·单片机毕业设计·matlab车牌识别
绅士羊OuO1 天前
FPGA学习笔记#5 Vitis HLS For循环的优化(1)
c++·笔记·嵌入式硬件·学习·fpga开发
Panda 皮2 天前
FPGA时钟之时钟偏移
fpga开发
stm 学习ing2 天前
FPGA 第5讲 点亮你的LED灯
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
tiger1192 天前
理解 FPGA 的关键知识点整理
学习·fpga开发·fpga
17岁boy想当攻城狮2 天前
FPGA实战篇:Moore/Mealy状态机
fpga开发
Panda 皮2 天前
优化扇出
fpga开发
stm 学习ing3 天前
FPGA 第二讲 初始FPGA
c语言·开发语言·stm32·fpga开发·c#·visual studio·嵌入式实时数据库
搬砖的小码农_Sky3 天前
Xilinx FPGA的Vivado开发流程
fpga开发