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

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

1.3.2. hls_max_concurrencyを使用した並行処理の制御

hls_max_concurrencyコンポーネント属性を使用して、コンポーネントの最大並行処理を増減することができます。コンポーネントの並行処理は、一度に実行できるコンポーネント呼び出し数です。デフォルトでは、 インテル® HLS コンパイラーはコンポーネントがピーク・スループットで動作するため、並行処理を最大化しようと試みます。

コンポーネントを宣言する前に、次に示すようにhls_max_concurrency属性を追加することでコンポーネントの最大並行処理を制御できます。
#include "HLS/hls.h"

hls_max_concurrency(3)
component void foo ( /* arguments */ ){
  // Component code
}
次のような場合、 インテル® HLS コンパイラーはコンポーネント並行処理を最大化しようとしません。
  • インテル HLS コンパイラーは、コンポーネント・レベルでのスループットの増加のためにローカルメモリーを自動的に複製しません。コンポーネント呼び出しが、コンポーネント呼び出しによって使用される ( 静的でない ) ローカル・メモリー・システムを使用する場合、前の呼び出しがローカルメモリーへ、およびローカルメモリーからのすべてのアクセスを終了するまで、次の呼び出しを開始できません。この制限は、ループ分析レポートにアレイでのロードストアーの依存関係として表示されます。コンポーネントでhls_max_concurrency(N)属性を追加することで、ローカルメモリーを複製し、同時にコンポーネントの複数の呼び出しが可能です。
  • 場合によっては、コンパイラーは大量のエリアを節約するために並行処理を減らします。これらの場合は、hls_max_concurrency(N)属性は並行処理を 1 つから増やすことができます。

また、max_concurrency(N)プラグマを使用して、ループの並行処理を制御することも可能です。max_concurrency(N)プラグマについて詳しくは、ループ並行処理の制御を参照してください。