xcl_latency - 2021.1 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2022-03-29
Version
2021.1 Japanese

説明

XCL_LATENCY 属性は、関数、ループ、および領域の完了するまでの最小レイテンシまたは最大レイテンシ、あるいはその両方を指定します。レイテンシは、出力を生成するのに必要なクロック サイクル数として定義されます。関数または領域のレイテンシは、コードがすべての出力値を計算して戻るまでに必要なクロック サイクル数です。ループ レイテンシは、ループのすべての反復を実行するのにかかるサイクル数です。 『Vitis 高位合成ユーザー ガイド』 (UG1399)パフォーマンス メトリクスの例を参照してください。

Vitis HLS ツールでは常に、デザインのレイテンシを最短にするよう試みられます。XCL_LATENCY 属性を指定すると、ツールで次のように処理されます。

  • レイテンシが最小値より大きく最大値未満: 制約は満たされています。これ以上の最適化は実行されません。
  • レイテンシが最小値未満: HLS ツールで指定の最小レイテンシ未満を達成できる場合は、レイテンシが指定値まで拡張されます。リソース共有が増加する可能性があります。
  • レイテンシが最大値を超える: HLS ツールで最大値以下でスケジューリングできない場合は、指定された制約を満たすことができるようエフォート レベルが上げられます。それでも最大レイテンシを満たすことができない場合は、警告が表示され、達成可能な最短のレイテンシでデザインが作成されます。
ヒント: XCL_LATENCY 属性を使用すると、ツールで最良のソリューションを探すエフォートを制限することもできます。コード内のループ、関数、または領域にレイテンシ制約を指定すると、そのスコープ内で可能なソリューションが削減され、ツールの実行時間が短縮されます。詳細は 『Vitis 高位合成ユーザー ガイド』 (UG1399)合成ランタイムおよび容量の改善を参照してください。

構文

XCL_LATENCY 属性は、関数、ループ、または領域本体の前に指定します。
__attribute__((xcl_latency(min, max)))

説明:

  • <min>: 関数、ループ、またはコードの領域の最小レイテンシを指定します。
  • <max>: 関数、ループ、またはコードの領域の最大レイテンシを指定します。

次の例では、関数 testfor ループ最小レイテンシを 4、最大レイテンシを 8 に指定しています。

__kernel void test(__global float *A, __global float *B, __global float *C, int id) 
{
  for (unsigned int i = 0; i < id; i++)
__attribute__((xcl_latency(4, 12))) {
   C[id] = A[id] * B[id];
 }
}