Compute Unit Calls - Maximum - 2024.2 日本語 - UG1315

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

Document ID
UG1315
Release Date
2024-11-13
Version
2024.2 日本語

説明

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

説明

ワークグループは、複数の演算ユニット (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];
}