CLExecute
CLExecute
此函数运行一个 OpenCL程序。有三个版本的函数:
- 用一个内核启动内核函数
bool CLExecute(
int kernel // 处理一个OpenCL程序的内核
);- 启动几个内核副本 (OpenCL函数) 与任务空间描述
bool CLExecute(
int kernel, // 处理一个OpenCL程序的内核
uint work_dim, // 任务空间维度
const uint& global_work_offset[], // 在任务空间初始偏移
const uint& global_work_size[] // 任务总数
);- 启动几个内核副本 (OpenCL函数) 与任务空间描述以及集合本地任务子集大小规范
bool CLExecute(
int kernel, // 处理一个OpenCL程序的内核
uint work_dim, // 任务空间维度
const uint& global_work_offset[], // 在任务空间初始偏移
const uint& global_work_size[], // 任务总数
const uint& local_work_size[] // 在本地集合中的任务数
);参数
- kernel
[in] 处理OpenCL内核.
- work_dim
[in] 任务空间维度.
- global_work_offset[]
[in] 在任务空间初始偏移.
- global_work_size[]
[in] 任务子集大小.
- local_work_size[]
[in] 集合本地任务子集大小.
返回值
如果成功则返回true, 否则返回false. 有关错误信息, 使用 GetLastError() 函数.
注意
以下例子中要考虑参数的使用:
- work_dim 指定 work_items[] 描述任务的阵列维度. 如果work_dim=3,三维阵列work_items[N1, N2, N3] 将被使用.
- global_work_size[] 包含设定 work_items[]阵列大小的值. 如果 work_dim=3, global_work_size[3] 阵列将是 {40, 100, 320}. 然后我们将得到 work_items[40, 100, 320]. 所以,任务总数是 is 40 x 100 x 320 = 1 280 000.
- local_work_size[] 设定任务的子集将由OpenCL程序的指定内核来执行. 其维度等于 work_items[] 维度并允许共同任务子集精确分割成更小的子集. 事实上,应当选择 local_work_size[] 从而使全局任务设定分割成更小的子集. local_work_size[3]={10, 10, 10} 将适合当前的例子, 比如work_items[40, 100, 320] 能被 local_items[10, 10, 10] 阵列毫无剩余的收集起来.