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

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

5.2.7. 計算ユニット数の指定

OpenCL™カーネルのデータ処理効率を向上させるため、カーネルの計算ユニットを複数生成するよう、 インテル® FPGA SDK for OpenCL™オフライン・コンパイラーに指示することができます。各計算ユニットは、複数のワークグループを同時に実行することができます。
注意:
カーネルの計算ユニット数を増加すると、データのスループットが向上する一方で、FPGAリソースの消費率が増加し、グローバルメモリーの帯域幅の競合が計算ユニット間で起こります。
カーネルの計算ユニット数を指定するには、カーネル・ソースコードにnum_compute_units(N) 属性を挿入します。
以下にコードの一部を例として示します。このコードは、カーネルに2つの計算ユニットをインスタンス化するようオフライン・コンパイラーに指示しています。
__attribute__((num_compute_units(2)))
__kernel void test(__global const float * restrict a,
                   __global const float * restrict b,
                   __global float * restrict answer)
{
   size_t gid = get_global_id(0);
   answer[gid] = a[gid] + b[gid];
}
オフライン・コンパイラーは、指定された数の計算ユニットにワークグループを動的に分配します。
注: ワークアイテムが実行されている特定の計算ユニットを識別するには、組み込み関数のget_compute_id() を呼び出します。詳細は、get_compute_id() 関数を使用した複製カーネルのカスタマイズを参照ください。