TAPA 数据流 HLS 框架使用指南
1. 项目介绍
TAPA(Task-Parallel Architecture)是一个数据流高层次综合(HLS)框架,旨在通过快速编译、表达性编程模型和生成高频率的 FPGA 加速器来优化 FPGA 设计。TAPA 通过显式解耦通信和计算,提供更好的质量结果(QoR)。它集成了 AutoBridge 布局规划器,以优化 RTL 生成过程,并在平均情况下比 Vivado 实现更高的频率。
2. 项目快速启动
安装
首先,克隆 TAPA 项目到本地:
git clone https://github.com/UCLA-VAST/tapa.git
cd tapa
构建和测试
使用以下命令安装和测试 TAPA:
./install.sh
./install-and-test.sh
示例代码
以下是一个简单的 TAPA 示例代码,展示了如何使用 TAPA 进行数据流处理:
#include "tapa.h"
void MyTask(int *input, int *output) {
int sum = 0;
for (int i = 0; i < 10; ++i) {
sum += input[i];
}
*output = sum;
}
void MyKernel(tapa::istream<int> &input, tapa::ostream<int> &output) {
int buffer[10];
input.read(buffer, 10);
int result;
MyTask(buffer, &result);
output.write(result);
}
int main() {
tapa::stream<int> input, output;
tapa::invoke(MyKernel, input, output);
return 0;
}
3. 应用案例和最佳实践
成功案例
- Serpens (DAC'22): 在 Xilinx Alveo U280 HBM 板上使用 24 个 HBM 通道实现了 270 MHz 的频率。
- Sextans (FPGA'22): 在 Xilinx Alveo U250 板上使用 4 个 DDR 通道实现了 260 MHz 的频率。
- SPLAG (FPGA'22): 相比最先进的 FPGA 加速器,实现了高达 4.9 倍的加速。
最佳实践
- 显式并行性: 使用 TAPA 的 API 显式指定并行性,以优化资源利用。
- HBM 优化: 利用 TAPA 的 HBM 特定优化工具,减少 HBM 接口 IP 的面积开销。
- 自动化设计空间探索: 使用 TAPA 的自动化设计空间探索工具,平衡资源压力和布线压力。
4. 典型生态项目
AutoBridge
AutoBridge 是 TAPA 集成的一个布局规划器,用于优化 RTL 生成过程,显著提高 FPGA 设计的频率。
RapidStream
RapidStream 是一个与 TAPA 集成的工具,旨在比 Vivado 更快地进行 FPGA 设计,提供高达 10 倍的加速。
通过以上模块的介绍和示例,您可以快速上手并深入了解 TAPA 数据流 HLS 框架的使用和优化方法。