スタティック ファイル スコープ テーブル - 2023.2 日本語

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

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

カーネル関数は、ファイル スコープ変数としてアクセス可能な非公開の読み取り専用データ構造を使用できます。コンパイラは、そのようなデータに限られた量のスタティック ヒープ空間を割り当てます。例として、次のようなヘッダー ファイル (user_parameter.h) があるとします。

#ifndef USER_PARAMETER_H
#define USER_PARAMETER_H

#include <adf.h>
static int16 lutarray[8] = {1,2,3,4,5,6,0,0} ; 

#endif

このヘッダー ファイルはカーネルのソース ファイルに含めることができ、ルックアップ テーブルにはカーネル関数内で直接アクセスできます。配列定義は、static 修飾子によりこのファイルに限定されます。aiecompiler は、この配列をこのカーネルが使用されているプロセッサ用のスタティック ヒープ空間に割り当てます。

#include <aie_api/aie.hpp>
#include <aie_api/aie_adf.hpp>
#include "user_parameter.h"

using namespace adf;
void simple_lut(input_buffer<int16> &in, output_buffer<int16> &out){
  aie::vector<int16,32> sbuff;
  aie::vector<int16,8> coeffs=aie::load_v<8>((int16*)lutarray);
  auto inIter=aie::begin_vector<32>(in);
  sbuff=*inIter++;
  auto acc = aie::sliding_mul<8,16>(coeffs, 0, sbuff, 0);
  auto outIter=aie::begin_vector<8>(out);
  *outIter++=acc.to_vector<int16>(0);
}