AuroraFlow:面向多FPGA的易用低时延通信方案——在分布式神经网络推理上的演示
摘要(Abstract)
多FPGA通信的重要性近年持续攀升,已有多种实现路线。本文聚焦串行直连的 FPGA–FPGA 通信,提出构建于 AMD 官方 Aurora 协议 IP 之上的 AuroraFlow,并用于实现多FPGA神经网络推理。
AuroraFlow 面向 HLS 应用,便于把低时延通信集成进既有设计;它可满带宽运行、内置运行期监测以发现错误,并实现流量控制以避免接收端过载导致的数据丢失。我们在电路交换的光网络上测得:1MiB 消息下平均时延最低 0.51 μs、平均吞吐可达 95.03 Gbit/s。
为超越微基准,我们将 AuroraFlow 集成到数据中心 FPGA 上的分布式神经网络推理中。使用 FINN(一个面向推理的数据流硬件生成框架)扩展到多FPGA:FINN 负责生成推理电路,AuroraFlow 负责 FPGA 之间的数据通信。以 MobileNet 为例,我们展示了两者的组合:在保持 FINN 低时延推理优势的同时,借助 AuroraFlow 规模化到多片 FPGA。
贡献:
设计并实现了开源、HLS 友好的电路交换通信方案 AuroraFlow(基于 Aurora IP),可在 Vitis HLS 中直接集成流式 FPGA–FPGA 通信。
扩展 FINN,使其在端到端流程中自动使用 AuroraFlow,证明其易用性与可集成性。
通过微基准展示 AuroraFlow 的关键特性:低时延、高吞吐、流量控制、错误检测,并在最多 48 张数据中心 FPGA 卡上验证可扩展性;在神经网络推理用例上验证其实用性。
与先前的 VNx UDP 协议栈相比,AuroraFlow 面积开销显著更低;在推理用例中与通信核组合时时延不显著增大。
1 引言(Introduction)
单片 FPGA 在处理大型复杂设计时的局限推动了多FPGA体系,关键在于片间高效通信。常见两路:
经主机:每个节点上 FPGA 依赖宿主机搬运数据;
直连:FPGA 直接相连并交换数据。
前者实现简单但增加主机往返引入高时延;后者需在 FPGA 上实现网络逻辑,但可获得低时延/高吞吐。直连又分分组交换(如 Ethernet/UDP)与电路交换(如 Xilinx Aurora 高速串行);分组交换灵活,但有协议开销/缓冲延迟/面积增加;电路交换时延可预测、开销小,但链路配置与流控管理更繁琐。
HLS(如 Vitis HLS)让开发者用 C/C++ 设计加速内核,但低层通信接口的集成对 HLS 用户并不友好。为此,我们提出 AuroraFlow:在保持高吞吐/低时延/强健错误检测的同时,抽象低层细节、提供内置监测,让 HLS 项目能无缝扩展到多FPGA。
作为展示,我们选择神经网络推理:借助 FINN 把网络映射为数据流硬件;随着模型增大,单片资源很快耗尽,需要深度切分到多片。本文将在 FINN 的端到端流程中接入 AuroraFlow,并以 MobileNet 为例进行评测。
2 AuroraFlow 设计与实现(Design & Implementation)
2.1 动机(Motivation)
现代 FPGA 通过专用收发器在点对点互连上提供极高带宽,数据中心卡多经 SFP/QSFP 接入电/光网络组件以灵活连接多板卡。拓扑若需频繁改变,可:
采用点对点 + 光开关(镜面切换光纤连接,每次运行前固定拓扑);
采用分组交换(如以太网/UDP/TCP),需更多逻辑与网络协议配置知识。
2.2 Aurora 协议与 IP(Protocol & IP)
Aurora 64B/66B 是 AMD 的高速串行链路层协议,与 100G 以太的 64B/66B 编码一致,可与现成网络硬件兼容。我们在 HPC 多FPGA应用中使用该 Aurora IP,并适配 QSFP28(100G) 连接以用于电路交换光网络。然而,原生 IP 的接口/时钟域/复位序列/AXI 规范对 HLS 用户门槛较高。
AuroraFlow 将 Aurora IP 封装为可链接的“通信内核”,实现满带宽、可靠连接、细粒度诊断,免去 RTL 细节。其总体框图见原文图1:在 IP 周围加入数据宽度转换、跨时钟域 FIFO、流量控制模块、监测模块等。
2.3 关键设计点(Features)
(1) 吞吐
Aurora IP 在 QSFP28 可达线速 100 Gbit/s。其 AXI-Stream 宽度为 32B,需 ≥402.8 MHz 时钟以满带宽。为适配大资源 HLS 设计的时序,我们将用户侧时钟域与链路侧解耦,并以数据宽度转换到 64B配合跨域 FIFO(TX/RX FIFO),让用户内核在约 1/2 线速频率下仍可提供足量数据以吃满带宽。
(2) 流量控制(Flow Control)
Aurora IP 提供 UFC(用户控制消息)与 NFC(接收端反压能力)。我们启用 NFC:根据 RX FIFO 的可编程满/空阈值,在接收端触发暂停/恢复发送,防止接收端超限导致丢包与不可恢复的死锁。同时内部计数“停发信号后的在飞传输数”,用于校核 FIFO 配置是否充足。
(3) 配置项(见表1)
USE_FRAMING:可选“帧化”接口(需
last位、带 CRC)或“流式”接口;FIFO_WIDTH:32B/64B(32B 可省去宽度转换、略减延迟与资源);
RX FIFO 大小/阈值:平衡避免溢出与减少空转。
(4) 监测(Monitoring)
监测模块观察 Aurora CORE_STATUS(收发器状态、帧 CRC)、RX FIFO 满信号、传入/传出帧计数、TX FIFO 满周期、流控触发次数等,便于运行期验证与瓶颈分析。
(5) 易用性(Usability)
提供单一 .xo 内核包,用 Vitis 工具链与 HLS 内核链接;仅需连进/出 AXI-Stream与QSFP 时钟。内核自由运行,并暴露 AXI4-Lite 状态/计数寄存器给 XRT API,便于启动前检查链路已就绪、执行后核对传输,并可软件复位监测计数器做细粒度测量。
3 案例:FINN 下的多FPGA神经网络推理(Case Study)
3.1 背景
推理规模从 MLP 向 LLM 迈进,对吞吐/时延/能效要求更高。FPGA 借由定制数据流架构具备低时延优势。FINN(2017)可从 ONNX 生成推理数据流硬件,把各层映射为专用 MVAU 并深度流水。若模型太大,可通过folding(折叠)降低并行度复用 MVAU,但性能下降。大模型往往无法在单片 FPGA 完全展开,需要按网络深度切分到多片,同时保持流水结构。
3.2 相关工作:Elastic-DF(UDP)
FINN 团队的 Elastic-DF 曾给出自动分区与 VNx UDP 协议栈集成的多FPGA版本,但存在可改进空间:
时延:分组交换引入头部/解析/缓冲等开销;
面积:网络栈逻辑占用可观;
可靠性:在受控本地环境中相对次要。
3.3 我们的做法:AuroraFlow 集成
对推理而言,拓扑与通信伙伴固定、“运行中无需重配置”,可采用电路交换与原始流式数据:
省去路由/头部,降低时延与面积;
释放的资源可用于进一步展开网络;
通过 AuroraFlow 易扩展至多片,构成“大号统一 FPGA”的效果。
3.4 FINN 工具流修改
我们复刻并扩展多FPGA流程(将开源发布),使用户基本“开关式”启用多FPGA:
读入 ONNX 并规范化图;
设定各层 folding;
生成各层 IP;
在层间插入 FIFO 并仿真估算其大小;
(新增)基于资源估算进行图分区(见下);
**(修改)**按设备ID创建 StreamingDataflowPartitions(SDP);
(新增)为每条跨设备流打包 Aurora 内核;
**(修改)**为每片 FPGA 生成链接配置,连接本片内所有内核;
对所有设计综合实现。
分区:我们采用 MIP(混合整数规划),利用按层资源估计与每片 FPGA 资源上/下限自动求解分配;实验平台每卡2 个 QSFP 口,对 ResNet-50 等拓扑施加“单链路路由”约束以匹配硬件条件。
SDP 组装:按设备ID(可选加 SLR)把连续层归并为一个 SDP 内核(见图3),输入/输出卡上再连接 DMA 内核。
打包/链接:跨设备连边处生成所需数量的 AuroraFlow 内核(收/发各一),其 .xo 供 v++ 链接;最终每片的 dataflow 包含输入 DMA、一个或多个 SDP、必要的 AuroraFlow 内核及可选监测/基准内核。
4 评测与结果(Evaluation & Results)
4.1 硬件平台与部署
平台:Noctua 2 集群,共 16 节点 × 每节点 3×Xilinx U280(U+ XCU280),每卡 HBM2 8 GB + DDR4 32 GB,QSFP28×2(100G);主机为 AMD EPYC 7713 ×2(64C)。全网互联:Infiniband HDR100;
光交换机:Calient S320,320 端口,支持电路交换的任意 FPGA–FPGA 拓扑;
调度/自动布线:Slurm 扩展参数
--fpgalink可在作业提交时声明拓扑,由系统自动配置光(与以太)交换矩阵(给出两节点环拓扑示例脚本)。部署流程:建立链路→为每片 FPGA 下发对应 bitstream→并行启动。我们开发 XRT + OpenMPI 驱动自动完成加载与性能采集。
4.2 微基准(Latency/Throughput/Reliability/Scaling/Area)
方案对比:
MPI-Host2Host(主机到主机,经 InfiniBand);
MPI+PCIe(FPGA↔主机经 PCIe + MPI 主机间);
UDP(VNx)(直接 FPGA–FPGA 的 UDP 栈);
AuroraFlow(帧化/流式两种)。
测试法:一片卡的两个 QSFP 口经光交换机互连,硬件自回环 ACK,隐藏内核启动延迟;消息大小从 2^6 到 2^20 B(64B~1MiB),总通信时长近似保持。
时延与吞吐(核心结论):
MPI-Host2Host:最小时延 1.55 μs,最大吞吐 88.3 Gbit/s;
MPI+PCIe:最小时延 28.65 μs、最大吞吐 18.26 Gbit/s;
UDP(最佳 2^11 B 负载):最小时延 0.95 μs、最大吞吐 95.43 Gbit/s;
AuroraFlow(流式):最小时延 0.51 μs(64B),1MiB 吞吐 94.88~95.03 Gbit/s;帧化模式时延 0.53 μs(CRC/last 处理带来微增)。
可靠性:单条消息 256 MiB、184,320 次迭代(单次 45 TiB),连跑 20 次、总计 900 TiB、约 22 小时,各节点CRC 全通过、状态信号无错误。尽管收/发计算速率相当,仍在 80 次中的 14 次触发了流控,避免了潜在溢出与死锁,证明流控必要性。
规模化:把 48 片 FPGA 组成环路,256 GiB 消息环回,平均吞吐 95.9 Gbit/s,证明大规模可稳定传输,且在大消息下微小时延不构成瓶颈。
资源占用(U280):
UDP 栈(Network layer + CMAC + ICMP):寄存器 87,864(3.37%),BRAM 37(1.8%),LUT 39,965(3.1%);
AuroraFlow 流式:寄存器 11,340(0.43%),BRAM 26(1.3%),LUT 2,224(0.2%);
AuroraFlow 帧化:寄存器 15,313(0.59%),BRAM 27(1.3%),LUT 4,666(0.4%)。
结论:AuroraFlow 面积显著更低,几乎不与用户逻辑争资源。
4.3 多FPGA推理(MobileNet‑V1)
模型:MobileNet‑V1(ImageNet 预训练 ONNX),除首层外权重/激活 4 bit 量化。
综合实现:目标频率 286 MHz,先自动折叠至 ~5000 FPS,后手动微调以满足 HLS 数据宽度约束;为避免 DSP 过载,MVAU 采用 LUT 实现优先。两片 U280 的 P&R 后资源(示例):
FPGA#1:频率 239 MHz;LUT 39% / FF 17% / BRAM 22% / LUTRAM 8% / DSP 5%;
FPGA#2:频率 227 MHz;LUT 36% / FF 17% / BRAM 40% / LUTRAM 8% / DSP 2%。
推理与测量:2 片 U280 以光交换机直连,XRT+MPI 驱动;数据驻留 HBM bank0。对 1000 张 ImageNet‑1k 样本做 1000 次推理,统计吞吐与延迟:
准确率:Top‑1 70.09%、Top‑5 89.50%(与 FINN 单卡基线一致);
吞吐:4460.92 FPS(标准差 2.40 FPS);
单样本延迟(空流水):0.89 ms(std 0.05 ms);
整批耗时:224.16 ms(std 0.12 ms)。
与 Elastic‑DF 对比:其单 U280(单 CU)3731 FPS、双 CU(同卡)4195 FPS、三 CU/双卡 5755 FPS;单卡延迟约 2.3 ms。我们的0.89 ms 更低,可能因素:
AuroraFlow 相较 UDP 栈降低通信时延;
我们的驱动直连 XRT、无额外打包/转换开销;
FINN 版本演进带来更优折叠/RTL 单元;
度量方法差异(其环境/中间件不同)。
5 相关工作(Related Work)
多FPGA通信:Intel/Altera 平台有类似功能的 SerialLite(部分 BSP 可 HLS 直用);路由/集合通信层如 SMI、CIRCUS 等多基于 Altera;AMD 平台上基于分组交换的集合通信如 ACCL 已展示实际应用。也有利用分组交换硬件、在应用上叠加“虚拟电路”的混合方案。
FPGA 上的 NN 推理:两大阵营——Systolic/DPU(通用矩阵阵列,层间复用、需频繁访存)与数据流/流式(按网络专用实现,各层并行流水,减少外存交互)。FINN 属后者代表之一。
6 结论(Conclusion)
AuroraFlow 为多FPGA应用提供了易用、低时延、高吞吐、低面积的通信方案,HLS 友好、带运行期监测,在48 片规模上验证稳定可扩展。结合 FINN 的自动分区与数据流生成,用户可轻松把大模型跨片部署,在保持低时延优势的同时提升吞吐。我们已将 AuroraFlow、FINN 扩展与评测资产开源发布,便于复现与拓展。
致谢:感谢德国国家高性能计算中心 PC2 的 Noctua 2 计算资源与相关项目资助;感谢 AMD HACC 计划的支持等(详见原文)。
附录 A:AuroraFlow 用户配置(节选)
USE_FRAMING:0/1;1=帧化(启用 CRC/last),0=流式;FIFO_WIDTH:32/64(32 时禁用宽度转换);RX_FIFO_SIZE:默认 65536B;RX_FIFO_PROG_FULL:默认为一半容量;RX_FIFO_PROG_EMPTY:默认为 1/8 容量。
建议:在光网络与多跳情形下,预留足够 in‑flight 缓冲;联动监测指标(流控触发次数、TX 满周期)调参。
附录 B:度量方法小贴士
时延:硬件 ACK、自回环;多次迭代隐藏启动成本;
吞吐:大块消息(≥1MiB)更能逼近线速;
可靠性:长时间、高流量、CRC 校核结合监测计数;
可扩展性:环/链/树等拓扑跑通并统计端到端吞吐。
关键词: FPGA
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码
