0

パラメータは 2 のべき乗である必要clEnqueueNDRangeKernelがありますか? global_work_sizeそうでなく、2 の累乗でない場合、どのエラーが返されますか?

UPD 回答に基づく : グローバルおよびローカルの作業サイズは 2 の累乗であってはなりません。ワークグループのサイズと波面のサイズの関係は?:

  • ウェーブフロント サイズが 64 で、local_work_size < 64 の場合 - 各ロック ステップで 64 個の作業項目が実行されますが、(64 - local_work_size) は「何もしない」work_items になります。
  • 128 > local_work_size > 64 の場合 - 実行はどうなりますか? ロックステップでもウェーブフロント全体が実行され (64 個のワークアイテム)、1 つの local_work_size % 64 で実行されます。
4

3 に答える 3

1

グローバル ワーク サイズが 2 の累乗である必要はありません。正の整数で、デバイスで許可されているワーク アイテムの最大数よりも小さい値にすることができます。

于 2013-04-05T13:24:01.660 に答える
0

すでに述べたように、必ずしも 2 のべき乗である必要はありません。ただし、パフォーマンスを向上させるには、32 の倍数であるローカル ワーク サイズを選択する必要があります (この関連する質問を参照してください:グローバルおよび現地作業サイズ

したがって、ローカル作業サイズはグローバル作業サイズの除算でなければならないため、おそらく 2 のべき乗になります (最適化の 1 つの方法は、必要以上に大きなグローバル作業サイズを選択することです; 適切なローカル作業サイズを選択するために) 、いくつか試してみる必要があります)

于 2013-04-07T19:40:32.953 に答える