インテル® FPGA SDK for OpenCL™プロ・エディション: プログラミング・ガイド

ID 683846
日付 4/01/2019
Public
ドキュメント目次

5.2.5. ループの投機的実行 (speculated_iterations Pragma)

speculated_iterationsプラグマを使用し、 インテル® FPGA SDK for OpenCL™オフライン・コンパイラーに、パイプライン化されたループのパフォーマンス向上を指示します。

speculated_iterationsプラグマはループに適用されるため、(他のループプラグマの位置と同様に) ループの直前に配置する必要があります。以下に例を示します。

#pragma speculated_iterations k // where k >= 0

インテル® FPGA SDK for OpenCL™オフライン・コンパイラーは、他に影響を与えることなく、k回の反復を追加し実行するハードウェアを生成します。これにより、ループのIIの短縮、またはfmaxの増加どちらかが可能になります。決定を左右するのは、ループの終了条件を計算する速度です。計算に多くのサイクルを費やす場合は、speculated_iterationsを大きくすることを推奨します。

要確認: 反復を追加することで、ループの次の呼び出しが開始されるまでの時間が長くなります。ループの実際の反復回数が非常に少ない場合 (5から10以下、または同様の場合) は、これが要因の可能性があります。その場合、#pragma speculated_iterationsの値を0に指定すると、後続のループの反復がすぐ開始されるようになります。一方でこれは、IIを大きくし終了条件の算出に時間を与えることになります。HLDレポートのループ解析レポートを参照し、終了条件がIIのボトルネックであるかを確認してください。