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

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

5.4.5.5. I/Oチャネルのエミュレーション

io属性で宣言されたチャネルをともなうカーネルをエミュレーションすると、I/Oチャネル入力はファイルからの読み取りによってエミュレーションされ、チャネル出力はファイルへの書き込みによってエミュレーションされます。

エミュレーションを実行する際、読み取りまたは書き込みに使用されるファイル名はio属性名と一致します。例えば、次のようなチャネル宣言をする場合、エミュレーションはmyIOChannelというファイルに対し読み取りまたは書き込みを行います (どちらか一方のみ)。
channel uint chanA __attribute__((io("myIOChannel")));
I/Oチャネルの方向性は単方向です。チャネルへは、読み取りもしくは書き込みのどちらかが可能で、両方を行うことはできません。ただし、同じio属性値を持つ読み取りチャネルと書き込みチャネルをそれぞれ持つことは可能です。
channel uint readChannel __attribute__((io("myIOChannel")));
channel uint writeChannel __attribute__((io("myIOChannel")));

I/Oチャネル読み取りのエミュレーション

読み取りがio属性を持つmyfileというチャネルから発行される場合、ディスクのmyfileというファイルに読み取りの試みは行われます。myfileが存在しない場合や、ファイルから読み取るデータが不十分な場合、呼び出しタイプによって以下のように動作を行います。
Non-blocking read
ファイルが存在しない場合やデータが不十分な場合、読み取りの試みが失敗したことを示すメッセージを返します。
Blocking read
ファイルが存在しない場合やデータが不十分な場合、ディスクにファイルが作成されるか、ファイルに十分なデータが含まれるまでプログラムをブロックします。

I/Oチャネル書き込みのエミュレーション

書き込みがio属性を持つmyfileというチャネルへ発行される場合、ディスクのmyfileというファイルに書き込みの試みが行われます。myfileファイルが存在しない場合、通常ファイルが作成され、そのファイルに書き込みが行われます。myfileが存在する場合はそれに上書きします。書き込みが失敗した場合、呼び出しタイプによって以下のように動作を行います。
Non-blocking write
書き込みの試みが失敗した場合、エラーが返されます。
Blocking write
書き込みの試みが失敗した場合、書き込みの試みがさらに行われます。