現在の読み出し/書き込み位置の前方移動 - 2023.2 日本語

AI エンジン カーネルおよびグラフ プログラミング ガイド (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 日本語

次の説明では、input_buffer<TYPE> は許容される入力バッファー ポートのデータ型を表します。同様に、output_buffer<TYPE> は許容される出力バッファー ポートのデータ型を表します。

表 1. 現在の読み出し/書き込み位置の前方移動
用途 入力バッファー ポートのタイプ 出力バッファー ポートのタイプ
現在の読み出し/書き込み位置を前方移動させる オプション 1: 反復子の使用
void simple(input_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pIn  = aie::begin(in);
TYPE data = *pIn++;
...

オプション 2: data() API の使用
void simple_1(input_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
const TYPE* pIn=in.data();
TYPE data = pIn[index++];
...
オプション 1: 反復子の使用
void simple(input_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pOut= aie::begin(out);
TYPE data;
*pOut++ = data;
...
オプション 2: data() API の使用
void simple_1(input_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
const TYPE* pOut =(TYPE*)out.data();
pOut[index++] = data;
...
現在の読み出し/書き込み位置を、基準となるバッファー ポート タイプの 4 倍前方移動させる。
#define VECTOR_SIZE 4
void simple(input_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pIn = aie::begin_vector<VECTOR_SIZE>(in);
v4TYPE data = *pIn++;
...
#define VECTOR_SIZE 4
void simple(input_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pOut  = aie::begin_vector<VECTOR_SIZE>(out);
v4TYPE data;
*pOut++ = data;
...
現在の読み出し/書き込み位置を、基準となるバッファー ポート タイプの 8 倍前方移動させる。
#define VECTOR_SIZE 8
void simple(input_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pIn = aie::begin_vector<VECTOR_SIZE>(in);
v8TYPE data = *pIn++;
...
#define VECTOR_SIZE 8
void simple(input_buffer<TYPE> & in, output_buffer<TYPE> & out)
{
auto pOut  = aie::begin_vector<VECTOR_SIZE>(out);
v8TYPE data;
*pOut++ = data;
...