适用于多重速率处理的窗口连接 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文
在某些设计中,内核的输出窗口大小可能与下一个内核的输入窗口大小不同。在此情况下,连接声明将包含输出窗口的大小和输入窗口的大小。例如:
connect< window<128> , window<192,32> > net0 ( kernel0.out[0] , kernel1.in[0] );
在此示例中,kernel0 会写入 128 字节,kernel1 期望将有 192 字节写入存储器,导致结果出错。为避免此错误,AI 引擎编译器会执行自动多重速率分析。在此情况下,AI 引擎编译器将指定 kernel1 应运行 2 次,而 kernel0 则运行 3 次。
在编译时可在 aiecompiler 命令中使用 --disable-multirate 标志来禁用此自动分析。在此情况下,您必须在 graph 中为这些内核指定重复计数:
repetition_count(kernel0) = 3;
repetition_count(kernel1) = 2;
正如您能够在 graph 中将输出窗口广播至多个输入窗口(自动 DMA 插入机制)一样,您也可以在此特定用例中执行多重速率处理:
connect< window<128> , window<64> > net0 ( kernel0.out[0] , kernel1.in[0] );
connect< window<128> , window<192> > net0 ( kernel0.out[0] , kernel2.in[0] );

在此示例中,AI 引擎编译器会自动检测出针对每一次 graph 迭代 graph.run(1)kernel2 应运行 2 次,kernel0 应运行 3 次,而 kernel1 则应运行 6 次。这些重复计数也可在 graph 中手动指定。