データフロー最適化は、カーネル ハードウェア関数タスク レベルのパイプラインおよび並列処理をイネーブルにすることで、カーネルのパフォーマンスを改善する優れた手法で、スループットを高めてレイテンシを下げるために、v++
コンパイラで複数のカーネル関数が同時実行されるようスケジュールできるようになります。これは、タスク レベルの並列処理とも呼ばれます。
次の図に、データフロー パイプライン処理の概念を示します。デフォルトでは、func_A
、func_B
、func_C
の順に実行されて終了しますが、
HLS DATAFLOW
プラグマをイネーブルにすると、データが使用可能になった直後に各関数が実行されるようスケジュールできます。この例の場合、元の top
関数のレイテンシと間隔は 8 クロック サイクルです。データフロー最適化を使用すると、間隔は 3 クロック サイクルに削減されます。
図 1. データフロー最適化