上一节描述了通过统一的 C++ 模型完成的设计组织、软件接口和 VSC 编译的硬件。以下简要描述源码 C++ 模型的关键功能特性,这些功能特性可供您用于轻松捕获特定设计的用途:
- 使用两个 C 语言线程对往返主机与器件之间的数据传输进行显式建模,在每个加速器及其 CU 组上发送/接收数据
- 支持通过如下方式进行性能探索:使用指南参数、执行各类更改,如使用多个存储体、更改 CU 数量,以及在主机与器件之间进行乒乓式并发数据传输(前提是保证最低限度的主机或内核代码更改或者无更改)
- 复制要并行运行的 CU 以利用粗粒度并行性(仅使用单个数字指南参数)
- 在计算集群(多个 CU)上使用循环或自由轮询进行自动作业调度
- 在任一加速器内复制的 CU 上自动执行数据传输和加速器作业
- 通过
PCIe®
对每个加速器作业和其他最优化进行自动流水打拍:
- 在主机侧使用多个缓冲器对象来发送/接收数据
- 基于数据移动模式指南,提供适用于每个 CU 的数据移动器
- 在全局存储器 (DDR/HBM) 与片上 (RAM) 存储器资源之间复制数据
- 在 CU 上的当前传输事务完成前,从全局存储器中预取下一项传输事务
- 对要一次性同时处理的传输事务(作为单一数据块传输的一连串 n 个数据集)进行分群,以便分摊 PCIe 时延
- 对每个 CU 使用多个主机和器件存储器缓冲器来自动执行并发(乒乓式)数据传输,改善吞吐量
- 使用峰值存储器分配(针对最大的数据大小进行分配)来允许可变有效载荷大小。
- 在以下情况下可支持动态输出缓冲器大小(在运行时分配):
- 在编译时,最大缓冲器大小已知,并且
- 动态大小由应用代码来确定
- 混合使用软件(主机侧)和硬件(计算单元)进行系统层次组合:
- 利用直接连接 (AXI4‑Stream) 推断进行仅限硬件的组合。您可在每个 CU 内创建 PE 流水线或网络,并轻松复制此类单元。
- 允许在同步流水线(CU 中)内通过串流接口来实现自由运行的 PE
- 混合硬件与软件组合,用于创建数据处理流水线。在硬件任务间,软件任务可同时处理数据,并将不同加速器编译到同一个 xclbin 内
- 整个系统设计采用 C++ 来捕获,可藉由 C++ 源码的软件编译和执行来加以确认