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

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

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パイプの実装のセクションを参照してください。