读取并递增输入串流 - 2023.2 简体中文

AI 引擎内核与计算图编程指南 (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 简体中文

AI 引擎运算

以下运算会从给定输入串流读取数据,并在 AI 引擎上前移串流。由于在 AI 引擎上有 2 个输入串流端口,因此,物理端口分配由 AI 引擎编译器自动完成,并作为串流数据结构的一部分进行传递。数据值只能从串流中逐一读取或者作为矢量来读取。对于后者,除非所有值都存在,否则串流运算会停滞。数据基于底层单周期 32 位串流运算或者 4 周期 128 位宽串流运算来进行分组。级联连接会并行读取所有累加器值。

int32 readincr(input_stream<int32> *w);
uint32 readincr(input_stream<uint32> *w);
cint16 readincr(input_stream<cint16> *w);
float readincr(input_stream<float> *w);
cfloat readincr(input_stream<cfloat> *w);

aie::vector<int8,16> readincr_v<16>(input_stream<int8> *w);
aie::vector<uint8,16> readincr_v<16>(input_stream<uint8> *w);
aie::vector<int16,8> readincr_v<8>(input_stream<int16> *w);
aie::vector<cint16,4> readincr_v<4>(input_stream<cint16> *w);
aie::vector<int32,4> readincr_v<4>(input_stream<int32> *w);
aie::vector<cint32,2> readincr_v<2>(input_stream<cint32> *w);
aie::vector<float,4> readincr_v<4>(input_stream<float> *w);

aie::accum<acc48,8> readincr_v<8>(input_stream<acc48> *w);
aie::accum<cacc48,4> readincr_v<4>(input_stream<cacc48> *w);
aie::accum<acc80,4> readincr_v<4>(input_stream<acc80> * str);
aie::accum<cacc80,2> readincr_v<2>(input_stream<cacc80> * str);
aie::accum<accfloat,8> readincr_v<8>(input_stream<accfloat> * str);
aie::accum<caccfloat,8> readincr_v<4>(input_stream<caccfloat> * str);
注释: readincr API 可搭配 TLAST 实参一起使用,来指明串流结束,如下所示。
int32 readincr(input_stream<int32> *w, bool &tlast);