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

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

6.2.3. ホスト・アプリケーションでのパイプ・オブジェクトの作成

カーネルにOpenCL™パイプを実装するには、 インテル® FPGA SDK for OpenCL™ 固有のパイプ・オブジェクトをホスト・アプリケーションに作成する必要があります。

SDK固有のパイプ・オブジェクトは、OpenCL Specification version 2.0で説明されているように、真のOpenCLパイプ・オブジェクトではありません。この実装は、準拠したソリューションによるインテルFPGA製品からの移行を可能にします。SDK固有のパイプ・オブジェクトはメモリー・オブジェクト (cl_mem) ですが、ホストはパイプ自体にメモリーを割り当てません。

次のclCreatePipeホストAPIは、パイプ・オブジェクトを作成します。

cl_mem clCreatePipe(cl_context context,
                    cl_mem_flags flags,
                    cl_uint pipe_packet_size,
                    cl_uint pipe_max_packets,
                    const cl_pipe_properties *properties,
                    cl_int *errcode_ret)

clCreatePipeホストAPI関数についての詳細は、OpenCL Specification version 2.0のSection 5.4.1を参照ください。

以下は、clCreatePipeホストAPI関数の構文例です。

cl_int status;
cl_mem c0_pipe = clCreatePipe(context,
                              0,
                              sizeof(int),
                              1,
                              NULL,
                              &status);
status = clSetKernelArg(kernel, 1, sizeof(cl_mem), &c0_pipe);
注意:
SDKはランタイムの動的なチャネル割り当てをサポートしません。 SDKは一致する名前に基づき、コンパイル中にパイプを静的にリンクします。