global_size local_size clEnqueueNDRangeKernel OpenCL

clEnqueueNDRangeKernel

填入的形参:global_size local_size

 

global_size 控制最终的workgroup数量,而且会平均分配到几个core上,比如global_size=8  然后有2个core,那么每个core分到4个workgroup

local_size 控制每个core分到几个workitem,每个.cl文件里,已经hard coding了一个workitem计算的数据量。

                 device端会有循环,控制单个core循环执行几次kernel,一般执行一次,消耗一个workitem。不过有些kernel内部优化指令密度,switch(local_size )一次做完多个workitem)。

 

                 比如global_size=8  然后有2个core,那么每个core分到4个wg,如果此时local_size=2,那么这个core只计算2次,还有2次没有做。local_size=4 才正确计算了所有workitem

 

这两个量与get_global_id() 无关,

get_global_id(0) = x维度

get_global_id(1) = y维度

get_global_id(2) = z维度

 

posted @ 2023-05-09 18:07  园友1683564  阅读(67)  评论(0编辑  收藏  举报