基于FPGA的自由灵活空间加速器设计方案

以下文章来源于OpenFPGA,作者碎碎思

前言

随着人工智能机器人计算机视觉和高性能计算的发展,传统 CPU/GPU 架构正在面临新的挑战:

8db472b0-8568-11f1-90a1-92fbcf53809c.gif

数据搬运成本越来越高;

内存访问成为性能瓶颈;

专用加速器开发周期长;

面对不同算法需求时缺乏灵活性。

FPGA 凭借可重构、高并行和低延迟优势,成为加速计算的重要方向。

来自瑞士洛桑联邦理工学院(EPFL)VCA 实验室的 FSA(Flexible Spatial Accelerator)项目,正是针对这一问题提出的一种新型 FPGA 加速架构。

它希望探索:

如何让 FPGA 加速器拥有更高的灵活性,同时保持接近专用硬件的性能。

什么是 FSA?

FSA 全称:

Flexible Spatial Accelerator

即:

灵活空间加速器。

FSA:在单个收缩期阵列中融合 FlashAttention

FSA 在单个脉动数组内执行所有FlashAttention 操作——无需向量单元!

享受使用矩阵乘法 FLOP 计算非矩阵乘法运算的乐趣。

为了最大限度地减少执行延迟,注意力操作在脉动数组中逐元素重叠。

与torch.nn.functional.scaled_dot_product_attentionon相比,FSA 达到了 1e-3 的精度fp16。

FSA架构

RTL 实现位于src文件夹下。顶层模块是AXI4FSA.scala。FSA指令的硬件行为在ExecutionPlan.scala中描述,控制逻辑会据此自动生成。

集成选项

提供两种将FSA集成到Chipyard中的方案:

TileLink 集成:将 FSA AXI4 内存通道连接到 Chipyard 的 TileLink MBus。如果 FSA 与其他 Chipyard 组件共享底层内存,则应使用此功能。相应的配置名称 FSAMxNConfig位于FSAConfig.scala.

直接 AXI4 集成:将 FSA AXI4 内存通道直接连接到后端内存(例如 DRAMSim、HBM),无需将 AXI4 转换为 TileLink。如果 FSA 不需要共享 MBus,建议使用此方法。相应的配置名称 AXI4FSAMxNConfig位于FSAConfig.scala.

FPGA 支持

本项目支持AMD U55C FPGA 开发板。

8f188f92-8568-11f1-90a1-92fbcf53809c.jpg

1. FPGA 位生成

请确保已安装Vivado,然后运行以下命令:

cdchipyard-fsa/fpga
make SUB_PROJECT=u55c CONFIG=EmptyU55CConfig TOP=EmptyChipTop bitstream

生成的比特流文件位于[ chipyard-fsa/fpga/generated-src/chipyard.fpga.u55c.U55CFPGATestHarness.EmptyU55CConfig/U55CFPGATestHarness.bit]。可以使用 Vivado 将此文件烧录到 FPGA 开发板上。强烈建议使用除安装 FPGA 卡的机器(主机)之外的其他机器进行烧录。

2. FPGA主机配置

请确保主机已安装并加载 Xilinx 的XDMA 驱动程序(https://github.com/Xilinx/dma_ip_drivers)。每次烧录比特流时,都应使用以下命令重新扫描 PCIe 总线:

echo1 > /sys/class/pci_bus/0000:01/device/remove
echo1 > /sys/bus/pci/rescan

现在应该可以看到xdma0_c2h_0、xdma0_h2c_0和xdma0_user设备/dev。

3. 运行FPGA测试

仍在主机上,运行以下命令启动测试:

cdchipyard-fsa/generators/fsa/python
uv run main.py --seq_q 16 --seq_kv 16 --config EmptyU55CConfig --engine FPGA

示例输出:

Loading config from: ../../../fpga/generated-src/chipyard.fpga.u55c.U55CFPGATestHarness.EmptyU55CConfig/chipyard.fpga.u55c.U55CFPGATestHarness.EmptyU55CConfig.FSAConfig.json
Device finished execution
Performance counters:
Execution time: 9414 cycles
Max bubble cycles: 6535 cycles
Max active cycles: 179 cycles
DMA active cycles: 233 cycles
Raw instructions: 32
Max instructions: 5
DMA instructions: 4
Fence instructions: 1
Enqueue instructions: 32
Dequeue instructions: 32
Reading back output tensor from addr 0x80000600, size 1024
Comparing with Torch...
Error of FSA vs torch: {'MAE': np.float32(9.4124e-05),'MSE': np.float32(1.3156206e-08),'MaxErr': np.float32(0.00031119585),'RelErr': np.float32(0.00018823991)}

要进行另一次测试运行,请从步骤 2 重新开始以重置 FPGA 系统。

参考链接

开源项目地址

https://github.com/VCA-EPFL/FSA?utm_source=chatgpt.com

项目配套论文

http://arxiv.org/abs/2507.11331

总结

EPFL VCA 实验室推出的 FSA(Flexible Spatial Accelerator) 项目,通过空间计算架构重新思考 FPGA 加速器设计,希望在性能和灵活性之间找到新的平衡。

FSA 并不是单纯提供几个 RTL 模块,而是完整实现了一套 Flexible Systolic Array(柔性脉动阵列) 架构。

它不仅展示了一种新的 FPGA 加速方法,也代表了未来可重构计算的发展趋势:

FPGA 不只是用来实现电路,而正在成为一种能够动态适应算法变化的计算平台。

除了 RTL 代码之外,开源仓库还提供了较完整的开发环境,包括:

Chisel 硬件描述

Verilator 仿真

FPGA 实现工程

软件运行环境

Benchmark 示例

AI 工作负载测试

8f6cf50a-8568-11f1-90a1-92fbcf53809c.jpg

对于希望学习现代 AI 加速器设计的开发者来说,不仅可以阅读架构论文,还可以直接查看硬件实现细节,理解从架构设计、RTL 实现到 FPGA 验证的完整流程。

  • 随机文章
  • 热门文章

您可以还会对下面的文章感兴趣:

暂无相关文章