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

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

5.5.5.2. パイプハンドルの宣言

pipe変数を使用し、カーネル間またはカーネルとI/O間の静的なパイプ接続を定義します。

パイプの読み書きを行うにあたり、カーネルはパイプ変数を対応する各API呼び出しに渡す必要があります。

以下の規則に従い、パイプハンドルをファイルスコープ変数としてカーネルのソースコードに宣言します。 <access qualifier> pipe <type> <variable_name>

パイプの <type> は、スカラーサイズが1024ビット以下の任意のOpenCL™組み込みスカラーまたはベクトルデータ型にすることができます。また、スカラーサイズで1024ビット以下のスカラーまたはベクトルデータ型で構成される任意のユーザー定義の型にすることも可能です。

次のパイプハンドル宣言を参照ください。

__kernel void first (pipe int c)

__kernel void second (write_only pipe int c)

最初の例では、int型の読み出し専用パイプハンドルをカーネルfirstで宣言しています。2番目の例では、書き込み専用パイプをカーネルsecondで宣言しています。カーネルfirstはパイプcからの読み取りのみを行うことができ、カーネルsecondはパイプcへの書き込みのみを行うことができます。

重要: インテル® FPGA SDK for OpenCL™オフライン・コンパイラーでは、パイプ引数の名前を一致させることで、システム内のパイプの接続性を静的に推測します。上記例においてカーネルfirstは、カーネルsecondにパイプcで接続しています。

インテル® OpenCLシステムでは、1つのカーネルのみがパイプを読み取ることができます。同様に、1つのカーネルのみがパイプに書き込むことができます。I/O以外のパイプに、対応する読み取り動作と書き込み動作が少なくとも1つずつない場合、オフライン・コンパイラーはエラーを発行します。

インテル® FPGA SDK for OpenCL™ I/Oパイプの実装については、io属性を使用したI/Oパイプの実装を参照してください。