- CLHandleType
- CLGetInfoInteger
- CLGetInfoString
- CLContextCreate
- CLContextFree
- CLGetDeviceInfo
- CLProgramCreate
- CLProgramFree
- CLKernelCreate
- CLKernelFree
- CLSetKernelArg
- CLSetKernelArgMem
- CLSetKernelArgMemLocal
- CLBufferCreate
- CLBufferFree
- CLBufferWrite
- CLBufferRead
- CLExecute
- CLExecutionStatus
CLExecute
Выполняет OpenCL программу. Существует 3 варианта функции:
1. Запуск функции kernel на одном ядре
bool CLExecute(
|
2. Запуск нескольких копий kernel (OpenCL функция) с описанием пространства задач
bool CLExecute(
|
3. Запуск нескольких копий kernel (OpenCL функция) с описанием пространства задач и указанием размера локального подмножества задач в группе
bool CLExecute(
|
Параметры
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, то используется 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]. Значит общее количество задач равно 40 х 100 х 320 = 1 280 000.
- local_work_size[] задает подмножество задач, которые будут выполняться указанным кернелом OpenCL программы. Его размерность равна размерности work_items[] и позволяет общее подмножество задач нарезать на более мелкие подмножества без остатков от деления. Фактически, размеры массива local_work_size[] должны быть подобраны таким образом, чтобы глобальное множество задач work_items[] нарезалось на более мелкие подмножества. В данном примере подойдет local_work_size[3]={10, 10, 10}, так как work_items[40, 100, 320] без остатка можно собрать из массива local_items[10, 10, 10].