基于串流的访问 - 2022.1 简体中文

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

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

通过基于串流的访问模型,内核会接收到类型为数据(作为实参)的输入串流或输出串流。对这些串流进行的每次访问都将同步,即,如果数据在串流中不可用,则读取停滞,如果串流无法接受新数据,则写入停滞。

AI 引擎支持两个 id=01 的 32 位输入串流端口和两个 id=01 的 32 位输出串流端口。此 ID 是作为实参提供给串流对象构造函数的。AI 引擎编译器会在内核实参列表中从左到右自动分配输入和输出串流端口 ID。除非串流端口采用包切换(请参阅 显式包切换),否则不允许通过将多个内核映射到同一个 AI 引擎来共享串流端口。
public:
  input_plio din;
  output_plio dout;
  adf::kernel k0,k1;
...
connect <stream> (din.out[0], k1.in[0]);
connect <stream> (k1.out[0], k2.in[0]);
connect <stream> (k2.out[0], dout.in[0]);
在一个 AI 引擎的累加器寄存器与另一个物理相邻的核之间还有直接串流通信通道,称为级联。在 AI 引擎阵列中,级联串流采用蛇形线性方式在各 AI 引擎处理器之间相连。
connect <cascade> (k1.out[1], k2.in[1]);

AI 引擎编译器会根据数据流 graph 连接自动推断串流数据结构,并在用于实现 graph 控制的封装文件代码中自动声明此结构。内核函数仅对指针执行运算,这些指针指向作为实参传递给内核函数的串流数据结构。在数据流 graph 或内核程序中无需声明这些串流数据结构。