Intel® FPGA SDK for OpenCL™: ベスト・プラクティス・ガイド

ID 683521
日付 12/08/2017
Public
ドキュメント目次

7.1. メモリーアクセスの最適化に関する一般的なガイドライン

OpenCL™カーネルのメモリーアクセスを最適化すると、カーネル全体のパフォーマンスが向上します。

可能であれば、メモリーアクセスを最適化するための以下の手法を実装することを検討してください。

  • OpenCLプログラムに一対のカーネルがある場合、一方はデータを生成し、もう一方はそのデータを消費します。両方の機能を実行する単一のカーネルにそれらを変換します。また、元の2つのカーネルの関数を論理的に分離するヘルパー関数を実装します。
    FPGAの実装は、別々の小さなカーネルに比べて大きなカーネルを優先します。カーネル統一により、他のカーネルで同じデータをフェッチする前に、あるカーネルの結果をグローバルメモリーに一時的に書き込む必要がなくなります。

  • Intel® FPGA SDK for OpenCL™オフライン・コンパイラーは、FPGAのローカルメモリーをGPUとは非常に異なる方法で実装しています。 OpenCLカーネルにGPU固有のローカル・メモリー・バンクの競合を避けるコードが含まれている場合、オフライン・コンパイラーは可能な限り自動的にローカル・メモリー・バンクの競合を回避するハードウェアを生成するため、そのコードを削除します。