Intel® FPGA SDK for OpenCL™: ベスト・プラクティス・ガイド

ID 683521
日付 12/08/2017
Public
ドキュメント目次

1.4. マルチ・スレッド・ホスト・アプリケーション

パラレルで独立したデータパスがあり、ホストがカーネル実行の間にデータを処理するときは、マルチ・スレッド・ホスト・アプリケーションの使用を検討してください。
図 12. パイプライン・ループでマルチスレッド実行の起動頻度の比較

パラレル・スレッドは、クロックサイクルごとに1つのスレッドでパイプライン方式で起動されます。この場合、ループ・パイプラインでパイプラインの並列処理とループ反復間の状態情報の通信が可能になります。ループの依存関係は、1クロックサイクルで解決されないことがあります。

以下の図は、シングル・スレッド・ホスト・アプリケーションが、カーネル実行間で並列の独立したデータパスをどのように処理するかを示しています。

図 13. シングル・スレッド・ホスト・アプリケーションによるカーネルの実行

シングル・スレッドのホスト・アプリケーションでは、 OpenCL™ホスト関数呼び出しの周りに外部同期機構を構築する必要があります。スレッドセーフな実行環境でマルチ・スレッド・ホスト・アプリケーションを使用すると、ホストコードを簡素化できます。さらに、ホスト内の複数のデータセットを同時に処理することで、カーネルの実行を高速化することができます。

次の図は、マルチ・スレッド・ホスト・アプリケーションがカーネル実行間で並列の独立したデータ・パスをどのように処理するかを示しています。

図 14. スレッドセーフなランタイム環境におけるマルチ・スレッド・ホスト・アプリケーションによるカーネルの実行