跳转到主要内容
国际橡塑展报名
国际橡塑展报名
国际橡塑展报名

FPGA上的自由空间加速器:EPFL开源FSA项目探索下一代可重构计算架构

judy 提交于

文章来源:OpenFPGA

前言

Image
EPFL开源FSA项目

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

  • 数据搬运成本越来越高;

  • 内存访问成为性能瓶颈;

  • 专用加速器开发周期长;

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

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。

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

FSA架构

Image
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 支持

Image
AMD U55C FPGA 开发板

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

Image
AMD U55C FPGA 开发板框图

1. FPGA 位生成

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

cd chipyard-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 总线:

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

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

3. 运行FPGA测试

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

cd chipyard-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 工作负载测试

Image
开发环境

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