インテルのみ表示可能 — GUID: idu1508525382099
Ixiasoft
4. ループのベスト・プラクティス
インテル®HLS (高位合成) コンパイラーでは、ループをパイプライン処理してスループットを向上させます。このループのベスト・プラクティスでは、ループを最適化してコンポーネントのパフォーマンスを向上させる手法を身に付けることができます。
インテル®HLSコンパイラー プロ・エディションでは、ループの最適化を妨げる依存関係があるかどうかを知らせます。コード内にそのような依存関係がある場合は、それを排除して、コンポーネントのパフォーマンスを最適化してください。さらに、追加のガイダンスをコンパイラーに対して提供することもできます。このためには、入手可能なループプラグマを使用します。
まず、次の手法を試してください。
- 隣接するループ本体の命令を並列実行できる場合は、そのループ本体を手動で融合します。この融合ループは、順次実行せずにパイプライン処理します。パイプライン処理によって、コンポーネントのレイテンシーが短縮され、コンポーネントで使用するFPGA領域の削減ができます。
- #pragma loop_coalesce ディレクティブを使用して、ネストされたループの折りたたみをコンパイラーに試行させます。ループを結合すると、コンポーネントのレイテンシーが短縮され、ネストされたループに必要なFPGA領域のオーバーヘッドを削減することができます。
- 2つのループの並列実行が可能な場合は、タスクのシステムの使用を検討してください。詳しくは、タスクのシステム を参照してください。
ループのベスト・プラクティスに関するチュートリアル
インテル®HLSコンパイラー プロ・エディションに付属している多数のチュートリアルでは、 インテル®HLSコンパイラーの重要な概念や優れたコーディング・プラクティスを示しています。
次のチュートリアルを確認して、デザインに適用できる可能性のあるループのベスト・プラクティスを身に付けます。
チュートリアル | 説明 |
---|---|
この表のチュートリアルは、 インテル® Quartus® Primeシステム内の次の場所にあります。<quartus_installdir>/hls/examples/tutorials |
|
best_practices/ loop_coalesce | ネストされたループで loop_coalesce プラグマを使用した場合のパフォーマンスとリソース使用率の向上について示します。 |
best_practices/ loop_memory_dependency | ループ伝送された依存関係の解除をivdepプラグマを使用して行う方法について示します。 |
best_practices/ resource_sharing_filter | 次のバージョンの32タップ有限インパルス応答 (FIR) フィルターデザインについて示します。
|
best_practices/ divergent_loops | 発散ループを備えたデザインのソースレベルを示します。 |
best_practices/ triangular_loop | 依存関係を持つ三角ループパターンの記述方法を示します。 |
loop_controls/ max_interleaving |
次の条件を満たすループの領域使用率の削減方法を示します。
|
best_practices/ relax_reduction_dependency | 浮動小数点アキュムレーターを含むループのIIの削減方法、またはその他の単一クロックサイクルでは高速計算ができない削減動作について示します。 |