globalworksize和localworksize,其中gws是你一共运行多少线程,这个主要和输出的数据有关系,lws是一个运算单元组的尺寸,gws和lws在各自的维度上应该是gws可以被lws整除。CL_DEVICE_MAX_COMPUTE_UNITS在CPU上是指CPU核心,GPU指计算核心组。
localworksize只是一次运行的一组线程而已,每个线程会在一个物理核心上运行,多个线程组可以并行运行,线程共享local(shared) memory,物理核心数越少,同时运行的线程组就越少,一个时刻的并行度越低,运行的时间就越长。因为同样的线程组数(有gws得出),需要更多次在物理核心上处理。
一个work-group只在一个compute unit上执行。该参数最小为1。
CL_DEVICE_MAX_COMPUTE_UNITS不是多少个核心,而是多少个workgroup,就是多少个核心组,显卡的运行原理是一组计算单元一起运行,所以是多少个计算核心组
CL_DEVICE_MAX_WORK_ITEM_SIZES确实是获取每个维度的大小,而且固定,最小值(1,1,1)。
CL_DEVICE_MAX_WORK_GROUP_SIZE:在一个computeunit中执行一个kernel的work-group中work-item的最大数目。最小值为1。