クラス テンプレートを含むカーネル - 2021.2 日本語

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

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

すべてのクラスで同じでデータ型が異なるクラス インプリメンテーションが必要な場合があります。Model Composer では、AIE Class Kernel ブロックを使用して、クラス テンプレートを含むカーネルをインポートできます。kernel.h でクラス テンプレートを宣言する次の例を考えてみます。

kernel.h:

#ifndef _AIE_CLASS_KERNELS_H_
#define _AIE_CLASS_KERNELS_H_
#include <adf.h>
 
template<typename T, int N>
class MyKernel {
   int m_count;
public:
   MyKernel();
   void myFunc(input_stream<T>  *i1,
               output_stream<T> *o1,
               output_stream<int> *o2);
 
    static void registerKernelClass()
    {
        REGISTER_FUNCTION(MyKernel::myFunc);
    }
    
};
#endif

この場合、デフォルトのコンストラクター初期化子 m_count(N) は、次の kernel.cpp コードに示すように、m_count をテンプレート パラメーター N で初期化します。

kernel.cpp:

#include "kernel.h"
 
template<typename T, int N>
MyKernel<T,N>::MyKernel()
   : m_count(N)
{
}
 
template<typename T, int N>
void
MyKernel<T,N>::myFunc(input_stream<T>  *i1,
                      output_stream<T> *o1,
                      output_stream<int> *o2)
{
   put_ms(0, get_ss(0) * N);
   ++m_count;
   writeincr(o2, m_count);
}

AIE Class Kernel を使用してクラス テンプレートを含むカーネルをインポートしたら、Function タブが表示されます。ここで、ユーザーが編集可能なパラメーターに適切な値を入力できます。Apply をクリックすると、AI エンジン クラス ブロックのインターフェイスがアップデートされます。

[Block Parameters] ダイアログ ボックスの Kernel Class タブで、カーネル クラス バリアントのテンプレート クラス宣言を確認します。Kernel Class タブでは、次の図に示すように、テンプレート タイプ パラメーター T の値と整数型のテンプレート非タイプ パラメーターを入力できます。

図 1. カーネル クラス テンプレート
重要:
  1. テンプレート タイプ パラメーターには、有効なウィンドウ、ストリーム、または RTP データ型を指定できます。
  2. テンプレート非タイプ パラメーターには、整数型の値のみがサポートされます。
  3. 非タイプ テンプレート パラメーターの指定には、MATLAB 変数を使用できます。