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

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

4.3.2. アクティビティー

Activityは、述語命令が有効になっている時間の割合、つまりLSUがそのデータを受け取る時間の割合を測定します。

Intel FPGA Dynamic Profiler for OpenCL GUIでのSource Codタブは、占有率(Occupancy%)カラムのツールチップがActivityの割合を指定する場合があります。Activityは、以下に説明するように、アクティビティーが述語に関連する点で占有とは異なります。

各LSUには、ivalid信号の他に述語信号があります。 ivalidシグナルは、上流のロジックが有効なデータをLSUに提供していることを示します。述語信号は、LSUが受信するデータに作用するべきであることを示します。Work-Itemまたはループ反復は、述語であってもメモリー命令を占有することができます。分岐ステートメントにループが含まれていない場合、オフライン・コンパイラーは分岐を変換して制御フローを最小限に抑え、より効率的なハードウェアを実現します。変換の一部として、メモリーおよびチャネル命令を述語化し、出力結果をマルチプレクサ論理によって選択する必要があります。

次の式を検討してみましょう。

int addr = compute_address(); int x = 0; if (some_rare_condition) x = src[addr];

オフライン・コンパイラーは、コードを次のように変更します。

int addr = compute_address(); int x = 0; x = src[addr] if some_rare_condition;

この場合、 src []はクロックサイクルごとに有効なアドレスを受け取ります。パイプラインにSRC []自体は生成されないストールを想定すると、[] SRCivalid信号は、ほとんどの時間を高くなります。実際には、 src []は述語信号some_rare_conditionが真の場合にのみロードを実行します。したがって、この負荷動作では、占有率は高くなりますが、活動は低くなります。

ツールヒントで使用可能なアクティビティーの割合は、述語アクセスを考慮しないため、低いアクティビティーの割合に基づいて述語命令を識別できます。活動率が低いにもかかわらず、これらの指示には高い占有率があるかもしれません。