名前空間を含むカーネル - 2022.1 日本語

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

Document ID
UG1483
Release Date
2022-05-26
Version
2022.1 日本語

Vitis Model Composer では、名前空間で宣言されているカーネルのインポートがサポートされます。テンプレート化されたカーネルおよびテンプレート化されていないカーネルの両方で、カーネル関数を名前空間で修飾する必要があります。

テンプレート化されていないカーネル関数が名前空間 ns1で修飾され、テンプレート化されたカーネル関数が名前空間 ns2 で修飾されている次のような例があるとします。

Kernel.h

namespace ns1 {
void myFunc_1(input_stream<int32> * restrict i1,
            output_stream<int32> * restrict o1);
} // namespace ns1

templateKernel.h

namespace ns2 {
template<typename T,int size>
void myFunc_2(input_stream<int32> * restrict i1,
            output_stream<int32> * restrict o1);
} // namespace ns2

これらの関数を AIE Kernel および AIE Template Kernel ブロックを使用してインポートするには、ブロックの Block Parameters ダイアログ ボックスで Kernel function パラメーターを次のようにアップデートする必要があります。

Kernel function
ns1::myFunc_1 (テンプレート化されていない関数)
Kernel function
ns2::myFunc_2 (テンプレート化された関数)

クラス カーネルを名前空間で宣言している場合は、カーネル関数ではなく、カーネル クラス フィールドのみを修飾する必要があります。

たとえば、名前空間 ns3 で修飾されている次のカーネル クラスがあるとします。

class_kernel.h

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

カーネル関数 func_q をブロックとしてインポートするには、AIE Class Kernel ブロックの [Block Parameters] ダイアログ ボックスで Kernel class および Kernel function パラメーターを次のようにアップデートする必要があります。

Kernel class
ns3::simple_class
Kernel function
func_q