配列分割 - 2019.2 Japanese

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

Document ID
UG1393
Release Date
2020-02-28
Version
2019.2 Japanese

ループを展開すると、I/O 要件および関数のデータ アクセス パターンが変わります。ほとんどのループは配列アクセスを作成しますが、その場合は結果のデータパスが必要なすべてのデータに並列にアクセスできるようにしてください。

ループを展開しても思ったようにパフォーマンスが改善しない場合、通常原因はメモリ アクセスのボトルネックにあります。

デフォルトでは、Vivado HLS コンパイラは大型配列を 1 つの配列要素のサイズと同じワード幅でメモリ リソースにマップします。このデフォルトのマップは、ループ展開を使用するほとんどの場合、変更する必要があります。

配列コンフィギュレーション で説明するように、HLS コンパイラでは配列を分割および再形成するためのさまざまなプラグマがサポートされています。必要なレベルの並列アクセスが可能なメモリ構造を作成するには、ループ展開の際にこれらのプラグマを使用することを考慮してみてください。

配列を展開および分割するだけで、ターゲット ループのレイテンシおよびスループット目標を達成できることがあります。その場合は、次のループに進みます。そうでない場合は、スループットを改善するその他の最適化を検証します。