- CLHandleType
- CLGetInfoInteger
- CLGetInfoString
- CLContextCreate
- CLContextFree
- CLGetDeviceInfo
- CLProgramCreate
- CLProgramFree
- CLKernelCreate
- CLKernelFree
- CLSetKernelArg
- CLSetKernelArgMem
- CLSetKernelArgMemLocal
- CLBufferCreate
- CLBufferFree
- CLBufferWrite
- CLBufferRead
- CLExecute
- CLExecutionStatus
Lavorare con OpenCL
I programmi in OpenCL sono utilizzati per l'esecuzione di calcoli sulle schede video che supportano OpenCL 1.1 o superiore. Schede video moderne contengono centinaia di piccoli processori specializzati che possono contemporaneamente eseguire semplici operazioni matematiche con i flussi di dati in entrata. Il linguaggio OpenCL organizza il calcolo parallelo ed offre una maggiore velocità per una certa classe di tasks.
In alcune schede grafiche il lavoro con i tipi di numeri double è disabilitato di default. Questo può portare ad un errore di compilazione 5105. Per abilitare il supporto per i numeri di tipo double, si prega di aggiungere la seguente direttiva al programma OpenCL: #pragma OPENCL EXTENSION cl_khr_fp64 : enable. Tuttavia, se una scheda grafica non supporta i double, l'abilitazione di questa direttiva non sarà di aiuto.
Si raccomanda di scrivere il codice sorgente per OpenCL in file separati CL, che possono essere successivamente inseriti nel programma MQL5 utilizzando le variabili di risorse.
Gestione degli errori nei programmi OpenCL
Per ottenere informazioni sull'ultimo errore in un programma OpenCL, utilizzare le funzioniCLGetInfoIntegereCLGetInfoStringche permettono di ottenere il codice dell'errore e la descrizione del testo.
OpenCL ultimo codice errore : Per ottenere l'ultimo errore OpenCL, chiamareCLGetInfoInteger, mentre il parametrohandleviene ignorato (può essere impostato a zero). Descrizione degli errori:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
Per un codice errore sconosciuto, viene restituita la stringa "errore OpenCL sconosciuto N" dove N è un codice di errore. Esempio:
//--- il primo parametro 'handle' viene ignorato quando si ottiene l'ultimo codice errore
|
Descrizione testuale dell'errore OpenCL: Per ottenere l'ultimo errore OpenCL, chiamareCLGetInfoString. Il codice di errore deve essere passato tramite il parametrohandle.
Descrizione degli errori:>https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Se viene passato CL_LAST_ERROR invece del codice di errore, la funzione restituisce la descrizione dell'ultimo errore. Per esempio:
//--- ottenere il codice dell'ultimo errore OpenCL
|
Finora, il nome dell'enumerazione interna è dato come descrizione di un errore. Potete trovare la sua codifica qui:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Per esempio, il valore CL_INVALID_KERNEL_ARGS significa "Restituito durante l'accodamento di un kernel quando alcuni argomenti del kernel non sono stati impostati o non sono validi."
Funzioni per l'esecuzione di programmi in OpenCL:
Funzione |
Azione |
---|---|
Restituisce il tipo di un handle OpenCL come valore dell'enumerazione ENUM_OPENCL_HANDLE_TYPE |
|
Restituisce il valore di una proprietà integer per un oggetto OpenCL o dispositivo |
|
Crea un contesto OpenCL |
|
Rimuove un contesto OpenCL |
|
Riceve la proprietà del dispositivo dal driver di OpenCL |
|
Crea un programma di OpenCL da un codice sorgente |
|
Rimuove un programma di OpenCL |
|
Crea una funzione di avvio OpenCL |
|
Rimuove una funzione di avvio OpenCL |
|
Imposta un parametro per la funzione OpenCL |
|
Imposta un buffer OpenCL come parametro della funzione OpenCL |
|
Imposta il buffer locale come argomento della funzione del kernel |
|
Crea un buffer di OpenCL |
|
Elimina un buffer OpenCL |
|
Scrive un array in un buffer OpenCL |
|
Legge un buffer OpenCL in un array |
|
Esegue un programma OpenCL |
|
Restituisce lo stato di esecuzione del programma OpenCL |
Vedi anche