説明
XCL_LOOP_TRIPCOUNT 属性をループに適用すると、ループで実行される反復回数の合計を手動で指定できます。
重要: XCL_LOOP_TRIPCOUNT 属性は解析専用で、合成結果には影響しません。
Vivado 高位合成 (HLS) により、各ループの合計レイテンシ、つまりループのすべての反復を実行するためのクロック サイクル数がレポートされます。ループ レイテンシは、ループ反復数 (トリップカウント) に依存します。
トリップカウントは、定数値であることもあり、ループ式 (x<y
など) で使用される変数の値やループ内の制御文によって異なる場合もあります。HLS ツールでトリップカウントを決定できないこともあり、その場合はレイテンシは不明になります。これは、トリップカウントの決定に使用される変数が次のいずれかの場合です。
- 入力引数。
- ダイナミック演算により算出される変数。
ループのレイテンシが不明または算出できない場合、XCL_LOOP_TRIPCOUNT 属性を使用してループの反復回数の最小値、最大値、および平均値を指定できます。これにより、ループのレイテンシがデザインの総レイテンシのどの程度を占めているのかがツールで解析されてレポートされるので、デザインに適切な最適化を判断するのに役立ちます。
構文
OpenCL ソースのループ宣言の前に配置します。
__attribute__((xcl_loop_tripcount(<min>, <max>, <average>)))
説明:
- <min>: ループの反復回数の最小値を指定します。
- <max>: ループの反復回数の最大値を指定します。
- <avg>: ループの反復回数の平均値を指定します。
例
次の例では、関数 f
の WHILE ループの最小トリップカウントを 2、最大トリップカウントを 44、平均トリップカウントを 33 に指定しています。
__kernel void f(__global int *a) {
unsigned i = 0;
__attribute__((xcl_loop_tripcount(2, 64, 33)))
while(i < 64) {
a[i] = i;
i++;
}
}