カーネルの SLR への割り当て - 2020.1 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2020-08-20
Version
2020.1 Japanese

デザインの各カーネルは、v++ --config コマンド ライン オプションで指定するコンフィギュレーション ファイルに connectivity.slr オプションを使用すると、SLR 領域に割り当てることができます。詳細は、計算ユニットの SLR への割り当て を参照してください。

ザイリンクスでは、カーネルを配置する場合、カーネル ポートのグローバル メモリへのマップ に示すように connectivity.sp コンフィギュレーション オプションを使用して、カーネルが接続される特定の DDR メモリ バンクを割り当てることをお勧めしています。

次の図は 4 つの SLR を含む既存のターゲット プラットフォームと 3 つの SLR を含む新しいターゲット プラットフォームの例を示しています。スタティック領域の構造も 2 つのプラットフォーム間では異なっています。この移行の例の詳細は、次のとおりです。

  • Kernel_A は SLR0 にマップされます。
  • Kernel_B は SLR1 にはフィットしなくなったので、使用可能なリソースがある SLR0 にリマップされます。
  • Kernel_C は SLR2 にマップされます。
  • Kernel_D は使用可能なリソースがある SLR2 にリマップされます。

カーネル マップは、次の図に示すようになります。

図 1. カーネルの SLR へのマップ

カーネル配置の指定

たとえば、上記の例の場合、カーネルを割り当てるコンフィギュレーション ファイルは次のようになります。

[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.txt ...

カーネル 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 オプションを使用してカーネル ポートをメモリ バンクに割り当てる際は、カーネルのすべてのインターフェイス/ポートをマップする必要があります。詳細は、カーネル ポートのグローバル メモリへのマップ を参照してください。