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

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

2.8.1. Kernels

Intel® FPGA SDK for OpenCL™ Offline Compilerは、get_global_id()get_local_id()などのビルトインのワークアイテム関数を使用しないカーネルを単一のワークアイテムカーネルとしてコンパイルします。 それ以外の場合、オフライン・コンパイラーはカーネルをNDRangeカーネルとしてコンパイルします。

組み込みのWork-Item関数の詳細については、OpenCL Specification version 1.06.11.1: Work-Item Functionsのいセクションを参照してください。

単一のWork-Itemカーネルの場合、オフライン・コンパイラーはカーネル内のすべてのループをパイプライン化して、複数のループ反復を同時に実行できるようにします。コンパイラーがループの一部を効果的にパイプライン化できない場合、またはループをパイプライン化できない場合、カーネルのパフォーマンスが低下する可能性があります。

オフライン・コンパイラーは、NDRangeカーネルでループをパイプライン化できません。ただし、これらのループは複数のWork-Itemを同時に受け入れることができます。カーネルには複数のループがあり、それぞれにネストされたループがあります。外側のループごとにネストされたループの反復の総数を表にすると、カーネルのスループットは、通常、テーブル化した最大の反復の合計値だけ減少します。

効率的にNDRangeカーネルを実行するには、通常、多数のスレッドが必要です。