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维度
标签:core,workitem,OpenCL,get,global,clEnqueueNDRangeKernel,local,size From: https://www.cnblogs.com/qmjc/p/17385893.html