インテルのみ表示可能 — GUID: ewa1399040754211
Ixiasoft
3.1. データを経由して転送する インテル® FPGA SDK for OpenCL™ チャネルまたはOpenCLパイプ
カーネル間のデータ転送効率を高めるには、 インテル® FPGA SDK for OpenCL™ カーネルプログラムのチャンネル拡張を実装します。チャネルの機能を活用したいが、他のSDKを使用してカーネルプログラムを実行できるようにするには、OpenCLパイプを実装します。
時には、FPGAからグローバルメモリーへの帯域幅は、カーネル間のデータ転送効率を制限します。理論上の最大FPGA対グローバルメモリー帯域幅は、対象のカスタム・プラットフォームおよびボードで使用可能なグローバルメモリーバンクの数によって異なります。ボードの理論上の最大帯域幅を決定するには、ボードベンダのマニュアルを参照してください。
実際には、カーネルは使用可能な最大グローバルメモリー帯域幅の100%使用を達成していません。使用率は、アルゴリズムのアクセスパターンによって異なります。
グローバルメモリー帯域幅がOpenCLカーネルのパフォーマンス制約条件である場合、まずアルゴリズムを複数の小さなカーネルに分解してみてください。次に、下の図に示すように、SDKカーネル間のデータ転送用のチャネルまたはOpenCLパイプを実装してグローバル・メモリー・アクセスの一部を削除します。
図 59. チャネルまたはパイプの実装結果としてのグローバル・メモリー・アクセス・パターンの違い
チャネルの使用方法の詳細については インテル® FPGA SDK for OpenCL™ プログラミング・ガイドの インテル® FPGA SDK for OpenCL™ チャネル拡張の実装のセクションを参照してください。
パイプの使用方法の詳細については、 インテル® FPGA SDK for OpenCL™ プログラミング・ガイドのOpenCLパイプの実装のセクションを参照してください。