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

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

5.5.6. ホストパイプを介したカーネルとの直接通信

cl_intel_fpga_host_pipe拡張機能は、カーネルとホストプログラムにおいてポイントとポイントのパイプ通信を可能にします。この拡張を行わない場合、OpenCL内のパイプは、カーネル間の通信にのみ使用することができ、ホストプログラムとの直接通信に使用することはできません。

この拡張機能は、clCreatePipeflags引数に2つの新しい値を認証し、パイプホストをアクセス可能にします。また、4つの新しいAPI関数を追加し (clReadPipeIntelFPGAclWritePipeIntelFPGAclMapHostPipeIntelFPGAclUnmapHostPipeIntelFPGA)、ホストのアクセスを有効にすることで作成したパイプをホストが読み書きできるようにします。新しいカーネル引数属性のオプションが追加され、カーネル言語においてパイプカーネル引数の反対側の端をホストプログラムに指定することで、パイプが別のカーネルに接続されなくなります。カーネルの定義においてパイプカーネル引数は、ホストパイプまたは他のカーネルのどちらかへの接続に限定されており、ランタイムにこの2つを動的に切り替えることはできません。

パイプカーネル引数にホストアクセス可能のマークが付けられている場合、カーネル言語のパイプアクセサーは、2.x関数のサブセットに制限され (予約はサポートされていません)、メモリーの一貫性または可視性の保証は、OpenCL同期ポイントを超えて行われます。

ホストがアクセス可能なパイプのサポートは、cl_intel_fpga_host_pipeと公示されているデバイス・プロパティーです。
重要:
  • このホストパイプの実装における制限は、プラットフォームが2つのホストパイプしかサポートしていないことです。1つは読み出し用、もう一つは書き出し用です。さらに、コパイラーは32ビット幅のパイプのみを許容します。よって、 cl_intel_fpga_host_pipe拡張機能の使用例の章で、ulong4が使用されています。
  • cl_intel_fpga_host_pipe拡張を使用しているホストプログラムは、OpenCL 2.0の機能のサポート状況 に記されているように、CL/cl_ext_intelfpga.hヘッダーファイルを含み、OpenCL 2.0のサポートを有効にする必要があります。