デフォルト コンストラクターを含むカーネル クラス - 2021.2 日本語

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

Document ID
UG1483
Release Date
2021-10-22
Version
2021.2 日本語

デフォルト コンストラクターを含む C++ クラス カーネルをインポートする例として、デフォルト コンストラクターを含むカーネル クラス simple_class を定義する次の simple.h ヘッダー ファイルがあるとします。

simple.h:


#include "adf.h"
  
class simple_class
{
private:
    int16 val;
    int16 numSamples;
  
public:
    simple_class();
 
    void mulBytwo(input_window_int16* in, output_window_int16* out);
      
    static void registerKernelClass()
    {      
        REGISTER_FUNCTION(simple_class::mulBytwo);
    }
};

registerKernelClass() メソッドを使用して、カーネル関数を登録する必要があります。ヘッダー ファイルでは複数のクラス カーネルを宣言でき、各クラスには個別に registerKernelClass() メソッドを含める必要があります。クラスごとに登録できる関数は 1 つのみです。Model Composer では、REGISTER_FUNCTION() を使用して登録した関数のみをインポートできます。

カーネル関数は、simple.cpp で次のように定義されます。

simple.cpp:

#include "simple.h"
  
simple_class::Simple_class()
{
    val = 24;
    numSamples = 8;
}
  
void simple_class::mulBytwo(input_window_int16* in, output_window_int16* out)
{
    for (int i=0; i<numSamples; i++)
    {
        int16 value = window_readincr(in);
        window_writeincr(out, (in*2)+val);
    }
}

Model Composer デザインに mulBytwo 関数をブロックとしてインポートするには、AIE class kernel ブロックをダブルクリックし、パラメーターを次のようにアップデートします。

[Kernel header file]
kernels/include/simple.h
[Kernel class]
simple_class
[Kernel function]
mulBytwo
[Kernel init function]
空のまま
[Kernel source file]
kernels/source/simple_kernel.cpp
[Kernel search path]
空のまま
[Preprocessor options]
空のまま

[Block Parameters] ダイアログ ボックスで Import ボタンをクリックします。インポートが完了すると、[Function] タブ表示されます。次の図に示すように、ユーザーが編集可能な設定パラメーターが表示されます。

図 1. AIE Class Kernel ブロックの [Block Parameters] ダイアログ ボックス

Function タブに適切な値を入力したら、Apply をクリックします。AI エンジン クラス カーネル ブロックが次の図に示すようにアップデートされます。

図 2. アップデート後の AIE Class Kernel ブロック

Function タブで、インポートされたカーネル関数の関数宣言と、ポート名および方向をすばやく確認できます。

Kernel Class タブをクリックして、クラス宣言を確認します。

図 3. [Kernel Class] タブのクラス宣言