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]
- s