デザインの各カーネルは、v++ --config
コマンド ライン オプションで指定するコンフィギュレーション ファイルに connectivity.slr
オプションを使用すると、SLR 領域に割り当てることができます。詳細は、Alveo アクセラレータ カードでの演算ユニットの SLR への割り当て を参照してください。
AMDでは、カーネルを配置する場合、カーネル ポートのメモリへのマップ に示すように connectivity.sp
コンフィギュレーション オプションを使用して、カーネルが接続される特定の DDR メモリ バンクを割り当てることをお勧めしています。
次の図は 4 つの SLR を含む既存のターゲット プラットフォームと 3 つの SLR を含む新しいターゲット プラットフォームの例を示しています。スタティック領域の構造も 2 つのプラットフォーム間では異なっています。この移行の例の詳細は、次のとおりです。
- Kernel_A は SLR0 にマップされます。
- Kernel_B は SLR1 にはフィットしなくなったので、使用可能なリソースがある SLR0 にリマップされます。
- Kernel_C は SLR2 にマップされます。
- Kernel_D は使用可能なリソースがある SLR2 にリマップされます。
カーネル マップは、次の図に示すようになります。
カーネル配置の指定
たとえば、上記の例の場合、カーネルを割り当てるコンフィギュレーション ファイルは次のようになります。
[connectivity]
nk=kernel:4:kernel_A.lernel_B.kernel_C.kernel_D
slr=kernel_A:SLR0
slr=kernel_B:SLR0
slr=kernel_C:SLR2
slr=kernel_D:SLR2
上記の図の各カーネルを配置する v++
コマンド ラインは、次のようになります。
v++ -l --config config.cfg ...
カーネル DDR インターフェイスの指定
カーネル配置を指定する場合は、カーネル DDR メモリ インターフェイスも指定する必要があります。DDR インターフェイスを指定すると、別の SLR にある DDR インターフェイスへのカーネル接続が自動的にパイプライン処理されるようになります。これにより、タイミングが落ちることはないので、最大クロック周波数を削減される可能性があります。
この例では、上記の図のカーネル配置を使用して、次が実行されます。
- Kernel_A はメモリ バンク 0 に接続されます。
- Kernel_B はメモリ バンク 1 に接続されます。
- Kernel_C はメモリ バンク 2 に接続されます。
- Kernel_D はメモリ バンク 1 に接続されます。
これらの接続を実行するコンフィギュレーション ファイルは次のようになり、v++ --config
コマンドを使用して渡されます。
[connectivity]
nk=kernel:4:kernel_A.lernel_B.kernel_C.kernel_D
slr=kernel_A:SLR0
slr=kernel_B:SLR0
slr=kernel_C:SLR2
slr=kernel_D:SLR2
sp=kernel_A.arg1:DDR[0]
sp=kernel_B.arg1:DDR[1]
sp=kernel_C.arg1:DDR[2]
sp=kernel_D.arg1:DDR[1]
connectivity.sp
オプションを使用してカーネル ポートをメモリ バンクに割り当てる際は、カーネルのすべてのインターフェイス/ポートをマップする必要があります。詳細は、カーネル ポートのメモリへのマップ を参照してください。