CLExecute

A função executa um programa OpenCL. Existem três versões da função:

1. Lançamento das funções kernel usando um kernel

bool  CLExecute(
   int          kernel                    // Manipulador para o kernel de um programa OpenCL
   );

2. Lançamento de várias cópias do kernel (função OpenCL) com descrição do espaço de tarefas

bool  CLExecute(
   int          kernel,                   // Manipulador para o kernel de um programa OpenCL
   uint         work_dim,                 // Dimensão do espaço de tarefas
   const uint&  global_work_offset[],     // Compensação inicial no espaço de tarefas
   const uint&  global_work_size[]        // Número total de tarefas
   );

3. Lançamento de várias cópias do kernel (função OpenCL) com descrição do espaço de tarefa e especificação do tamanho de subconjunto de tarefa local do grupo

bool  CLExecute(
   int          kernel,                   // Manipulador para o kernel de um programa OpenCL
   uint         work_dim,                 // Dimensão do espaço de tarefas
   const uint&  global_work_offset[],     // Compensação inicial no espaço de tarefas
   const uint&  global_work_size[],       // Número total de tarefas
   const uint&  local_work_size[]         // Número de tarefas no grupo local
   );

Parâmetros

kernel

[in]  Manipulador para o kernel OpenCL.

work_dim

[in]  Dimensão do espaço tarefas.

global_work_offset[]

[in]  Compensação inicial no espaço de tarefas.

global_work_size[]

[in]  O tamanho de um subconjunto de tarefas.

local_work_size[]

[in]  O tamanho do subconjunto de tarefa local do grupo.

Valor do Retorno

Retorna true se for bem sucedido, caso contrário retorna false. Para obter informações sobre o erro, utilize a função GetLastError().

Observação

Considerar o uso dos parâmetros no exemplo a seguir:

  • work_dim especifica work_items[] da dimensão do array descrevendo as tarefas. Se work_dim=3, array tridimensional work_items[N1, N2, N3] é usado.
  • global_work_size[] contém os valores definindo o tamanho array do work_items[]. Se work_dim=3, array do global_work_size[3] pode ser {40, 100, 320}. Então nós temos work_items[40, 100, 320]. Assim, o número total de tarefas é 40 х 100 х 320 = 1 280 000.
  • local_work_size[] define o subconjunto das tarefas que serão executadas pelo kernel específico de programa OpenCL. A sua dimensão é igual a dimensãowork_items[] e permite a divisão exata da tarefa comum de subconjunto dentro de subconjuntos menores. Na verdade, os tamanhos do array do local_work_size[] devem ser selecionados de modo a dividir a tarefa global work_items[] definindo dentro de subconjuntos menores. local_work_size[3]={10, 10, 10} vai se encaixar no exemplo corrente, como work_items[40, 100, 320] podem ser obtidos a partir do array do local_items[10, 10, 10] sem excesso.