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(
   int          kernel                    // manejador para el kernel de un programa OpenCL
   );

2. Inicio de varias copias kernel (función OpenCL) con la descripción del espacio de tareas

bool  CLExecute(
   int          kernel,                   // manejador para el kernel del programa OpenCL
   uint         work_dim,                 // dimensión del espacio de tareas 
   const uint&  global_work_offset[],     // offset inicial en el espacio de tareas
   const uint&  global_work_size[]        // número total de tareas
   );

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(
   int          kernel,                   // manejador para el kernel del programa OpenCL
   uint         work_dim,                 // dimensión del espacio de tareas 
   const uint&  global_work_offset[],     // offset inicial en el espacio de tareas
   const uint&  global_work_size[],       // número total de tareas
   const uint&  local_work_size[]         // número de tareas en el grupo local
   );

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].