インテルのみ表示可能 — GUID: ewa1462821046783
Ixiasoft
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)プラグマについて詳しくは、ループ並行処理の制御を参照してください。