MetaTrader 5 herunterladen

CLExecute

Führt OpenCL-Programm. Es gibt drei Varianten der Funktion:

1. Lauf der Funktion kernel auf einem einzigen Kern

bool  CLExecute(
   int          kernel                    // Handle auf den Kernel von OpenCL-Programm
   );

2. Lauf mehrerer Instanzen von kernel (OpenCL-Funktion) mit einer Beschreibung des Problemraums

bool  CLExecute(
   int          kernel,                   // Handle auf den Kernel von OpenCL-Programm
   uint         work_dim,                 // Dimension des Raumes von Aufgaben 
   const uint&  global_work_offset[],     // Anfangsoffset im Raum von Aufgaben
   const uint&  global_work_size[]        // Gesamtzahl der Aufgaben
   );

3. Lauf mehrerer Instanzen von kernel (OpenCL-Funktion) mit einer Beschreibung des Problemraums und der Angabe der Größe des lokalen Teilmenge der Aufgaben in der Gruppe

bool  CLExecute(
   int          kernel,                   // Handle auf den Kernel von OpenCL-Programm
   uint         work_dim,                 // Dimension des Raumes von Aufgaben 
   const uint&  global_work_offset[],     // Anfangsoffset im Raum von Aufgaben
   const uint&  global_work_size[],       // Gesamtzahl der Aufgaben
   const uint&  local_work_size[]         // Anzahl der Aufgaben in der lokalen Gruppe
   );

Parameter

kernel

[in]  Handle auf den OpenCL-Kernel.

work_dim

[in]  Dimension des Raumes von Aufgaben.

global_work_offset[]

[in]  Anfangsoffset im Raum von Aufgaben.

global_work_size[]

[in]  Die Größe einer Teilmenge von Aufgaben.

local_work_size[]

[in]  Die Größe des lokalen Teilmenge der Aufgaben in der Gruppe.

Rückgabewert

Gibt bei Erfolg true zurück, ansonsten false. Um Informationen über den Fehler zu erhalten, rufen Sie die Funktion GetLastError().

Hinweis

Betrachten wir das Beispiel der Bedeutung der Parameter:

  • work_dim setzt die Dimension des Arrays work_items[], das die Aufgaben beschreibt. Wenn work_dim=3, dann wird ein 3-dimensionales Array work_items[N1, N2, N3] verwendet.
  • global_work_size[] enthält Werte, die die Größe des Arrays work_items[] angeben. Wenn work_dim = 3, und dementsprechend kann das Array global_work_size[3] 40 {100, 320} sein. Dann haben wir work_items[40, 100, 320]. Damit die Gesamtanzahl von Aufgaben ist gleich 40 x 100 x 320 = 1 280 000.
  • local_work_size[] definiert eine Menge der Augaben, die der angegeben Kernel des OpenCL-Programms erfüllen wird. Seine Dimension ist der Dimension von work_items[] gleich und erlaubt eine gemeinsame Teilmenge von Aufgaben in kleinere Teilmengen ohne Reste aus der Teilung zu schneiden. In der Tat müssen die Dimensionen des Arrays local_work_size[] so gewählt werden, dass die globale Gruppe von Aufgaben work_items[] in kleinere Teilmengen geschnitten werden kann. In diesem Beispiel verwenden wir local_work_size[3]={10, 10, 10}, weil work_items[40, 100, 320] ohne Rest aus dem Array local_items[10, 10, 10] gesamt werden kann.