インテル® HLS コンパイラー: リファレンス・マニュアル

ID 683349
日付 6/23/2017
Public
ドキュメント目次

1.7.5. ループ並行処理の制御

max_concurrencyプラグマを使用して、コンポーネントでループの並行処理の増減を制限することができます。ループの並行処理とは、一度にそのループでどの位の反復処理が実行されるかです。デフォルトでは、 インテル® HLS コンパイラーはコンポーネントがピーク・スループットで動作するため、並行処理を最大化しようと試みます。

ループで最大の並行処理を達成するには、ループが完全にパイプラインされないようにする基となるハードウェアの依存関係を解除するために、ローカルメモリーを複写する必要があります。これは、コンポーネント HLD レポート (report.html)の Details ペインのループ分析レポートで同時実行の最大数が N に制限されていることを示すメッセージとして、確認できます。この場合のローカルメモリーの重複は、ポート数の増加のために複製するメモリーと同一ではありません。

ローカルメモリーの節約のためにいくつかの性能を交換する場合は、ループに#pragma max_concurrency <N> を適用します。このプラグマを適用すると、重複ファクターは次の例のようにループに入るスレッド数を変更し、制御します。
#pragma max_concurrency 1
​for (int i = 0; i < N; i++) {
  int arr[M];
  // Doing work on arr
}

また、hls_max_concurrency(N)コンポーネント属性を使用して、コンポーネントの並行処理を制御することも可能です。hls_max_concurrency(N)コンポーネント属性について詳しくは、hls_max_concurrencyを使用した並行処理の制御を参照してください。