global_size local_size clEnqueueNDRangeKernel OpenCL

发布时间 2023-05-09 18:15:08作者: 园友1683564

clEnqueueNDRangeKernel

填入的形参:global_size local_size

 

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

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

                 device端会有循环,控制单个core循环执行几次kernel,执行一次,消耗一个workitem。

                       cl还会优化,指令存在流水线时,根据local_size 提高 simd指令密度:switch(local_size)

 

                 比如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维度