共有グラフのテーブル - 2023.2 日本語

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

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

同じテーブル定義が複数のカーネルで使用されることがあります。AI エンジン アーキテクチャは分配アドレス空間アーキテクチャなので、そのようなカーネルを実行する各プロセッサのバイナリ イメージには、そのローカル メモリで定義されたテーブルが必要です。正しいグラフ リンケージを複数のプロセッサに分配するには、カーネル ソース ファイルとグラフ クラスの定義ファイルで、テーブルを extern として宣言する必要があります。そして、次に示すように、プロパティとして追加されている個別のヘッダー ファイルで実際のテーブル定義を指定します。

#include <adf.h>
extern int16 lutarray[8];
class simple_lut_graph : public adf::graph {
public:
  kernel k;
  parameter p;

  simple_lut_graph() {
    k = kernel::create(simple);
    p = parameter::array(lutarray);
    connect(p,k);

    std::vector<std::string> myheaders;
    myheaders.push_back("./user_parameter.h");
    headers(k) = myheaders;
    location<parameter>(p)={address(0,1,0x1000)};
    ...
  }
}

これにより、このカーネルが使用される箇所でテーブルを定義するヘッダー ファイルが最終バイナリ リンクに含まれ、再定義エラーが発生しなくなります。

注記: 32 KB を超える大型のルックアップ テーブルはサポートされません。
注記: 共有データは、ランタイム パラメーターとして明示的に管理するか、同じ AI エンジンにマップされるすべてのカーネルで共有されるファイル スコープで宣言する必要があります。