- CLHandleType
- CLGetInfoInteger
- CLGetInfoString
- CLContextCreate
- CLContextFree
- CLGetDeviceInfo
- CLProgramCreate
- CLProgramFree
- CLKernelCreate
- CLKernelFree
- CLSetKernelArg
- CLSetKernelArgMem
- CLSetKernelArgMemLocal
- CLBufferCreate
- CLBufferFree
- CLBufferWrite
- CLBufferRead
- CLExecute
- CLExecutionStatus
CLExecute
Ejecuta un programa OpenCL. Hay 3 variantes de esta función:
1. Inicio de la función kernel usando un solo núcleo
bool CLExecute(
|
2. Inicio de varias copias kernel (función OpenCL) con la descripción del espacio de tareas
bool CLExecute(
|
3. Inicio de varias copias kernel (función OpenCL) con la descripción del espacio de tareas y especificación del tamaño del subconjunto local de tareas en grupo
bool CLExecute(
|
Parámetros
kernel
[in] Manejador para el kernel OpenCL.
work_dim
[in] Dimensión del espacio de tareas.
global_work_offset[]
[in] Desplazamiento inicial en el espacio de tareas.
global_work_size[]
[in] Tamaño del subconjunto de tareas.
local_work_size[]
[in] Tamaño del subconjunto local de tareas en el grupo.
Valor devuelto
En caso del éxito la función devuelve true, de lo contrario devuelve false. Para obtener la información sobre el error, hay que llamar a la función GetLastError().
Nota
Vamos a ver el uso de los parámetros con la ayuda de los siguientes ejemplos:
- work_dim establece la dimensión del array work_items[] que describe las tareas. Si work_dim=3, se usa el array de tres dimensiones work_items[N1, N2, N3].
- global_work_size[] contiene los valores que establecen el tamaño del array work_items[]. Si tenemos work_dim=3, y en consecuencia, el array global_work_size[3] puede ser {40, 100, 320}. Entonces tenemos work_items[40, 100, 320]. Eso significa que el número total de tareas es igual a 40 x 100 x 320 = 1 280 000.
- local_work_size[] establece el conjunto de tareas que van a ejecutarse por el kernel especificado del programa OpenCL. Su dimensión es igual a la dimensión work_items[] y permite dividir el subconjunto general de las tareas en los subconjuntos más pequeños sin restas de la división. Prácticamente, los tamaños del array local_work_size[] tiene que ser seleccionado de tal manera que el conjunto global de tareas work_items[] se divida en los subconjuntos del menor tamaño. En este ejemplo queda bien local_work_size[3]={10, 10, 10}, ya que work_items[40, 100, 320] se puede reunir sin la resta desde el array local_items[10, 10, 10].