将当前读/写位置后移 - 2023.2 简体中文

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

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

在如下描述中,input_buffer<TYPE> 和 input_circular_buffer<TYPE> 表示任意允许的输入缓冲器端口数据类型。同样,output_buffer<TYPE> 和 output_circular_buffer<TYPE> 表示任意允许的输出缓冲器端口数据类型。

表 1. 将当前读/写位置后移
用途 输入缓冲器端口类型 输出缓冲器端口类型
用于后移当前读/写位置。
void simple(input_circular_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pIn  = aie::begin_random_circular(in);
...
TYPE data = *pIn--;
...
void simple(input_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pOut  = aie::begin_random_circular(out);
TYPE data;
...
*pOut-- = data;
...
用于后移当前读/写位置,后移的值为底层缓冲器端口类型的 4 倍。
#define VECTOR_SIZE 4
void simple(input_circular_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pIn = aie:: begin_vector_random_circular <VECTOR_SIZE>(in);
...
v4TYPE data = *pIn--;
...
#define VECTOR_SIZE 4
void simple(input_buffer<TYPE> & in, output_circular_buffer<TYPE> & out)
{
auto pOut  = aie:: begin_vector_random_circular <VECTOR_SIZE>(out);
v4TYPE data;
...
*pOut-- = data;
...
用于后移当前读/写位置,后移的值为底层缓冲器端口类型的 8 倍。
#define VECTOR_SIZE 8
void simple(input_circular_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pIn = aie:: begin_vector_random_circular <VECTOR_SIZE>(in);
...
v8TYPE data = *pIn--;
...
#define VECTOR_SIZE 8
void simple(input_buffer<TYPE> & in, output_circular_buffer<TYPE> & out)
{
auto pOut  = aie:: begin_vector_random_circular <VECTOR_SIZE>(out);
v8TYPE data;
...
*pOut-- = data;
...