流水线执行 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

如果内核在操作来自先前传输事务的数据的同时仍能接受更多数据,那么 XRT 即可发送下一批数据,如 暂时性数据并行化:主机到内核数据流 中所述。流水线 (Pipeline) 模式允许内核重叠多个内核运行,从而改善整体吞吐量。

为支持流水线模式,内核必须使用 ap_ctrl_chain 协议,这是 Vitis HLS 使用的默认协议。此协议还可通过向函数返回赋值 #pragma HLS INTERFACE 来启用,如以下示例所示。

void kernel_name( int *inputs,
                  ...         )// Other input or Output ports
{
#pragma HLS INTERFACE ap_ctrl_chain port=return bundle=control

要成功完成流水线执行,内核应为内核队列提供较长的时延,否则可能没有足够时间可供内核处理每一批数据,这样也就无法发挥流水线的优势。如果流水打拍的内核无法以流水打拍方式来处理数据,那么它会还原为顺序 (sequential) 执行。

重要: 为了充分利用主机到内核数据流,内核还必须分阶段写入处理数据,例如,在循环级别进行流水打拍(如 循环流水打拍 中所述)或者在任务级别进行流水打拍(如 数据流最优化 中所述)。

因固有原因,XRT 管理的内核还支持纯顺序模式,可使用 ap_ctrl_hs 块协议来为 #pragma HLS INTERFACE 中的函数返回配置此模式。