CLExecute

Exécute le programme OpenCL. Il y a 3 variantes de la fonction:

1. Le lancement de la fonction kernel sur un seul noyau

bool  CLExecute(
   int          kernel                   // le handle sur le kernel du programme OpenCL
   );

2. Le lancement de quelques copies kernel (la fonction OpenCL) avec une description de l'espace des tâches

bool  CLExecute(
   int          kernel,                   // le handle sur le kernel du programme OpenCL
   uint         work_dim,                 // la dimension de l'espace des tâches 
   const uint&  global_work_offset[],     // le décalage initial dans l'espace des tâches
   const uint&  global_work_size[]        // le nombre total de tâches
   );

3. Le lancement de quelques copies kernel (la fonction OpenCL) avec la description de l'espace des tâches et l'indication de la taille de la sous-multitude locale des tâches dans le groupe

bool  CLExecute(
   int          kernel,                   // le handle sur le kernel du programme OpenCL
   uint         work_dim,                 // la dimension de l'espace des tâches 
   const uint&  global_work_offset[],     // le décalage initial dans l'espace des tâches
   const uint&  global_work_size[],       // le nombre total de tâches
   const uint&  local_work_size[]         // le nombre de tâches dans le groupe local
   );

Paramètres

kernel

[in]  Le handle sur le kernel OpenCL.

work_dim

[in]   La dimension de l'espace des tâches.

global_work_offset[]

[in]  Le décalage initial dans l'espace des tâches.

global_work_size[]

[in] La taille d'un sous-ensemble de tâches.

local_work_size[]

[in]  La taille de la sous-multitude locale des tâches dans le groupe.

La valeur rendue

En cas de l'exécution successive rend true, autrement rend false. Pour recevoir l'information sur l'erreur, utilisez la fonction GetLastError().

Note

montrons le sens des paramètres à l'exemple:

  • work_dim spécifie la dimension du tableau work_items[], décrivant les tâches. Si work_dim=3, on utilise le tableau en 3 dimensions work_items[N1, N2, N3].
  • global_work_size[] contient des valeurs qui spécifient la taille du tableau work_items[]. Si work_dim=3, et en conséquence le tableauglobal_work_size[3] peut-être {40, 100, 320}. Alors nous avons work_items[40, 100, 320]. Ainsi, le nombre total de tâches est égal à 40 x 100 x 320 = 1 280 000.
  • local_work_size[] spécifie un sous-ensemble des tâches à exécuter par le noyau OpenCL spécifié du programme. Sa dimension est égale à la dimension work_items[] et permet de couper la sous-multitude totale des tâches sur les sous-multitudes plus petites sans restes de la division. En effet, les dimensions du tableau local_work_size[] doivent être choisis de sorte que la pluralité de tâches globales work_items[] soient coupées en petits sous-ensembles. Dans l'exemple donné convient local_work_size[3]={10, 10, 10}, car work_items[40, 100, 320]on peut ramasser du tableaulocal_items[10, 10, 10]sans reste.