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

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

8.6. インテル® FPGA SDK for OpenCL™ Emulatorの制限

インテル® FPGA SDK for OpenCL™ Emulatorのフィーチャーには、いくつかの制限があります。
  • 実行モデル

    エミュレーターは、FPGAバリアントと同じコンパイルモードをサポートします。そのため、clCreateProgramBinary関数を呼び出し、エミュレーションのためのcl_programオブジェクトを作成する必要があります。

  • 並列実行

    並行するカーネルの実行のモデリングには制限があります。実行中にエミュレーターは、通信しているワークアイテムを実際には並行して実行しません。よって、異なるカーネルが同期化のためにバリアーなしでグローバルメモリーにアクセスしている場合など、並行して実行されている動作によっては、実行ごとに一貫性のないエミュレーション結果が生成される可能性があります。

  • エミュレーターは、ホストランタイムとカーネルを同じアドレス空間で実行します。ホスト・アプリケーションで特定のポインターや配列を使用することにより、カーネルプログラムが失敗する場合があります。またその逆も同じです。使用例としては、外部に割り当てられたメモリーのインデックス化や、ランダムなポインターへの書き込みなどがあります。Valgrindなどのメモリーリーク検出ツールを使用し、プログラムを分析することができます。ただし、カーネルでの範囲を超える書き込み動作によってホストに致命的なエラーが発生する可能性があります。また、その逆も同様です。

  • チャネル動作のエミュレーションには制限があります。特に、カーネルがループの反復ごとにチャネル動作を呼び出さない条件付きのチャネル動作の場合に当てはまります。このような場合、エミュレーターはハードウェアとは異なる順序でチャネル動作を実行することがあります。