1:将内核执行命令入队(该命令可被多个工作项执行)
cl_int clEnqueueNDRangeKernel(
cl_command_queue command_queue,
cl_kernel kernel,
cl_uint work_dim, //数据的维度
const size_t * global_work_offset, //各维度上的全局ID偏移量
const size_t* globak_work_size, //各维度上工作项数目
const size_t* local_work_size, //各 维度上一个工作组中的工作项数目
cl_uint num_events_wait_in_list,
const cl_event* event_wait_list,
cl_event* event
)
2:将内核执行命令入队(该命令只在一个工作项中执行)
cl_int clEnqueueTask(
cl_command_queue command_queue,
cl_kernel kernel,
cl_uint num_events_waite_in_list,
const cl_event* event_in_list,
cl_event* event
)
clEnqueueTask 和 clEnqueueNDRangeKernel的功能都是将核执行命令加入命令队列。而clEnqueueNDRangeKernel可以更好的划分数据,充分利用设备的资源
工作组和工作项的特点:
1、工作组中的工作项可以访问局部内存的同一块地址
2、工作组中的工作项可以进行同步
3:工作项相关函数
4:工作组相关函数