インテルのみ表示可能 — GUID: ewa1396463252140
Ixiasoft
5.1. 最適化レポートのフィードバックに基づくてSingle Work-Itemカーネル依存関係のアドレッシング
多くの場合、 OpenCL™アプリケーションをSingle Work-Itemカーネルとしてデザインするだけで、追加の最適化手順を実行せずにパフォーマンスを最大化することができます。 Single Work-Itemカーネルのパフォーマンスをさらに向上させるために、最適化レポートが識別する依存関係に対処することによって最適化することができます。
次のフローチャートは、デザインを反復し、Single Work-Itemカーネルを最適化するために取ることができるアプローチの概要を示しています。使用方法については、 インテル® FPGA SDK for OpenCL™ EmulatorとProfilerについては、 インテル® FPGA SDK for OpenCL™ プログラミング・ガイドのOpenCLカーネルのエミュレートとデバッグとOpenCLカーネルの プロファイリングを参照してください。 Intel FPGA Dynamic Profiler for OpenCL GUIおよびプロファイリング情報について詳しくは、 パフォーマンス・ボトルネックを特定するためのカーネルのプロファイルを参照してください。
インテル® は除去、緩和、単純化、およびローカルメモリーへの転送の順に、単一のWork-Itemカーネルループ搬送依存関係に対処するための以下の最適化オプションを推奨しています。
図 73. Single Work-Itemカーネルの最適化ワークフロー
- ループ実行依存関係の削除
最適化レポートからのフィードバックに基づいて、より単純なメモリー・アクセス・パターンを実装することにより、ループで運ばれる依存関係を削除できます。 - Relaxing Loop Carriedの依存関係
最適化レポートからのフィードバックに基づいて、依存距離を増やすことでループに依存する依存関係を緩和することができます。 - Loop Carried依存関係の簡素化
カーネルでループに依存する依存関係を削除したり緩めることができない場合、依存関係を単純化して単一のwork-itemカーネルのパフォーマンスを向上させることができます。 - ループで運ばれた依存関係のローカルメモリーへの転送
削除できないループキャリー依存関係の場合は、グローバルメモリーからローカルメモリーへのループキャリー依存関係を持つ配列を移動してIIを改善します。 - シフトレジスターの推測によるループキャリー依存関係の削除
Intel® FPGA SDK for OpenCL™オフライン・コンパイラーで倍精度浮動小数点演算を効率的に実行する1つの作業項目カーネルを処理できるようにするには、シフトレジスターを推論してループ実行依存関係を削除します。