7

カーネルをキューに入れるときにワークグループのサイズを指定しない場合、OpenCL が 1 つを選択することを読みました。

例えば:

//don't know which workgroup size OpenCl will use!
clEnqueueNDRangeKernel(queue, kernel, 1, NULL, &global_size, NULL, 0, NULL, NULL);

ここで OpenCL が使用しているワークグループ サイズを取得する方法はありますか? ワークグループのサイズは、OpenCL が clGetKernelWorkGroupInfo によって返されたものを選択しますか?

前もって感謝します!

4

2 に答える 2

2

CL_KERNEL_GLOBAL_WORK_SIZE は取得できるワークグループの最大サイズであり、カーネルのメモリ要件によって異なります

カーネルの実行時にワークグループのサイズを指定しない場合、OpenCL は最適なものを選択しようとしますが、これが最大サイズである場合とそうでない場合があります。

実際、最大サイズの使用は、デバイスの計算ユニットの数と比較して多くの作業項目がある場合にのみ最適です。

于 2012-11-21T17:37:05.537 に答える
0

clEnqueueNDRangeKernel を呼び出すときにサイズを指定します。ドキュメントはこちらです。この場合に重要なパラメータは「local_work_size」です。

「ワークグループ内のワークアイテムの総数は、local_work_size[0] *... * local_work_size[work_dim - 1] として計算されます」

于 2012-11-21T17:15:49.230 に答える