AI エンジン グラフのインポート - 2023.2 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2023-11-15
Version
2023.2 日本語

AI エンジン グラフ で説明したように、グラフは異なる計算カーネル関数の接続です。カーネル関数がブロックとして Vitis Model Composer にインポートされるカーネルのインポートとは異なり、この場合はグラフ コードがブロックとしてインポートされます。グラフをブロックとして Vitis Model Composer にインポートするには、AI Engine ライブラリから AIE Graph ブロックを選択する必要があります。

図 1. AIE Graph

Vitis Model Composer では、AIE Graph ブロックと AIE Kernel ブロックを接続して、デザイン全体を Simulink 環境でシミュレーションできます。

重要: このプロセスでは、カーネル コードが開発済みで、関連付けられているカーネルが適切に構成されていると想定されます。

AIE Graph ブロックでは、ヘッダー ファイル (*.h) を使用して AI エンジン グラフを Vitis Model Composer にインポートする方法がサポートされます。

ヘッダー ファイルの使用

ヘッダー ファイル (.h) を使用してグラフをインポートするには、AIE Graph ブロックをダブルクリックします。次の図に示すように、ヘッダー ファイル、クラス、検索パス、およびプリプロセッサ オプションを指定します。

図 2. AIE Graph の Block Parameters ダイアログ ボックス

次の表に、各パラメーターの名前と説明を示します。

表 1. AIE Graph ブロックのパラメーター
パラメーター名 パラメーターのデータ型 必要性 説明
Graph application file (*.h) 文字列 必須 アプリケーション グラフ クラスが定義され、適応型データフロー (ADF) ヘッダー (adf.h)、カーネル関数のプロトタイプが含まれているファイル (.h) を指定します。
Graph class 文字列 必須 グラフ クラスの名前を指定します。
Graph Search paths 文字列のベクター 必須 シミュレーションに含めるヘッダー ファイル、カーネル、およびインクルード ファイルの検索パスを指定します。adf.h が定義されている検索パス $XILINX_VITIS/adf/include はデフォルトで含まれているので、指定する必要はありません。
Preprocessor options   オプション ダウンストリームのコンパイルを特定のプリプロセッサ オプションを使用して実行する場合にプリプロセッサ引数を指定します。使用可能な形式は -D<name> および -D<name>=<definition> で、複数指定できます。引数は -D で開始する必要があり、<definition> が指定されていない場合は 1 と想定されます。

graph.h

#ifndef __XMC_PROJ_H__
#define __XMC_PROJ_H__
 
#include <adf.h>
#include "simple.h"
 
class Proj_base : public adf::graph {
public:
   adf::kernel AIE_Kernel;
 
public:
   adf::input_port In1, In2;
   adf::output_port Out1, Out2;
 
   Proj_base() {
      // create kernel AIE_Kernel
      AIE_Kernel = adf::kernel::create(simple_comp_1);
      adf::source(AIE_Kernel) = "simple.cc";
 
      // create kernel constraints AIE_Kernel
      adf::runtime<ratio>( AIE_Kernel ) = 0.9;
 
      // create nets to specify connections
      adf::connect< adf::stream > net0 (In1, AIE_Kernel.in[0]);
      adf::connect< adf::stream > net1 (In2, AIE_Kernel.in[1]);
      adf::connect< adf::stream > net2 (AIE_Kernel.out[0], Out1);
      adf::connect< adf::stream > net3 (AIE_Kernel.out[1], Out2);
   }
};
 
class Proj : public adf::graph {
public:
   Proj_base mygraph;
 
public:
   adf::input_plio In1, In2;
   adf::output_plio Out1, Out2;
 
   Proj() {
      In1 = adf::input_plio::create("In1",
            adf::plio_32_bits,
            "./data/input/In1.txt");
 
      In2 = adf::input_plio::create("In2",
            adf::plio_32_bits,
            "./data/input/In2.txt");
 
      Out1 = adf::output_plio::create("Out1",
            adf::plio_32_bits,
            "Out1.txt");
 
      Out2 = adf::output_plio::create("Out2",
            adf::plio_32_bits,
            "Out2.txt");
 
      adf::connect< > (In1.out[0], mygraph.In1);
      adf::connect< > (In2.out[0], mygraph.In2);
      adf::connect< > (mygraph.Out1, Out1.in[0]);
      adf::connect< > (mygraph.Out2, Out2.in[0]);
   }
};
 
#endif // __XMC_PROJ_H__
注記: PLIO 属性が指定されたグラフ クラスをインポートすることはできません。インポートしようとすると、Model Composer からエラー メッセージが表示されます。この場合は、Proj_base クラスを使用してグラフをインポートします。

GUI パラメーターをアップデートしたら、Import をクリックします。

Block Parameters ダイアログ ボックスが次の図に示すようにアップデートされます。ポートの方向とデータ型が示されます。

図 3. Block Parameters ダイアログ ボックス

Graph Port NameData Type などのパラメーターは、グラフ コードから自動的にアップデートされます。

次の図に、入力および出力ポートを含む AIE Graph ブロックを示します。

図 4. AIE Graph ブロック

General タブの Import ボタンが Update に変わり、ブロック パラメーターをアップデートできるようになります。

図 5. Update ボタン