久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AuroraFlow:面向多FPGA的易用低時(shí)延通信方案——在分布式神經(jīng)網(wǎng)絡(luò)推理上的演示

AuroraFlow:面向多FPGA的易用低時(shí)延通信方案——在分布式神經(jīng)網(wǎng)絡(luò)推理上的演示

作者: 時(shí)間:2025-11-10 來源: 收藏

摘要(Abstract)

通信的重要性近年持續(xù)攀升,已有多種實(shí)現(xiàn)路線。本文聚焦串行直連的 通信,提出構(gòu)建于 AMD 官方 Aurora 協(xié)議 IP 之上的 AuroraFlow,并用于實(shí)現(xiàn)多FPGA神經(jīng)網(wǎng)絡(luò)推理。

AuroraFlow 面向 HLS 應(yīng)用,便于把低時(shí)延通信集成進(jìn)既有設(shè)計(jì);它可滿帶寬運(yùn)行、內(nèi)置運(yùn)行期監(jiān)測以發(fā)現(xiàn)錯(cuò)誤,并實(shí)現(xiàn)流量控制以避免接收端過載導(dǎo)致的數(shù)據(jù)丟失。我們在電路交換的光網(wǎng)絡(luò)上測得:1MiB 消息下平均時(shí)延最低 0.51 μs、平均吞吐可達(dá) 95.03 Gbit/s。

為超越微基準(zhǔn),我們將 AuroraFlow 集成到數(shù)據(jù)中心 FPGA 上的分布式神經(jīng)網(wǎng)絡(luò)推理中。使用 FINN(一個(gè)面向推理的數(shù)據(jù)流硬件生成框架)擴(kuò)展到多FPGA:FINN 負(fù)責(zé)生成推理電路,AuroraFlow 負(fù)責(zé) FPGA 之間的數(shù)據(jù)通信。以 MobileNet 為例,我們展示了兩者的組合:在保持 FINN 低時(shí)延推理優(yōu)勢的同時(shí),借助 AuroraFlow 規(guī)模化到多片 FPGA。

貢獻(xiàn)

  1. 設(shè)計(jì)并實(shí)現(xiàn)了開源、HLS 友好的電路交換通信方案 AuroraFlow(基于 Aurora IP),可在 Vitis HLS 中直接集成流式 FPGA–FPGA 通信。

  2. 擴(kuò)展 FINN,使其在端到端流程中自動(dòng)使用 AuroraFlow,證明其易用性可集成性

  3. 通過微基準(zhǔn)展示 AuroraFlow 的關(guān)鍵特性:低時(shí)延、高吞吐、流量控制、錯(cuò)誤檢測,并在最多 48 張數(shù)據(jù)中心 FPGA 卡上驗(yàn)證可擴(kuò)展性;在神經(jīng)網(wǎng)絡(luò)推理用例上驗(yàn)證其實(shí)用性。

  4. 與先前的 VNx UDP 協(xié)議棧相比,AuroraFlow 面積開銷顯著更低;在推理用例中與通信核組合時(shí)時(shí)延不顯著增大。


1 引言(Introduction)

單片 FPGA 在處理大型復(fù)雜設(shè)計(jì)時(shí)的局限推動(dòng)了多FPGA體系,關(guān)鍵在于片間高效通信。常見兩路:

  • 經(jīng)主機(jī):每個(gè)節(jié)點(diǎn)上 FPGA 依賴宿主機(jī)搬運(yùn)數(shù)據(jù);

  • 直連:FPGA 直接相連并交換數(shù)據(jù)。

前者實(shí)現(xiàn)簡單但增加主機(jī)往返引入高時(shí)延;后者需在 FPGA 上實(shí)現(xiàn)網(wǎng)絡(luò)邏輯,但可獲得低時(shí)延/高吞吐。直連又分分組交換(如 Ethernet/UDP)與電路交換(如 Xilinx Aurora 高速串行);分組交換靈活,但有協(xié)議開銷/緩沖延遲/面積增加;電路交換時(shí)延可預(yù)測、開銷小,但鏈路配置與流控管理更繁瑣。

HLS(如 Vitis HLS)讓開發(fā)者用 C/C++ 設(shè)計(jì)加速內(nèi)核,但低層通信接口的集成對 HLS 用戶并不友好。為此,我們提出 AuroraFlow:在保持高吞吐/低時(shí)延/強(qiáng)健錯(cuò)誤檢測的同時(shí),抽象低層細(xì)節(jié)、提供內(nèi)置監(jiān)測,讓 HLS 項(xiàng)目能無縫擴(kuò)展到多FPGA。

作為展示,我們選擇神經(jīng)網(wǎng)絡(luò)推理:借助 FINN 把網(wǎng)絡(luò)映射為數(shù)據(jù)流硬件;隨著模型增大,單片資源很快耗盡,需要深度切分到多片。本文將在 FINN 的端到端流程中接入 AuroraFlow,并以 MobileNet 為例進(jìn)行評測。


2 AuroraFlow 設(shè)計(jì)與實(shí)現(xiàn)(Design & Implementation)

2.1 動(dòng)機(jī)(Motivation)

現(xiàn)代 FPGA 通過專用收發(fā)器在點(diǎn)對點(diǎn)互連上提供極高帶寬,數(shù)據(jù)中心卡多經(jīng) SFP/QSFP 接入電/光網(wǎng)絡(luò)組件以靈活連接多板卡。拓?fù)淙粜桀l繁改變,可:

  • 采用點(diǎn)對點(diǎn) + 光開關(guān)(鏡面切換光纖連接,每次運(yùn)行前固定拓?fù)?/strong>);

  • 采用分組交換(如以太網(wǎng)/UDP/TCP),需更多邏輯與網(wǎng)絡(luò)協(xié)議配置知識。

2.2 Aurora 協(xié)議與 IP(Protocol & IP)

Aurora 64B/66B 是 AMD 的高速串行鏈路層協(xié)議,與 100G 以太的 64B/66B 編碼一致,可與現(xiàn)成網(wǎng)絡(luò)硬件兼容。我們在 HPC 多FPGA應(yīng)用中使用該 Aurora IP,并適配 QSFP28(100G) 連接以用于電路交換光網(wǎng)絡(luò)。然而,原生 IP 的接口/時(shí)鐘域/復(fù)位序列/AXI 規(guī)范對 HLS 用戶門檻較高。

AuroraFlow 將 Aurora IP 封裝為可鏈接的“通信內(nèi)核”,實(shí)現(xiàn)滿帶寬、可靠連接、細(xì)粒度診斷,免去 RTL 細(xì)節(jié)。其總體框圖見原文圖1:在 IP 周圍加入數(shù)據(jù)寬度轉(zhuǎn)換、跨時(shí)鐘域 FIFO、流量控制模塊、監(jiān)測模塊等。

2.3 關(guān)鍵設(shè)計(jì)點(diǎn)(Features)

(1) 吞吐
Aurora IP 在 QSFP28 可達(dá)線速 100 Gbit/s。其 AXI-Stream 寬度為 32B,需 ≥402.8 MHz 時(shí)鐘以滿帶寬。為適配大資源 HLS 設(shè)計(jì)的時(shí)序,我們將用戶側(cè)時(shí)鐘域與鏈路側(cè)解耦,并以數(shù)據(jù)寬度轉(zhuǎn)換到 64B配合跨域 FIFO(TX/RX FIFO),讓用戶內(nèi)核在約 1/2 線速頻率下仍可提供足量數(shù)據(jù)以吃滿帶寬。

(2) 流量控制(Flow Control)
Aurora IP 提供 UFC(用戶控制消息)與 NFC(接收端反壓能力)。我們啟用 NFC:根據(jù) RX FIFO可編程滿/空閾值,在接收端觸發(fā)暫停/恢復(fù)發(fā)送,防止接收端超限導(dǎo)致丟包與不可恢復(fù)的死鎖。同時(shí)內(nèi)部計(jì)數(shù)“停發(fā)信號后的在飛傳輸數(shù)”,用于校核 FIFO 配置是否充足

(3) 配置項(xiàng)(見表1)

  • USE_FRAMING:可選“幀化”接口(需 last 位、帶 CRC)或“流式”接口;

  • FIFO_WIDTH:32B/64B(32B 可省去寬度轉(zhuǎn)換、略減延遲與資源);

  • RX FIFO 大小/閾值:平衡避免溢出減少空轉(zhuǎn)。

(4) 監(jiān)測(Monitoring)
監(jiān)測模塊觀察 Aurora CORE_STATUS(收發(fā)器狀態(tài)、幀 CRC)、RX FIFO 滿信號、傳入/傳出幀計(jì)數(shù)、TX FIFO 滿周期、流控觸發(fā)次數(shù)等,便于運(yùn)行期驗(yàn)證與瓶頸分析。

(5) 易用性(Usability)
提供單一 .xo 內(nèi)核包,用 Vitis 工具鏈與 HLS 內(nèi)核鏈接;僅需連進(jìn)/出 AXI-StreamQSFP 時(shí)鐘。內(nèi)核自由運(yùn)行,并暴露 AXI4-Lite 狀態(tài)/計(jì)數(shù)寄存器給 XRT API,便于啟動(dòng)前檢查鏈路已就緒、執(zhí)行后核對傳輸,并可軟件復(fù)位監(jiān)測計(jì)數(shù)器做細(xì)粒度測量。


3 案例:FINN 下的多FPGA神經(jīng)網(wǎng)絡(luò)推理(Case Study)

3.1 背景

推理規(guī)模從 MLP 向 LLM 邁進(jìn),對吞吐/時(shí)延/能效要求更高。FPGA 借由定制數(shù)據(jù)流架構(gòu)具備低時(shí)延優(yōu)勢。FINN(2017)可從 ONNX 生成推理數(shù)據(jù)流硬件,把各層映射為專用 MVAU 并深度流水。若模型太大,可通過folding(折疊)降低并行度復(fù)用 MVAU,但性能下降。大模型往往無法在單片 FPGA 完全展開,需要按網(wǎng)絡(luò)深度切分到多片,同時(shí)保持流水結(jié)構(gòu)。

3.2 相關(guān)工作:Elastic-DF(UDP)

FINN 團(tuán)隊(duì)的 Elastic-DF 曾給出自動(dòng)分區(qū)與 VNx UDP 協(xié)議棧集成的多FPGA版本,但存在可改進(jìn)空間:

  • 時(shí)延:分組交換引入頭部/解析/緩沖等開銷;

  • 面積:網(wǎng)絡(luò)棧邏輯占用可觀;

  • 可靠性:在受控本地環(huán)境中相對次要。

3.3 我們的做法:AuroraFlow 集成

對推理而言,拓?fù)渑c通信伙伴固定、“運(yùn)行中無需重配置”,可采用電路交換原始流式數(shù)據(jù)

  • 省去路由/頭部,降低時(shí)延與面積;

  • 釋放的資源可用于進(jìn)一步展開網(wǎng)絡(luò);

  • 通過 AuroraFlow 易擴(kuò)展至多片,構(gòu)成“大號統(tǒng)一 FPGA”的效果。

3.4 FINN 工具流修改

我們復(fù)刻并擴(kuò)展多FPGA流程(將開源發(fā)布),使用戶基本“開關(guān)式”啟用多FPGA:

  1. 讀入 ONNX 并規(guī)范化圖;

  2. 設(shè)定各層 folding

  3. 生成各層 IP;

  4. 在層間插入 FIFO 并仿真估算其大??;

  5. (新增)基于資源估算進(jìn)行圖分區(qū)(見下);

  6. **(修改)**按設(shè)備ID創(chuàng)建 StreamingDataflowPartitions(SDP);

  7. (新增)為每條跨設(shè)備流打包 Aurora 內(nèi)核

  8. **(修改)**為每片 FPGA 生成鏈接配置,連接本片內(nèi)所有內(nèi)核;

  9. 對所有設(shè)計(jì)綜合實(shí)現(xiàn)。

分區(qū):我們采用 MIP(混合整數(shù)規(guī)劃),利用按層資源估計(jì)與每片 FPGA 資源上/下限自動(dòng)求解分配;實(shí)驗(yàn)平臺每卡2 個(gè) QSFP 口,對 ResNet-50 等拓?fù)涫┘印皢捂溌仿酚伞奔s束以匹配硬件條件。

SDP 組裝:按設(shè)備ID(可選加 SLR)把連續(xù)層歸并為一個(gè) SDP 內(nèi)核(見圖3),輸入/輸出卡上再連接 DMA 內(nèi)核。

打包/鏈接:跨設(shè)備連邊處生成所需數(shù)量的 AuroraFlow 內(nèi)核(收/發(fā)各一),其 .xo 供 v++ 鏈接;最終每片的 dataflow 包含輸入 DMA、一個(gè)或多個(gè) SDP、必要的 AuroraFlow 內(nèi)核及可選監(jiān)測/基準(zhǔn)內(nèi)核。


4 評測與結(jié)果(Evaluation & Results)

4.1 硬件平臺與部署

  • 平臺:Noctua 2 集群,共 16 節(jié)點(diǎn) × 每節(jié)點(diǎn) 3×Xilinx U280(U+ XCU280),每卡 HBM2 8 GB + DDR4 32 GB,QSFP28×2(100G);主機(jī)為 AMD EPYC 7713 ×2(64C)。全網(wǎng)互聯(lián):Infiniband HDR100;

  • 光交換機(jī)Calient S320,320 端口,支持電路交換的任意 FPGA–FPGA 拓?fù)洌?/p>

  • 調(diào)度/自動(dòng)布線Slurm 擴(kuò)展參數(shù) --fpgalink 可在作業(yè)提交時(shí)聲明拓?fù)?/strong>,由系統(tǒng)自動(dòng)配置光(與以太)交換矩陣(給出兩節(jié)點(diǎn)環(huán)拓?fù)涫纠_本)。

  • 部署流程:建立鏈路→為每片 FPGA 下發(fā)對應(yīng) bitstream→并行啟動(dòng)。我們開發(fā) XRT + OpenMPI 驅(qū)動(dòng)自動(dòng)完成加載與性能采集。

4.2 微基準(zhǔn)(Latency/Throughput/Reliability/Scaling/Area)

方案對比

  • MPI-Host2Host(主機(jī)到主機(jī),經(jīng) InfiniBand);

  • MPI+PCIe(FPGA?主機(jī)經(jīng) PCIe + MPI 主機(jī)間);

  • UDP(VNx)(直接 FPGA–FPGA 的 UDP 棧);

  • AuroraFlow(幀化/流式兩種)。

測試法:一片卡的兩個(gè) QSFP 口經(jīng)光交換機(jī)互連,硬件自回環(huán) ACK,隱藏內(nèi)核啟動(dòng)延遲;消息大小從 2^6 到 2^20 B(64B~1MiB),總通信時(shí)長近似保持。

時(shí)延與吞吐(核心結(jié)論)

  • MPI-Host2Host:最小時(shí)延 1.55 μs,最大吞吐 88.3 Gbit/s;

  • MPI+PCIe:最小時(shí)延 28.65 μs、最大吞吐 18.26 Gbit/s;

  • UDP(最佳 2^11 B 負(fù)載):最小時(shí)延 0.95 μs、最大吞吐 95.43 Gbit/s

  • AuroraFlow(流式)最小時(shí)延 0.51 μs(64B),1MiB 吞吐 94.88~95.03 Gbit/s;幀化模式時(shí)延 0.53 μs(CRC/last 處理帶來微增)。

可靠性:單條消息 256 MiB184,320 次迭代(單次 45 TiB),連跑 20 次、總計(jì) 900 TiB、約 22 小時(shí),各節(jié)點(diǎn)CRC 全通過、狀態(tài)信號無錯(cuò)誤。盡管收/發(fā)計(jì)算速率相當(dāng),仍在 80 次中的 14 次觸發(fā)了流控,避免了潛在溢出與死鎖,證明流控必要性。

規(guī)?;?/strong>:把 48 片 FPGA 組成環(huán)路,256 GiB 消息環(huán)回,平均吞吐 95.9 Gbit/s,證明大規(guī)模可穩(wěn)定傳輸,且在大消息下微小時(shí)延不構(gòu)成瓶頸。

資源占用(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%)。
    結(jié)論:AuroraFlow 面積顯著更低,幾乎不與用戶邏輯爭資源。

4.3 多FPGA推理(MobileNet?V1)

模型:MobileNet?V1(ImageNet 預(yù)訓(xùn)練 ONNX),除首層外權(quán)重/激活 4 bit 量化

綜合實(shí)現(xiàn):目標(biāo)頻率 286 MHz,先自動(dòng)折疊至 ~5000 FPS,后手動(dòng)微調(diào)以滿足 HLS 數(shù)據(jù)寬度約束;為避免 DSP 過載,MVAU 采用 LUT 實(shí)現(xiàn)優(yōu)先。兩片 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 以光交換機(jī)直連,XRT+MPI 驅(qū)動(dòng);數(shù)據(jù)駐留 HBM bank0。對 1000 張 ImageNet?1k 樣本做 1000 次推理,統(tǒng)計(jì)吞吐與延遲:

  • 準(zhǔn)確率:Top?1 70.09%、Top?5 89.50%(與 FINN 單卡基線一致);

  • 吞吐4460.92 FPS(標(biāo)準(zhǔn)差 2.40 FPS);

  • 單樣本延遲(空流水)0.89 ms(std 0.05 ms);

  • 整批耗時(shí)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 棧降低通信時(shí)延;

  • 我們的驅(qū)動(dòng)直連 XRT、無額外打包/轉(zhuǎn)換開銷;

  • FINN 版本演進(jìn)帶來更優(yōu)折疊/RTL 單元;

  • 度量方法差異(其環(huán)境/中間件不同)。


5 相關(guān)工作(Related Work)

多FPGA通信:Intel/Altera 平臺有類似功能的 SerialLite(部分 BSP 可 HLS 直用);路由/集合通信層如 SMI、CIRCUS 等多基于 Altera;AMD 平臺上基于分組交換的集合通信如 ACCL 已展示實(shí)際應(yīng)用。也有利用分組交換硬件、在應(yīng)用上疊加“虛擬電路”的混合方案。

FPGA 上的 NN 推理:兩大陣營——Systolic/DPU(通用矩陣陣列,層間復(fù)用、需頻繁訪存)與數(shù)據(jù)流/流式(按網(wǎng)絡(luò)專用實(shí)現(xiàn),各層并行流水,減少外存交互)。FINN 屬后者代表之一。


6 結(jié)論(Conclusion)

AuroraFlow 為多FPGA應(yīng)用提供了易用、低時(shí)延、高吞吐、低面積的通信方案,HLS 友好、帶運(yùn)行期監(jiān)測,在48 片規(guī)模上驗(yàn)證穩(wěn)定可擴(kuò)展。結(jié)合 FINN 的自動(dòng)分區(qū)與數(shù)據(jù)流生成,用戶可輕松把大模型跨片部署,在保持低時(shí)延優(yōu)勢的同時(shí)提升吞吐。我們已將 AuroraFlow、FINN 擴(kuò)展與評測資產(chǎn)開源發(fā)布,便于復(fù)現(xiàn)與拓展。

致謝:感謝德國國家高性能計(jì)算中心 PC2 的 Noctua 2 計(jì)算資源與相關(guān)項(xiàng)目資助;感謝 AMD HACC 計(jì)劃的支持等(詳見原文)。


附錄 A:AuroraFlow 用戶配置(節(jié)選)

  • USE_FRAMING:0/1;1=幀化(啟用 CRC/last),0=流式;

  • FIFO_WIDTH:32/64(32 時(shí)禁用寬度轉(zhuǎn)換);

  • RX_FIFO_SIZE:默認(rèn) 65536B;

  • RX_FIFO_PROG_FULL:默認(rèn)為一半容量;

  • RX_FIFO_PROG_EMPTY:默認(rèn)為 1/8 容量。

建議:在光網(wǎng)絡(luò)與多跳情形下,預(yù)留足夠 in?flight 緩沖;聯(lián)動(dòng)監(jiān)測指標(biāo)(流控觸發(fā)次數(shù)、TX 滿周期)調(diào)參。

附錄 B:度量方法小貼士

  • 時(shí)延:硬件 ACK、自回環(huán);多次迭代隱藏啟動(dòng)成本;

  • 吞吐:大塊消息(≥1MiB)更能逼近線速;

  • 可靠性:長時(shí)間、高流量、CRC 校核結(jié)合監(jiān)測計(jì)數(shù);

  • 可擴(kuò)展性:環(huán)/鏈/樹等拓?fù)渑芡ú⒔y(tǒng)計(jì)端到端吞吐。


關(guān)鍵詞: FPGA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉