Compute Unit Calls - Maximum - 2023.1 日本語

Vitis ガイダンス メッセージ (UG1315)

Document ID
UG1315
Release Date
2023-04-12
Version
2023.1 日本語

詳細

このルールは、オーバーヘッドとなるような、あまりにも頻繁に呼び出される計算ユニットをチェックします。

説明

ワークグループは、複数の計算ユニット (CU) に処理を分割する強力なメカニズムを提供します。ただし、ワーク サイズが小さすぎるカーネルを作成すると、各 CU の呼び出しに起動時間がかかるため、オーバーヘッドが発生します。AMD では、グローバルとローカルのワーク サイズの適切なバランスを見つけて、全体的なパフォーマンスを最適化することをお勧めしています。

グローバル ワーク サイズを (1024, 1024, 1) を検討してみます (AMD では推奨しません)。
__kernel __attribute__ ((reqd_work_group_size(4, 4, 1)))
void madd(__global int* a, __global int* b, __global int* c) {
  int i = get_global_id(1)*get_global_size(0) + get_global_id(0);
  c[i] = a[i] + b[i];
}
これに対し、AMD では次を推奨しています。
__kernel __attribute__ ((reqd_work_group_size(<b>256</b>, <b>256</b>, 1)))
void madd(__global int* a, __global int* b, __global int* c) {
  int i = get_global_id(1)*get_global_size(0) + get_global_id(0);
  c[i] = a[i] + b[i];
}

推奨

ワークグループのサイズとその操作に関する詳細は、 『Vitis 統合ソフトウェア プラットフォームの資料』 (UG1416) の『Vitis エンベデッド ソフトウェア開発フローの資料』 パフォーマンスの最適化 の「インターフェイス属性」セクションを参照してください。